Что делает
Принимает HTTP/HTTPS-запросы, проксирует их к приложению (proxy_pass), балансирует между несколькими серверами, терминирует SSL и раздаёт статические файлы — быстрее приложения.
Nginx — высокопроизводительный веб-сервер, reverse proxy, балансировщик нагрузки и HTTP-кэш. Стандартный компонент DevOps-стека: в вакансиях почти всегда соседствует с Docker, Kubernetes и Linux.
Nginx (произносится «энджинкс») — многофункциональный сервер с архитектурой event-driven, позволяющей обрабатывать десятки тысяч одновременных соединений при минимальном потреблении памяти. В production nginx используется не как самостоятельный веб-сервер, а как прослойка перед приложением: принимает запросы извне, терминирует SSL, балансирует нагрузку между экземплярами приложения и защищает от флуда через rate limiting.
На рынке труда nginx — базовое требование инфраструктурных ролей: чаще всего его спрашивают с DevOps-инженеров и системных администраторов, в парах — Docker, Kubernetes и Ansible. Знание nginx обязательно для любого специалиста, работающего с серверной инфраструктурой.
Принимает HTTP/HTTPS-запросы, проксирует их к приложению (proxy_pass), балансирует между несколькими серверами, терминирует SSL и раздаёт статические файлы — быстрее приложения.
DevOps-инженеры, системные администраторы и SRE-инженеры: nginx применяется как входная точка любого production-сервиса, обрабатывающего HTTP-трафик.
Базовое требование инфраструктурных вакансий. Доминирующая роль — DevOps-инженер; в парах чаще всего Docker, Kubernetes и Linux.
Nginx — веб-сервер с открытым исходным кодом, созданный Игорем Сысоевым в 2004 году для решения проблемы C10K — одновременного обслуживания десяти тысяч соединений. В отличие от Apache с thread-per-connection моделью, nginx использует event-driven архитектуру: один worker-процесс обрабатывает тысячи соединений через неблокирующий I/O. Nginx обслуживает более 30% веб-сайтов мира и является стандартным reverse proxy в Kubernetes-кластерах через Ingress Controller.
Reverse proxy — промежуточный сервер между клиентом и приложением. Nginx принимает запрос, пересылает его к upstream-серверу (приложению), получает ответ и возвращает клиенту. Это позволяет: скрыть внутреннюю топологию, централизовать SSL, добавить кэширование и балансировку без изменения приложения. Директива proxy_pass указывает адрес upstream-сервера.
Upstream-блок описывает группу серверов-бэкендов. Nginx распределяет запросы между ними по выбранному алгоритму: round-robin (по умолчанию), least_conn (на сервер с минимумом активных соединений), ip_hash (привязка клиента к серверу по IP). Для каждого сервера можно указать weight (вес), max_fails и fail_timeout для автоматического выключения при сбоях.
От входящего TCP-соединения до ответа клиенту — nginx выполняет несколько шагов без блокировки потока.
Приём и TLS
Worker-процесс принимает соединение через epoll/kqueue и выполняет TLS-рукопожатие без блокировки других соединений.
Маршрутизация
Nginx находит server-блок по server_name и location-блок по URI — за несколько микросекунд без обращения к приложению.
Проксирование
Nginx передаёт запрос к upstream-серверу, буферизует ответ и отправляет клиенту — изолируя приложение от медленных клиентов.
Nginx переносится между ролями: DevOps-инженер, Системный администратор, Инженер поддержки. В одном треке этот навык может быть основным рабочим инструментом, а в другом - сильным прикладным усилителем основной специализации.
DevOps-инженер — самый заметный профиль в распределении ролей по навыку.
Ещё 7 ролей используют Nginx
Текущий срез показывает активные вакансии сейчас. Распределение по ролям рассчитано по расширенной исторической выборке, поэтому значения могут быть выше текущего количества активных вакансий.
Nginx ценен не абстрактным знанием инструмента, а повторяющимися рабочими задачами — ниже они разобраны так, как встречаются в реальной работе.
Статические файлы
Настроить nginx для раздачи HTML/JS/CSS-файлов с правильной обработкой маршрутов SPA.
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location ~* \.(js|css|png|jpg|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
} Reverse proxy к приложению
Проксировать запросы к Python/Node.js-приложению с передачей IP-адреса клиента.
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:8000;
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_read_timeout 60s;
proxy_buffering on;
}
} SSL через Let's Encrypt
Настроить HTTPS с редиректом с HTTP и заголовком HSTS для безопасного соединения.
server {
listen 443 ssl;
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;
ssl_ciphers HIGH:!aNULL:!MD5;
add_header Strict-Transport-Security "max-age=31536000" always;
}
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
} Балансировка нагрузки
Распределить трафик между несколькими экземплярами приложения с автоматическим выключением упавшего сервера.
upstream app_pool {
least_conn;
server 10.0.0.1:8000 weight=3 max_fails=3 fail_timeout=30s;
server 10.0.0.2:8000 weight=2 max_fails=3 fail_timeout=30s;
server 10.0.0.3:8000 backup;
}
server {
listen 80;
location / {
proxy_pass http://app_pool;
}
} Gzip-сжатие
Rate limiting
Ограничить количество запросов по IP для защиты API от брутфорса и флуда.
http {
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
}
server {
location /api/ {
limit_req zone=api burst=20 nodelay;
limit_conn addr 10;
proxy_pass http://127.0.0.1:8000;
}
} Забыть proxy_set_header X-Real-IP $remote_addr — приложение видит адрес nginx (127.0.0.1) вместо реального IP клиента. Это ломает логи, rate limiting на уровне приложения и геолокацию.
Оставить proxy_read_timeout 60s по умолчанию для медленных операций (экспорт, AI-обработка). Nginx разрывает соединение до того, как приложение завершило работу — клиент видит 502/504.
Проксировать все запросы, включая JS/CSS/изображения, к приложению вместо раздачи напрямую. Nginx отдаёт статику в 10–100 раз быстрее — использовать location ~* \.(js|css|...)$ { root /var/www; }.
Писать все server-блоки в один файл nginx.conf вместо include conf.d/*.conf. При разрастании становится неуправляемым — использовать отдельные файлы на каждый виртуальный хост.
Главная роль в вакансиях с nginx — DevOps-инженер; следом идут системные администраторы и инженеры поддержки. Nginx редко упоминается как самостоятельный навык — он всегда часть инфраструктурного стека рядом с Docker, Kubernetes, Ansible и Prometheus. Спрос на nginx движется вместе со спросом на DevOps и SRE в целом: без него сложно объяснить, как трафик попадает в production-сервис.
Nginx ценят не за знание термина, а за конкретную пользу в ежедневной работе команды.
Навык редко существует изолированно: он встроен в процессы, инструменты и смежные роли, поэтому спрос держится дольше.
Специалист с Nginx быстрее проверяет гипотезы, решает задачи и меньше зависит от ручной передачи работы между людьми.
Nginx формирует устойчивый спрос внутри своего рабочего сегмента.
Nginx сохраняет устойчивый прикладной спрос на рынке: 250 активных вакансий, #69 по рынку, 3.6% IT-вакансий. Ниже показано число открытых вакансий на конец каждого месяца: это исторический ряд по состоянию на конец месяца, а не текущий срез рынка на сегодня.
#69 по рынку • 3.6% IT-вакансий
-42 вакансий и -11% к предыдущему месяцу.
Nginx сам по себе не тарифицируется — зарплату определяет роль. Чаще всего его спрашивают с DevOps-инженеров, чья медиана — среди самых высоких в инфраструктурных специальностях. Доход растёт при знании Kubernetes, Ansible, Terraform и...
73 вакансий с зарплатой в расширенной зарплатной выборке
Основной зарплатный ориентир по Senior-вакансиям
Senior - основной уровень рынка (53%)
Nginx редко живёт изолированно: чаще всего рынок видит его рядом с Linux, Docker, PostgreSQL. Самая плотная связка сейчас - Linux: оба навыка встречаются вместе в 77% вакансий.
Главная связка: Linux • 77% вакансий. Показываем общерыночные связки Nginx: не junior-минимум из блока выше, а навыки, которые чаще всего встречаются рядом с ним в одной вакансии.
навыки, которые рынок чаще всего видит рядом в одной вакансии
не базовый минимум, а более сильные комбинации стека
Сейчас на рынке 19 активных junior-вакансий с Nginx. Это 9.8% всех вакансий по навыку, поэтому для старта важнее всего смотреть на реальный объём junior-окна и на стек, который рынок ждёт рядом.
9.8% всех вакансий по навыку • Senior / Junior 5.4x
Вход возможен, но рынок ждёт уже собранный стартовый стек.
Медианная вакансия с Nginx ожидает около 22 навыков в стеке. Это широкий стартовый набор: рынок обычно ищет не один изолированный инструмент, а рабочую комбинацию соседних навыков.
В резюме важно показать не просто «знание nginx», а конкретный уровень: умеете ли вы только раздавать статику или можете настроить балансировку и кэш под нагрузку.
Стандартные пары nginx в production-инфраструктуре.
Nginx работает контейнером перед контейнерами приложения
В любом контейнеризованном деплое с внешним HTTP-трафиком
Сетевые настройки Docker (bridge, DNS) добавляют свой слой отладки.
Маршрутизация HTTP-трафика внутрь кластера
Когда сервисы в k8s нужно открыть наружу по HTTP/HTTPS
Ingress-манифесты описывают правила, но тонкая настройка идёт через аннотации контроллера.
Бесплатные SSL-сертификаты с автопродлением
Для любого публичного домена
Wildcard-сертификаты требуют DNS-челленджа — сложнее обычного HTTP-варианта.
Мониторинг метрик nginx (RPS, коды ответов, латентность)
Когда нужно видеть деградацию до жалоб пользователей
Штатный stub_status беден — для детальных метрик нужен exporter или VTS-модуль.
Автоматическая установка и раскатка конфигов nginx
Когда серверов больше одного и конфиги должны быть воспроизводимы
Не проверяет семантику конфига — nginx -t в хендлере обязателен.
Nginx применяется как входная точка любого HTTP-сервиса: от небольшого VPS до кластера Kubernetes с тысячами экземпляров приложения.
Балансировка нагрузки: upstream-блок со списком экземпляров приложения + least_conn позволяет nginx распределять трафик без внешнего балансировщика, автоматически...
Kubernetes Ingress Controller: nginx-ingress-controller реализует правила маршрутизации Ingress-ресурсов k8s — это самый распространённый способ экспонировать...
Nginx заметен в 2 направлениях рынка с долей выше 5%.
Nginx выполняет несколько ролей одновременно — это делает его стандартным компонентом любого production-сервиса.
Принимает запросы, проксирует к приложению, передаёт заголовки клиента (IP, Host) и буферизует ответ — изолируя приложение от прямого доступа из интернета.
Nginx обрабатывает HTTPS-соединение и передаёт запрос к приложению по HTTP — приложение не знает о SSL, сертификаты управляются централизованно.
Upstream-блок с несколькими серверами, алгоритм least_conn и автоматическое выключение упавших серверов — готовая балансировка без отдельного инструмента.
Limit_req_zone ограничивает запросы по IP, токену или любому переменному — защита от брутфорса и флуда без изменения кода приложения.
Три популярных веб-сервера — у каждого своя ниша в современном DevOps-стеке.
Apache создаёт поток или процесс на каждое соединение — просто, но дорого под нагрузкой. Nginx держит тысячи соединений в одном событийном цикле и потому стал стандартом для высоконагруженных...
Traefik сам находит сервисы в Docker и Kubernetes через метки и аннотации — минимум конфигурации, встроенный Let's Encrypt. Nginx требует явных конфигов, но гибче, предсказуемее и лучше...
HAProxy — специализированный балансировщик уровня TCP/HTTP с более тонкой настройкой health-check и алгоритмов. Nginx — универсал: статика, прокси, SSL, кэш в одном инструменте. Для чистой...
Nginx часто запускается в Docker-окружении как reverse proxy для связки контейнеров.
Nginx, бэкенд (Python/Node/PHP), БД (Postgres/MySQL), кеш (Redis). Каждый сервис — отдельный контейнер.
Обычно создаётся одна внутренняя сеть (backend), где Nginx видит бэкенд по имени сервиса.
Монтируется папка со статикой (фронтенд) и конфиг Nginx (nginx.conf или conf.d).
Nginx зависит от бэкенда. Healthcheck для Nginx: проверка порта 80/443.
docker-compose.yml с сервисами nginx, flask-app, postgres. Nginx проксирует /api на flask-app:5000.
Использовать nginx:alpine, ограничить ресурсы, добавить healthcheck, включить логирование в JSON.
Кладите каждый домен в /etc/nginx/sites-available/ и делайте симлинк в sites-enabled/ — так проще управлять.
Директива server_tokens off; скрывает версию Nginx от злоумышленников.
Nginx сам подберёт число воркеров под количество ядер CPU.
location ~* \.(js|css|png|jpg)$ { expires 30d; } — уменьшает нагрузку на сервер.
gzip_min_length 1000; gzip_types text/plain application/json; — сжимает ответы.
Rate limiting на /api/login защищает от брутфорса.
Включите stub_status модуль для Prometheus или используйте nginx-prometheus-exporter.
Редирект с 80 на 443: return 301 https://$host$request_uri;
Используйте systemd-юнит с User=nginx и CapabilityBoundingSet, чтобы не запускать мастер-процесс от root.
Отключайте server_tokens (server_tokens off;), чтобы не раскрывать версию Nginx.
Не размещайте /etc/nginx в корне сайта — доступ к конфигурации даёт атакующему полный контроль.
Разрешайте proxy_protocol только с доверенных IP, иначе злоумышленник подменит source IP.
Отключайте SSLv3, TLSv1.0, TLSv1.1. Используйте ssl_ciphers HIGH:!aNULL:!MD5;.
Блокировка по User-Agent (if ($http_user_agent ~* bot)) легко обходится подменой заголовка.
Для базовой аутентификации используйте htpasswd -B -c — флаг -B задаёт bcrypt (без него по умолчанию используется более слабый MD5/apr1).
Не выключайте буферизацию без причины — это делает сервер уязвимым к slowloris.
Apache удобнее для shared-hosting с .htaccess и PHP через mod_php. Nginx выигрывает на высоконагруженных сервисах, reverse proxy и статике. В современных проектах nginx — стандарт.
Nginx умеет базовую маршрутизацию и rate limiting, но не имеет встроенной аутентификации, трансформации запросов, метрик API или портала разработчика. Для этого — Kong, AWS API Gateway, Traefik.
Traefik автоматически обнаруживает сервисы в k8s через аннотации. Nginx требует явных Ingress-манифестов, но более гибок в конфигурации и лучше задокументирован. Nginx Ingress Controller — самый распространённый выбор.
Nginx эффективен для I/O, но не для CPU-тяжёлых задач (шифрование, сжатие больших файлов). Для высоконагруженного SSL — аппаратное ускорение или выделенный TLS-терминатор.
Перспективы Nginx завязаны не только на текущем спросе, но и на том, как навык встраивается в новые платформы, инструменты и рабочие контуры.
Nginx Plus поддерживает HTTP/3 (QUIC). По мере распространения HTTP/3 nginx с поддержкой QUIC обеспечит более быстрое установление соединений и устойчивость к потерям пакетов.
OpenResty (nginx + LuaJIT) позволяет писать бизнес-логику прямо в конфиге nginx. Kong — популярный API Gateway — построен на OpenResty. Это направление развивает nginx в...
В облачно-нативных архитектурах nginx конкурирует с Envoy (используется в Istio и Cilium). eBPF-based решения могут обрабатывать трафик на уровне ядра, минуя nginx —...
Nginx как reverse proxy перед двумя экземплярами FastAPI: upstream с least_conn, SSL через Let's Encrypt, rate limiting, gzip, логи в JSON для Loki. Всё в Docker Compose.
Nginx отдаёт собранный React-SPA с хэшированными именами файлов: expires max для ассетов, index.html без кэша, security headers, HTTPS redirect.
Базовые навыки nginx — reverse proxy, SSL, gzip — осваиваются за 2–3 дня практики с реальным сервером. Продвинутые темы (upstream-балансировка, Lua, OpenResty, Kubernetes Ingress) требуют нескольких недель.
Установка и первый server-блок
Установить nginx через apt/yum, разобрать структуру nginx.conf: http, server, location. Настроить раздачу статических файлов через root и try_files.
Reverse proxy
Настроить proxy_pass к локальному приложению, добавить proxy_set_header для X-Real-IP и X-Forwarded-For, proxy_read_timeout для медленных ответов —...
SSL через Let's Encrypt
Балансировка и upstream
Описать upstream-блок с несколькими серверами, выбрать алгоритм балансировки, настроить health check через max_fails и fail_timeout.
Соответствие — доля тем навыка, которые охватывает программа курса
Трёхшаговый путь от нуля до production-конфига.
Установить nginx (apt install nginx), изучить nginx.conf: http, server, location. Настроить раздачу файла и убедиться, что curl возвращает 200.
Запустить простое приложение (uvicorn, node), настроить proxy_pass, получить сертификат через Certbot. Это покрывает 80% реальных задач.
Создать Docker Compose с nginx + двумя экземплярами приложения, описать upstream-блок, настроить health check. Это готовый production-паттерн.
Nginx обычно изучают по документации и коротким рабочим примерам. Ниже собраны ссылки, с которых удобно начать руками.
Официальный сайт nginx с документацией на русском.
Официальная документация: директивы, модули, примеры конфигураций.
Официальное руководство для первого запуска и базовой настройки.
Справочник по проксированию: proxy_pass, заголовки, таймауты.
Как получить бесплатный SSL-сертификат для nginx.
Apache создаёт отдельный поток или процесс на каждое соединение (thread-per-connection), nginx обрабатывает тысячи соединений в одном event loop. nginx быстрее на статике и reverse proxy; Apache удобнее для .htaccess и PHP.
Да — nginx-ingress-controller является стандартным Ingress Controller в k8s. Он управляет маршрутизацией HTTP-трафика в кластере, SSL-терминацией и rate limiting на уровне Kubernetes.
Nginx запускается как отдельный контейнер в Docker Compose, монтирует кастомный nginx.conf через volume и проксирует трафик к контейнерам приложения по имени сервиса в Docker-сети.
Использовать Certbot для получения Let's Encrypt-сертификата (certbot --nginx -d example.com), настроить redirect с HTTP на HTTPS, включить TLSv1.2/1.3, добавить HSTS-заголовок. Certbot сам обновляет сертификаты каждые 90 дней.
Upstream-блок описывает группу серверов-бэкендов, между которыми nginx распределяет запросы. Поддерживаются алгоритмы round-robin, least_conn и ip_hash, а также автоматическое выключение упавших серверов через max_fails.
Использовать limit_req_zone в http-блоке для создания зоны с rate (например, 10r/s по IP), затем limit_req zone=api burst=20 nodelay в нужном location. burst разрешает кратковременные всплески без ошибки 429.
Traefik автоматически обнаруживает сервисы Docker/k8s через метки и аннотации — удобен для небольших команд. Nginx требует явной конфигурации, но гибче, лучше задокументирован и имеет более широкую экосистему. nginx-ingress-controller — самый распространённый Ingress в production k8s.