Nginx Cheatsheet

Common config snippets for reverse-proxy, static, HTTPS, and caching.

1 credit

Reverse proxy

nginx
server {
  listen 80;
  server_name example.com;

  location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

Static files + fallback

nginx
root /var/www/site;
location / {
  try_files $uri $uri/ /index.html;  # SPA fallback
}
location ~* \.(js|css|png|jpg|webp|svg)$ {
  expires 1y;
  add_header Cache-Control "public, immutable";
}

HTTPS / redirect

nginx
server {
  listen 443 ssl http2;
  server_name example.com;
  ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  ssl_protocols TLSv1.2 TLSv1.3;
}
server { listen 80; return 301 https://$host$request_uri; }

Ops

3 items
Test config
sudo nginx -t
Reload (no downtime)
sudo nginx -s reload
Main log
tail -f /var/log/nginx/access.log /var/log/nginx/error.log

Further reading