yandex
Калькулятор ценТарифыАкцииДокументацияО насКарьера в Cloud.ruНовостиЮридические документыКонтактыРешенияРеферальная программаКейсыПартнерство с Cloud.ruБезопасностьEvolutionAdvancedEvolution StackОблако VMwareML SpaceВ чем отличия платформ?БлогОбучение и сертификацияМероприятияИсследования Cloud.ruЛичный кабинетВойтиЗарегистрироватьсяEvolution ComputeEvolution Managed KubernetesEvolution Object StorageEvolution Managed PostgreSQL®Облако для мобильных и веб‑приложенийАналитика данных в облакеEvolution Bare MetalEvolution SSH KeysEvolution ImageСайт в облакеEvolution DNSEvolution VPCEvolution Load BalancerEvolution Magic RouterEvolution DiskХранение данных в облакеEvolution Container AppsEvolution Artifact RegistryEvolution Managed ArenadataDBEvolution Managed TrinoEvolution Managed SparkАналитика данных в облакеEvolution ML InferenceEvolution Distributed TrainEvolution ML FinetuningEvolution NotebooksCurator Anti-DDoSCurator Anti‑DDoS+WAFUserGate: виртуальный NGFWStormWall: Anti-DDoSEvolution TagsEvolution Task HistoryCloud MonitoringCloud LoggingАренда GPUAdvanced Object Storage ServiceAdvanced Elastic Cloud ServerAdvanced Relational Database Service for PostgreSQLРазработка и тестирование в облакеAdvanced Image Management ServiceAdvanced Auto ScalingDirect ConnectCDNCross-platform connectionAdvanced Enterprise RouterAdvanced Cloud Backup and RecoveryAdvanced Data Warehouse ServiceAdvanced Elastic Volume ServiceAdvanced Cloud Container EngineAdvanced FunctionGraphAdvanced Container Guard ServiceAdvanced Software Repository for ContainerAdvanced Document Database Service with MongoDBAdvanced Relational Database Service for MySQLAdvanced Relational Database Service for SQL ServerCloud AdvisorAdvanced Server Migration ServiceAdvanced Data Replication ServiceAdvanced API GatewayAdvanced CodeArtsAdvanced Distributed Message Service for KafkaAdvanced Distributed Message Service for RabbitMQAdvanced DataArts InsightAdvanced CloudTableAdvanced MapReduce ServiceAdvanced Cloud Trace ServiceAdvanced Application Performance ManagementAdvanced Identity and Access ManagementAdvanced Enterprise Project Management ServiceVMware: виртуальный ЦОД с GPUVMware: виртуальный ЦОДУдаленные рабочие столы (VDI)VMware: сервер Bare MetalИнфраструктура для 1С в облакеУдаленные рабочие столыМиграция IT‑инфраструктуры в облако3D-моделирование и рендерингVMware: резервное копирование виртуальных машинVMware: резервный ЦОДVMware: резервное копирование в облакоVMware: миграция виртуальных машин
Поиск
Связаться с нами

Nginx: как работает и для чего нужен этот веб-сервер

Nginx («Энджинкс», «Энджин-икс») — мультиплатформенный производительный веб-сервер на открытом коде. Он эффективен при работе с большим количеством одновременных соединений и статическим контентом, подходит для высоконагруженных приложений. Может использоваться как реверс-прокси и балансировщик нагрузки. Рассказываем, как с ним работать.

Сервисы
Иллюстрация для статьи на тему «Nginx: как работает и для чего нужен этот веб-сервер»
Продукты из этой статьи:
Иконка-Curator Anti-DDoS
Curator Anti-DDoS

Как работает Nginx

Nginx может одновременно обрабатывать множество пользовательских запросов. Сервер передает запрос в отдельный процесс, но не ждет, пока он завершится, а переходит к следующему запросу. Такой подход возможен благодаря событийной модели в основе работы сервера. Nginx не создает отдельный процесс или поток под каждый запрос; вместо этого несколько worker‑процессов обрабатывают множество соединений в рамках событийного цикла.

У Nginx асинхронная архитектура, выстроенная по модульному принципу. Сервер — словно конструктор, который легко адаптировать под свой проект. Он поддерживает модули для работы с разными функциями и протоколами, поэтому становится универсальным решением для разработчиков.

Поддержка конкретных протоколов зависит от версии и наличия соответствующих модулей (например, HTTP/2 — начиная с 1.9.5 при сборке с ngx_http_v2_module).

Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим
Как работает NginxСхема работы Nginx

