mirror of
https://github.com/jhd3197/ServerKit.git
synced 2026-11-08 21:14:47 +09:00
Removed docker-compose.prod.yml and updated docker-compose.yml to only run the frontend in Docker, with the backend now running as a systemd service on the host. Updated nginx and frontend nginx.conf to proxy API requests to the backend on the host. Added serverkit-backend.service for systemd management of the backend. Refactored install.sh and serverkit CLI to support the new architecture, including improved installation, update, and management commands.
140 lines
4.6 KiB
Nginx Configuration File
140 lines
4.6 KiB
Nginx Configuration File
# ServerKit Frontend Nginx Configuration
|
|
server {
|
|
listen 80;
|
|
server_name localhost;
|
|
root /usr/share/nginx/html;
|
|
index index.html;
|
|
|
|
# Gzip compression
|
|
gzip on;
|
|
gzip_vary on;
|
|
gzip_min_length 1024;
|
|
gzip_proxied any;
|
|
gzip_types text/plain text/css text/xml text/javascript application/javascript application/json application/xml;
|
|
|
|
# Security headers
|
|
add_header X-Frame-Options "DENY" always;
|
|
add_header X-Content-Type-Options "nosniff" always;
|
|
add_header X-XSS-Protection "1; mode=block" always;
|
|
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
|
|
|
|
# SPA routing - serve index.html for all routes
|
|
location / {
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
|
|
# Proxy API requests to backend (running on host, not in Docker)
|
|
location /api {
|
|
proxy_pass http://host.docker.internal:5000;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
# Timeout settings
|
|
proxy_connect_timeout 60s;
|
|
proxy_send_timeout 60s;
|
|
proxy_read_timeout 60s;
|
|
}
|
|
|
|
# WebSocket support for socket.io (running on host, not in Docker)
|
|
location /socket.io {
|
|
proxy_pass http://host.docker.internal:5000;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
|
|
# WebSocket specific timeouts
|
|
proxy_connect_timeout 7d;
|
|
proxy_send_timeout 7d;
|
|
proxy_read_timeout 7d;
|
|
}
|
|
|
|
# Cache static assets
|
|
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
|
|
expires 1y;
|
|
add_header Cache-Control "public, immutable";
|
|
}
|
|
}
|
|
|
|
# HTTPS server - DISABLED for development (requires SSL certificates)
|
|
# To enable: mount SSL certs to /etc/nginx/ssl/ and uncomment this block
|
|
# server {
|
|
# listen 443 ssl http2;
|
|
# server_name localhost;
|
|
# root /usr/share/nginx/html;
|
|
# index index.html;
|
|
#
|
|
# # SSL Configuration
|
|
# ssl_certificate /etc/nginx/ssl/fullchain.pem;
|
|
# ssl_certificate_key /etc/nginx/ssl/privkey.pem;
|
|
# ssl_session_timeout 1d;
|
|
# ssl_session_cache shared:SSL:50m;
|
|
# ssl_session_tickets off;
|
|
#
|
|
# # Modern SSL configuration
|
|
# ssl_protocols TLSv1.2 TLSv1.3;
|
|
# ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
|
|
# ssl_prefer_server_ciphers off;
|
|
#
|
|
# # HSTS
|
|
# add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
|
|
#
|
|
# # Security headers
|
|
# add_header X-Frame-Options "DENY" always;
|
|
# add_header X-Content-Type-Options "nosniff" always;
|
|
# add_header X-XSS-Protection "1; mode=block" always;
|
|
# add_header Referrer-Policy "strict-origin-when-cross-origin" always;
|
|
#
|
|
# # Gzip compression
|
|
# gzip on;
|
|
# gzip_vary on;
|
|
# gzip_min_length 1024;
|
|
# gzip_proxied any;
|
|
# gzip_types text/plain text/css text/xml text/javascript application/javascript application/json application/xml;
|
|
#
|
|
# # SPA routing
|
|
# location / {
|
|
# try_files $uri $uri/ /index.html;
|
|
# }
|
|
#
|
|
# # API proxy
|
|
# location /api {
|
|
# proxy_pass http://backend:5000;
|
|
# proxy_http_version 1.1;
|
|
# proxy_set_header Host $host;
|
|
# proxy_set_header X-Real-IP $remote_addr;
|
|
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
# proxy_set_header X-Forwarded-Proto $scheme;
|
|
# proxy_connect_timeout 60s;
|
|
# proxy_send_timeout 60s;
|
|
# proxy_read_timeout 60s;
|
|
# }
|
|
#
|
|
# # WebSocket proxy
|
|
# location /socket.io {
|
|
# proxy_pass http://backend:5000;
|
|
# proxy_http_version 1.1;
|
|
# proxy_set_header Upgrade $http_upgrade;
|
|
# proxy_set_header Connection "upgrade";
|
|
# proxy_set_header Host $host;
|
|
# proxy_set_header X-Real-IP $remote_addr;
|
|
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
# proxy_set_header X-Forwarded-Proto $scheme;
|
|
# proxy_connect_timeout 7d;
|
|
# proxy_send_timeout 7d;
|
|
# proxy_read_timeout 7d;
|
|
# }
|
|
#
|
|
# # Cache static assets
|
|
# location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
|
|
# expires 1y;
|
|
# add_header Cache-Control "public, immutable";
|
|
# }
|
|
# }
|