intermediate

Nginx reverse proxy и static serving

Маршрутизируйте requests к upstream services, отдавайте immutable static assets, сохраняйте trusted headers и отделяйте public file delivery от app logic.

Nginx эффективно отдаёт static files и проксирует динамику к Node upstream. Immutable hashed assets — длинный cache; HTML entry points — короткий или без кэша.

					server {
  listen 443 ssl;
  root /var/www/dist;

  location /assets/ {
    expires 1y;
    add_header Cache-Control "public, immutable";
    try_files $uri =404;
  }

  location /api/ {
    proxy_pass http://node_upstream;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}
				

Отделите public file delivery от app logic — Nginx дешевле Node для static bytes, gzip/Brotli и TLS.

На интервью: `try_files` для SPA; какие headers нужны Node для URL; как trailing slash в `proxy_pass` меняет path rewriting.

Типовые ошибки: агрессивный кэш `index.html`; без `X-Forwarded-Proto` ломаются HTTPS redirects; uploads в том же root, что build artifacts.

Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.

Чеклист:

  • Длинный cache только для fingerprinted static.
  • Proxy API с доверенными forwarding headers.
  • upstream blocks для нескольких Node instances.
  • Uploads вне дерева deploy artifacts.