Сценарии применения Nginx

Nginx может выступать классическим веб-сервером, реверс-прокси и балансировщиком нагрузки. Опишем каждый сценарий. 

Веб-сервер

В этом сценарии Nginx обрабатывает HTTP-запросы от клиента и в ответ отправляет запрашиваемые файлы. Отличие от других веб-серверов в том, что Nginx одновременно может обрабатывать большое количество запросов. Это позволяет быстрее давать ответ клиенту и оптимизировать использование ресурсов.

Реверс-прокси

В этом сценарии Nginx выступает посредником, который принимает клиентские запросы и перенаправляет на другие серверы. Такая схема используется для обеспечения безопасности и балансировки нагрузки. Реверс-прокси позволяет скрыть IP-адреса внутренних серверов, что затрудняет прямые атаки. Распределение трафика предотвращает перегрузку серверов. 

Балансировка нагрузки

В этом сценарии Nginx распределяет трафик между другими серверами, используя один из алгоритмов:

  • Round Robin — Nginx по очереди направляет запросы на каждый доступный сервер.

  • Least Connections — Nginx направляет трафик тому серверу, где меньше активных подключений.

  • IP Hash — Nginx закрепляет клиента за конкретным сервером. 

  • Нash (Generic Hash) — запрос распределяется на основе хеша от пользовательского ключа (например, IP-адреса, комбинации IP и порта, URI). Обеспечивает постоянную привязку одного и того же ключа к одному серверу.

Такой сценарий применения Nginx оптимален для сервисов с высокой посещаемостью, облачных платформ и систем, для которых критичны простои. 

Сравнение Nginx и Apache

Apache — веб-сервер на открытом коде, который был самым популярным в России до появления Nginx. Он хорошо себя показывает в обработке динамического контента. Главное отличие от Nginx в том, что этот веб-сервер создает отдельные процессы под каждый пользовательский запрос. Другие отличия — в таблице.  

Параметр
Nginx
Apache
Тип веб-сервера
Асинхронный событийно-ориентированный сервер
Процессно-ориентированный или многопоточный сервер
Архитектура
Событийная, асинхронная архитектура с моделью master–worker
Многопроцессная или многопоточная архитектура
Производительность
Высокая производительность для обработки большого количества одновременных соединений
Может уступать Nginx в производительности при большом количестве одновременных соединений
Обработка статического контента
Эффективен для обслуживания статического контента
Меньше оптимизирован для обслуживания статического контента, чем Nginx, обрабатывает его дольше
Обработка динамического контента
Использует внешние процессоры
Обрабатывает динамический контент напрямую через собственные модули
Поддержка многозадачности
Асинхронная модель с одним или несколькими процессами и потоками
Многопроцессная модель с отдельными процессами или потоками для каждого запроса
Память
Экономит память за счет асинхронной модели
Меньше экономит память из-за многопроцессной модели
Конфигурация
Конфигурационные файлы проще и более структурированы, используется один файл конфигурации
Конфигурация более сложная, требует множества файлов и директив
Модульность
Базово Nginx использовал статически собираемые модули, но в современных версиях также поддерживает динамические модули, подключаемые через load_module при запуске. Горячая загрузка/выгрузка без перезапуска по прежнему не поддерживается
Высокая степень модульности, модули можно добавлять/удалять без перезапуска сервера
Использование ресурсов
Оптимизация для многозадачности и одновременных соединений
Использует больше ресурсов на единицу обработки запросов
Поддержка прокси-сервера
Прекрасно подходит для работы в качестве обратного прокси-сервера и балансировщика нагрузки
Может работать в качестве прокси-сервера, но имеет меньшую производительность по сравнению с Nginx
SSL/TLS
Высокая производительность при обработке HTTPS
Производительность ниже при обработке HTTPS с множеством одновременных соединений
Поддержка виртуальных хостов
Поддерживает виртуальные хосты с использованием блоков серверов в конфигурации (в Nginx виртуальные хосты реализуются через server blocks, настраиваемые по сочетанию listen и server_name)
Поддерживает виртуальные хосты, но конфигурация может быть сложнее
Обработка ошибок
Лучше обрабатывает ошибки, избегая создания новых процессов для каждого запроса
Может создавать новые процессы или потоки для каждого запроса, что снижает эффективность при большом числе запросов
Поддержка HTTP/2
Поддерживает HTTP/2 (начиная с 1.9.5 при сборке с ngx_http_v2_module и при использовании TLS с ALPN, обычно listen 443 ssl http2;)
Поддерживает HTTP/2, но производительность может снижаться
Поддержка WebSocket
Nginx без дополнительных модулей умеет проксировать WebSocket соединения при правильной конфигурации proxy директив
Apache может работать с WebSocket, но часто требует дополнительной настройки и модулей
Скорость запуска
Быстрый запуск и перезапуск
Может требовать больше времени на запуск и перезапуск
Технологии кеширования
Nginx имеет развитые встроенные механизмы кеширования (особенно для проксируемых запросов)
Apache поддерживает кеширование через модули, но производительность и удобство конфигурирования часто хуже на больших нагрузках
Балансировка нагрузки
Поддержка балансировки нагрузки и работы с несколькими бэкендами
Поддерживает балансировку нагрузки через модули, но менее эффективен по сравнению с Nginx
Совместимость с операционными системами
Поддерживает операционные системы Linux, Windows, macOS
Поддерживает операционные системы Linux, Windows, macOS
Совместимость с PHP
Требует использования внешнего обработчика (например, PHP-FPM)
Может работать напрямую с PHP через модуль mod_php
Логирование
Логирование запросов и ошибок происходит по стандарту, с возможностью настройки
Гибкая настройка логирования с большим количеством параметров

