Что такое Nginx?
Nginx — высокопроизводительный веб-сервер и обратный прокси с открытым исходным кодом. Он принимает HTTP/HTTPS-запросы от клиентов, раздаёт статику, балансирует нагрузку между бэкендами и терминирует TLS. В продакшене Nginx часто стоит перед приложением на Node.js, Python или Go как единая точка входа.
flowchart LR Client["Клиент"] --> Nginx["Nginx"] Nginx --> Static["Статика"] Nginx --> App1["API #1"] Nginx --> App2["API #2"]
Типичная схема: Nginx маршрутизирует трафик на статику и несколько инстансов приложения.
Чем Nginx отличается от Apache
Apache исторически использует поток или процесс на соединение; при десятках тысяч keep-alive соединений расход памяти растёт. Nginx построен на событийной модели (event loop): один worker обслуживает много соединений с малым overhead. Для статики и reverse proxy это даёт предсказуемую латентность под нагрузкой.
Reverse proxy и балансировка
В режиме proxy_pass Nginx принимает запрос, добавляет заголовки (X-Forwarded-For, X-Real-IP) и передаёт его upstream-серверу. Директива upstream задаёт пул бэкендов и алгоритм (round-robin, least_conn, ip_hash). Health checks и плавный деплой часто настраивают через Kubernetes Ingress или внешний оркестратор, но сам Nginx остаётся стандартом на VPS и bare metal.
upstream api {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
}
server {
listen 80;
location / {
proxy_pass http://api;
}
}
TLS, кэш и сжатие
Nginx терминирует HTTPS (сертификаты Let's Encrypt через certbot), включает gzip/brotli для текстовых ответов и может кэшировать ответы бэкенда в proxy_cache — полезно для тяжёлых, редко меняющихся страниц. Для API с персональными данными кэш на прокси обычно отключают.
Когда выбирать Nginx
- Нужен быстрый reverse proxy перед микросервисами или monolith.
- Раздача статики и CDN-origin с минимальной конфигурацией.
- Единый вход для TLS и rate limiting на границе.
Документация: nginx.org.
Частые вопросы
Nginx — это веб-сервер или прокси?
И то, и другое: раздаёт файлы напрямую и проксирует запросы к приложениям. В облачных стеках чаще используют как reverse proxy и Ingress-контроллер.
Зачем Nginx перед Node.js?
TLS, сжатие, лимиты соединений и балансировка нескольких процессов Node без изменения кода приложения.
Чем Nginx отличается от Kubernetes Ingress?
Ingress — абстракция в K8s; контроллер (часто на базе Nginx) реализует маршрутизацию. На одном сервере достаточно конфига Nginx без кластера.
Другие термины в теме «DevOps и облака»
Не хватает деталей?
Напишите, что уточнить по теме «Nginx» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).