Nginx
From Christoph's Personal Wiki
Nginx is a web server which can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache.
Example Nginx configuration files
- Basic
$ cat nginx.conf user www www; ## Default: nobody worker_processes 5; ## Default: 1 error_log logs/error.log; pid logs/nginx.pid; worker_rlimit_nofile 8192; events { worker_connections 4096; ## Default: 1024 } http { include conf/mime.types; include /etc/nginx/proxy.conf; include /etc/nginx/fastcgi.conf; index index.html index.htm index.php; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; sendfile on; tcp_nopush on; server_names_hash_bucket_size 128; # this seems to be required for some vhosts server { # php/fastcgi listen 80; server_name domain1.com www.domain1.com; access_log logs/domain1.access.log main; root html; location ~ \.php$ { fastcgi_pass 127.0.0.1:1025; } } server { # simple reverse-proxy listen 80; server_name domain2.com www.domain2.com; access_log logs/domain2.access.log main; # serve static files location ~ ^/(images|javascript|js|css|flash|media|static)/ { root /var/www/virtual/big.server.com/htdocs; expires 30d; } # pass requests for dynamic content to rails/turbogears/zope, et al location / { proxy_pass http://127.0.0.1:8080; } } upstream big_server_com { server 127.0.0.3:8000 weight=5; server 127.0.0.3:8001 weight=5; server 192.168.0.1:8000; server 192.168.0.1:8001; } server { # simple load balancing listen 80; server_name big.server.com; access_log logs/big.server.access.log main; location / { proxy_pass http://big_server_com; } } }
- Using SSL/TLS
server { listen 80; server_name www.example.com example.com; # Redirect all traffic to SSL rewrite ^ https://$server_name$request_uri? permanent; } server { listen 443 ssl default_server; # enables SSLv3/TLSv1, but not SSLv2 which is weak and should no longer be used. ssl_protocols SSLv3 TLSv1; # disables all weak ciphers ssl_ciphers ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM; server_name www.example.com example.com; ## Access and error logs. access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log info; ## Keep alive timeout set to a greater value for SSL/TLS. keepalive_timeout 75 75; ## See the keepalive_timeout directive in nginx.conf. ## Server certificate and key. ssl on; ssl_certificate /etc/ssl/certs/example.com-rapidssl.crt; ssl_certificate_key /etc/ssl/private/example.com-rapidssl.key; ssl_session_timeout 5m; ## Strict Transport Security header for enhanced security. See ## http://www.chromium.org/sts. Here it is set it to 2 hours; ## set it to whichever age you want. add_header Strict-Transport-Security "max-age=7200"; root /var/www/example.com/; index index.php; }