Преимущества есть и у Nginx, и у Apache, поэтому можно не выбирать между решениями, а совместить их. В таком симбиозе Nginx используется для проксирования и работы со статическим контентом, Apache — для обработки динамического контента. 

Преимущества Nginx

Три сильные стороны продукта:

  • Эффективная работа с множеством одновременных подключений. Nginx стабильно обрабатывает запросы, не теряя производительности при высоких нагрузках. 

  • Возможность гибкой настройки под разные задачи. Nginx имеет инструменты для балансировки нагрузки, проксирования, кеширования. 

  • Обработка больших объемов статического контента. Nginx надежно и быстро доставляет такие файлы, как HTML, CSS, JS, изображения. 

При корректной конфигурации Nginx демонстрирует высокую стабильность и производительность на высоконагруженных проектах, особенно при обслуживании статического контента и большом числе одновременных соединений.

Установка и настройка Nginx

Nginx подойдет для основных дистрибутивов Linux, macOS. 

Nginx под macOS через Homebrew обычно применяют как локальный веб‑сервер для разработки, в production чаще используется Linux.

Для Windows версия Nginx считается beta: не поддерживает UDP/QUIC, использует ограниченные механизмы обработки соединений, фактически работает один worker‑процесс, поэтому для production‑нагрузок рекомендованы Linux‑платформы.

Подготовка и установка Nginx

