| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- worker_processes auto;
- error_log /tmp/nginx_error.log warn;
- pid /tmp/nginx.pid;
- events {
- worker_connections 1024;
- use epoll;
- multi_accept on;
- }
- http {
- include /etc/nginx/mime.types;
- default_type application/octet-stream;
- # Temp directories for non-root
- client_body_temp_path /tmp/client_temp;
- proxy_temp_path /tmp/proxy_temp;
- fastcgi_temp_path /tmp/fastcgi_temp;
- uwsgi_temp_path /tmp/uwsgi_temp;
- scgi_temp_path /tmp/scgi_temp;
- log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for"';
- access_log /tmp/nginx_access.log main;
- # Performance
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
- keepalive_timeout 65;
- types_hash_max_size 2048;
- # Gzip compression
- gzip on;
- gzip_vary on;
- gzip_proxied any;
- gzip_comp_level 6;
- gzip_min_length 1024;
- gzip_types text/plain text/css text/xml text/javascript
- application/json application/javascript application/xml
- application/rss+xml application/atom+xml image/svg+xml;
- # Security
- server_tokens off;
- server {
- listen 8080;
- server_name _;
- root /usr/share/nginx/html;
- index index.html;
- # Security headers
- add_header X-Frame-Options "SAMEORIGIN" 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;
- # Health check endpoint
- location /health {
- access_log off;
- return 200 "healthy\n";
- add_header Content-Type text/plain;
- }
- # Static assets with aggressive caching
- location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
- expires 1y;
- add_header Cache-Control "public, immutable";
- access_log off;
- }
- # SPA fallback - serve index.html for all routes
- location / {
- try_files $uri $uri/ /index.html;
- }
- # No cache for index.html
- location = /index.html {
- expires -1;
- add_header Cache-Control "no-store, no-cache, must-revalidate";
- }
- # Deny access to hidden files
- location ~ /\. {
- deny all;
- access_log off;
- log_not_found off;
- }
- }
- }
|