Что такое Nginx? Работал с ним?

👨‍💻 Frontend Developer 🟠 Может встретиться 🎚️ Средний
#Web #HTTP

Краткий ответ

  • Nginx — высокопроизводительный веб‑сервер и reverse‑proxy: раздача статики, проксирование к приложениям, балансировка нагрузки, терминация TLS/SSL, кеширование и сжатие.
  • Подходит для SPA и API: статика через root, backend через proxy_pass, HTTPS с Let’s Encrypt, HTTP/2, gzip/Brotli.
  • Опыт: настройка reverse‑proxy для Node.js, кеш статики, заголовки, rate‑limiting, перезапуски без простоя.

Полный ответ

Основные роли

  • Веб‑сервер: раздаёт статические файлы.
  • Reverse‑proxy: принимает запросы и переадресует на backend.
  • Балансировщик: распределяет нагрузку между несколькими приложениями.
  • Терминация TLS/SSL: шифрование трафика.
  • Кеш/сжатие: ускоряет ответы и уменьшает трафик.

Мини‑конфиг (статика + proxy)

server {
  listen 80;
  server_name example.com;
  root /var/www/html;
 
  location /api/ {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
  }
}

HTTPS и HTTP/2

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;
}

Кеш и сжатие

gzip on;
gzip_types text/css application/javascript application/json;
expires 1y;
add_header Cache-Control "public, immutable";

Частые ошибки

  • Забытые заголовки Host и X-Forwarded-For при proxy.
  • Неверные шаблоны location и пробелы/слэши в proxy_pass.
  • Включение HTTP/2 только на 443.
  • Отсутствие кеш‑политики и компрессии для статики.

Рекомендации

  • Проверяйте конфиг (nginx -t) и делайте атомарный reload.
  • Разделяйте файлы конфигурации и поддерживайте единые политики кеша/безопасности.
  • Используйте rate‑limiting для защиты от бурстов.