Nginx Config Generator
Generate Nginx server configuration blocks for common use cases.
About Nginx Configuration
Nginx is a high-performance web server, reverse proxy, and load balancer used by millions of websites worldwide. Proper configuration is essential for security, performance, and reliability.
Configuration Types
A reverse proxy sits in front of your backend application servers and forwards client requests to them. Benefits include:
- Load balancing across multiple servers
- SSL termination (handle HTTPS at the proxy level)
- Caching to improve performance
- Security by hiding backend server details
Use case: Running a Node.js, Python, or Ruby application on localhost:3000 and exposing it on port 80.
Nginx excels at serving static files (HTML, CSS, JavaScript, images) directly from disk with minimal overhead.
- Extremely fast file serving
- Built-in caching headers
- Efficient gzip compression
- Support for HTTP/2 and HTTP/3
Use case: Hosting a static website, single-page application, or CDN origin.
SSL/TLS encryption is essential for secure communication. This configuration includes:
- TLSv1.2 and TLSv1.3 support (disabling older insecure protocols)
- Strong cipher suites
- HTTP to HTTPS redirect
- HTTP/2 support for improved performance
Use case: Securing your website with Let's Encrypt or commercial SSL certificates.
Gzip compression reduces file sizes by 60-80% for text-based assets, dramatically improving page load times.
- Compresses HTML, CSS, JavaScript, JSON, XML
- Configurable compression levels (1-9)
- Minimum file size threshold
- Automatic content-type detection
Performance tip: Level 6 provides the best balance between compression ratio and CPU usage.
Best Practices
- Always test configs before reloading:
sudo nginx -t - Keep config files organized: Use
/etc/nginx/sites-available/and symlink tosites-enabled/ - Enable logging: Monitor access.log and error.log for issues
- Set appropriate buffer sizes: Adjust based on your application needs
- Use HTTP/2: Add
http2to your SSL listen directive - Implement rate limiting: Protect against DoS attacks
Common Pitfalls
- Forgetting the semicolon at the end of directives
- Not reloading Nginx after config changes:
sudo systemctl reload nginx - Incorrect file permissions on SSL certificates
- Missing trailing slashes in proxy_pass URLs
- Not configuring client_max_body_size for file uploads
Quick Commands
Test configuration:
sudo nginx -t
Reload config:
sudo systemctl reload nginx
Restart Nginx:
sudo systemctl restart nginx
Check status:
sudo systemctl status nginx
View error log:
sudo tail -f /var/log/nginx/error.log