Nginx Config Generator
Generate production-ready nginx.conf files visually. Choose a use-case, configure options, and copy a ready-to-use config with SSL, gzip, CORS, and security headers.
Use Case
Static Site
Reverse Proxy
PHP-FPM
Node.js App
Load Balancer
Serve HTML/CSS/JS files from disk. Supports SPA fallback (try_files).
Server
Document Root
SPA / Single-Page App
Enable try_files for SPA routing
SSL / TLS
Enable SSL (Let's Encrypt style)
HTTP → HTTPS redirect
Gzip Compression
Enable gzip compression
Compresses text, CSS, JS, JSON, SVG and more. Uses compression level 6 — good balance of speed vs. ratio.
Security Headers
Add security headers
Adds: X-Frame-Options, X-Content-Type-Options, X-XSS-Protection, Referrer-Policy, Permissions-Policy, Content-Security-Policy.
CORS
Enable CORS headers
Logging
Miscellaneous
nginx.conf51 lines
server { listen 80; listen [::]:80; server_name example.com; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; client_max_body_size 10m; # Gzip compression gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; 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 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; add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always; add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self';" always; root /var/www/html; index index.html index.htm; location / { try_files $uri $uri/ =404; } # Static asset caching location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2?|ttf|svg)$ { expires 1y; add_header Cache-Control "public, immutable"; access_log off; } }
Quick Tips
Test config:
nginx -tReload:
systemctl reload nginxPlace at:
/etc/nginx/sites-available/example.comSymlink:
ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/