Spaces:
Running
Running
#------------------------------------------------------------------ | |
# Global Settings | |
#------------------------------------------------------------------ | |
worker_processes auto; | |
worker_rlimit_nofile 100000; | |
events { | |
worker_connections 4096; | |
multi_accept on; | |
} | |
http { | |
# Basic includes | |
include /opt/bitnami/nginx/conf/mime.types; | |
default_type application/octet-stream; | |
# I/O optimizations | |
sendfile on; | |
tcp_nopush on; | |
tcp_nodelay on; | |
keepalive_timeout 65; | |
# Caching open file descriptors | |
open_file_cache max=1000 inactive=20s; | |
open_file_cache_valid 30s; | |
open_file_cache_min_uses 2; | |
open_file_cache_errors off; | |
# Hide Nginx version | |
server_tokens off; | |
#------------------------------------------------------------------ | |
# Gzip Compression | |
#------------------------------------------------------------------ | |
gzip on; | |
gzip_disable "msie6"; | |
gzip_vary on; | |
gzip_proxied any; | |
gzip_comp_level 5; | |
gzip_buffers 16 8k; | |
gzip_http_version 1.1; | |
gzip_types | |
text/plain | |
text/css | |
application/json | |
application/javascript | |
text/xml | |
application/xml | |
application/xml+rss | |
text/javascript; | |
# (If your image supports Brotli, you could also enable it here) | |
#------------------------------------------------------------------ | |
# Server Block | |
#------------------------------------------------------------------ | |
server { | |
listen 7860; | |
listen [::]:7860; | |
server_name localhost; | |
root /usr/share/nginx/html; | |
index index.html; | |
# Security headers | |
add_header X-Frame-Options "SAMEORIGIN"; | |
add_header X-Content-Type-Options "nosniff"; | |
add_header X-XSS-Protection "1; mode=block"; | |
add_header Referrer-Policy "no-referrer-when-downgrade"; | |
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; | |
# SPA routing: try file, dir, then fallback to index.html | |
location / { | |
try_files $uri $uri/ /index.html; | |
} | |
# Static assets: long cache + no logs | |
location ~* \.(?:css|js|json|txt|xml|woff2?|ttf|eot)$ { | |
access_log off; | |
log_not_found off; | |
expires 30d; | |
add_header Cache-Control "public, no-transform"; | |
} | |
location ~* \.(?:png|jpe?g|gif|ico|svg)$ { | |
access_log off; | |
log_not_found off; | |
expires 30d; | |
add_header Cache-Control "public, no-transform"; | |
} | |
# Fallback 404s to index for client‑side routing | |
error_page 404 /index.html; | |
} | |
} | |