Операционная система
Процесс
Linux (Ubuntu/Debian)
1. Обновите систему: sudo apt update 2. Установите Nginx: sudo apt install nginx 3. Запустите сервис: sudo systemctl start nginx 4. Добавьте в автозагрузку: sudo systemctl enable nginx 5. Откройте браузер и перейдите по адресу: http://localhost
Linux (CentOS/RHEL)
1. Обновите систему: sudo yum update 2. Установите репозиторий EPEL: sudo yum install epel-release 3. Установите Nginx: sudo yum install nginx 4. Запустите сервис: sudo systemctl start nginx 5. Добавьте в автозагрузку: sudo systemctl enable nginx 6. Перейдите по адресу: http://localhost
macOS
1. Установите Homebrew, если он не установлен (инструкция на сайте: https://brew.sh) 2. Установите Nginx с помощью Homebrew: brew install nginx 3. Запустите Nginx: sudo nginx 4. Откройте через браузер http://localhost:8080
Windows
1. Скачайте последнюю версию Nginx для Windows с официального сайта: https://nginx.org/en/download.html 2. Распакуйте архив в выбранную папку 3. Перейдите в папку с Nginx и запустите nginx.exe 4. Откройте браузер и перейдите по адресу: http://localhost

Настройка Nginx

 Подробно рассмотрим алгоритм для Linux-систем. Можно воспользоваться утилитой UFW (Uncomplicated Firewall). Установите ее, откройте порты:

  • 22 для удаленного доступа по SSH;

  • 80 для клиент-серверной связи по протоколу HTTP;

  • 443 для клиент-серверной связи по протоколу HTTPS. 

Представьте утилите доступ к веб-серверу:

Настройка Nginx

Проверьте список доступных приложений:

Настройка Nginx

Убедитесь, что среди приложений есть Nginx: 

Настройка Nginx

Внесите разрешения на все порты, которые вы открыли:

Настройка Nginx

Проверьте статус портов:

Настройка Nginx

Ответ будет выглядеть примерно так:

Настройка Nginx

Проверьте, работает ли сервер:

Настройка Nginx

Проверьте работоспособность сервера:

Ответ должен выглядеть так: Active: active (running) since….

Проверьте доступность по HTTP, открыв страницу сервера в браузере. Должно выйти такое окно:

Настройка Nginx

Конфигурация Nginx

Чтобы управлять сервером, нужно знать, какие есть каталоги и где они находятся. Вот основные:

  • /var/www/html — стартовая страница по умолчанию в типовых пакетах для Ubuntu/Debian;

  • /etc/nginx — директория, где содержатся основные файлы настроек;

  • /etc/nginx/nginx.conf — основной конфигурационный файл;

  • /etc/nginx/sites-enabled — директория с конфигурациями активных сайтов;

  • /etc/nginx/snippets — фрагменты конфигурации для подключения к основной конфигурации сервера;

  • /var/log/nginx — папка, где хранятся логи событий.

Также во многих Debian/Ubuntu‑дистрибутивах используют каталоги sites-available и sites-enabled для организации виртуальных хостов; в других системах структура может отличаться.

Curator Anti-DDoS
Curator Anti-DDoS
Фильтруйте трафик для обеспечения стабильности и бесперебойности работы ваших информационных ресурсов по протоколам HTTP или HTTPS.
Узнать больше

Настройка конфигурационных файлов

Ключевые параметры конфигурации:

Параметр
Описание
Пример
user
Определяет пользователя и группу, от имени которых будет работать Nginx
user www-data
worker_processes
Определяет количество рабочих процессов Nginx
worker_processes auto
error_log
Путь к файлу, в который будут записываться ошибки работы Nginx
error_log /var/log/nginx/error.log
pid
Путь к файлу, где хранится идентификатор процесса Nginx
pid /var/run/nginx.pid
server_name
Определяет доменные имена или IP-адреса, для которых настроен сервер
server_name example.com www.example.com
listen
Определяет порт и IP-адрес, на которых Nginx будет слушать входящие запросы
listen 80 или listen 443 ssl
location
Определяет обработку запросов для конкретных путей
location /images/ { root /var/www/html; }
root
Указывает корневую директорию для хранения веб-контента
root /var/www/html
index
Указывает файл, который будет открыт по умолчанию, например, index.html
index index.html index.htm
ssl_certificate
Путь к SSL-сертификату для защищенных соединений (HTTPS)
ssl_certificate /etc/ssl/certs/example.com.crt
ssl_certificate_key
Путь к приватному ключу для SSL-сертификата
ssl_certificate_key /etc/ssl/private/example.com.key
ssl_protocols
Указывает поддерживаемые версии SSL/TLS
ssl_protocols TLSv1.2 TLSv1.3;
proxy_pass
Указывает сервер для проксирования запросов
proxy_pass http://backend_server;
proxy_cache_path
Настройка кеширования для проксированных запросов
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m max_size=1g
allow / deny
Ограничивает доступ по IP-адресам
allow 192.168.1.0/24; deny all
access_log
Указывает путь к файлу для логирования запросов
access_log /var/log/nginx/access.log
limit_req_zone
Устанавливает зону для ограничения частоты запросов
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s
limit_req
Позволяет ограничивать частоту запросов и снижать эффект простых flood атак; для защиты от масштабных распределенных DDoS обычно используют специализированные решения (например, облачные Anti DDoS сервисы)
limit_req zone=req_limit_per_ip burst=5

Для дополнительной защиты веб-приложений от DDoS-атак можно использовать Anti-DDoS Curator от Cloud.ru. 

Заключение

Nginx играет важную роль в веб-разработке. Он позволяет сохранять производительность и распределять нагрузку на серверы, потребляя минимум ресурсов. Благодаря этому Nginx стал неотъемлемой частью глобальной веб-инфраструктуры. 

Продукты из этой статьи:
Иконка-Curator Anti-DDoS
Curator Anti-DDoS
11 декабря 2025

Вам может понравиться