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 conf

Nginx — один из самых используемых веб-серверов. Он обогнал по популярности Apache, который много лет был лидером рынка. Согласно данным исследования W3Techs за сентябрь 2025 года, на Nginx размещено 33,2% сайтов. В статье разберемся в причинах такой популярности веб-сервера и расскажем, как его настроить и использовать. 

Инструкции
Иллюстрация для статьи на тему «Настройка и установка Nginx: пример запуска nginx conf»
Продукты из этой статьи:
Иконка-Evolution Compute
Evolution Compute

Что такое Nginx, как он работает

Nginx — веб-сервер на основе открытого исходного кода, разработанный в 2002 году Игорем Сысоевым. С 2004 года он доступен для свободного использования. Есть опенсорсная бесплатная версия и платные — Nginx Plus, Angie, OpenResty. Они позволяют применять дополнительные правила балансировки нагрузки и мониторить активность сервера. 

Nginx может работать как обычный сервер — обрабатывать HTTP-запросы от браузера клиента и отправлять запрашиваемые файлы, например, фото, видео, текст, JS-скрипты. 

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

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

Принцип обработки запросов сервером NginxПринцип обработки запросов сервером Nginx

Nginx вышел далеко за рамки веб-сервера и предлагает комплексное решение для современных IT-инфраструктур:

  • Веб-сервер — статический контент и FastCGI.

  • Прокси — обратный прокси, кэширование, медиа-потоки.

  • Балансировщик нагрузки — распределение трафика + SSL-терминация.

  • Security Gateway — защита от атак, rate limiting, WAF.

  • API Gateway — маршрутизация, аутентификация, мониторинг API.

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

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

Поскольку многие выбирают между этими двумя веб-серверами, кратко поговорим про их отличия.

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

Apache способен быстро обрабатывать динамический контент — тот, который генерируется непосредственно во время клиентских запросов. 

Другие отличия представлены в таблице.

Характеристика
Nginx
Apache
Тип сервера
Асинхронный
Процессно-ориентированный сервер (Process-driven)
Производительность
Высокая производительность при обработке большого числа соединений, незначительные задержки
Хорошо работает для небольших сайтов, но может терять в производительности на высоких нагрузках
Обработка запросов
Обрабатывает запросы асинхронно, используя один рабочий процесс для множества соединений
Каждый запрос обрабатывается отдельным процессом или потоком, что не очень эффективно при многочисленных запросах
Масштабируемость
Простая масштабируемость благодаря асинхронной обработке
Масштабируемость ограничена из-за процессно-ориентированной модели
Конфигурация
Конфигурация простая и компактная, но с некоторыми ограничениями в гибкости
Гибкая конфигурация с множеством параметров и опций
Использование памяти
Низкое потребление памяти, так как используется один процесс для множества соединений
Более высокое потребление памяти из-за необходимости создания нового процесса или потока для каждого запроса
Поддержка протоколов
HTTP, HTTPS, TCP, UDP, WebSocket, FTP (в некоторых случаях)
HTTP, HTTPS, FTP, IMAP, POP3 и другие (через дополнительные модули)
Модульность
Поддерживает ограниченное количество модулей, встроенные функции намного быстрее
Высокая модульность, поддерживает множество сторонних модулей для разных нужд
Логирование
Логирование простое, но гибкое с поддержкой различных форматов
Логирование более гибкое, поддерживает расширенные функции и форматы
Поддержка серверов с динамическим содержимым
Подходит для статического контента, поддерживает динамические сайты через обратное проксирование
Работает с динамическим контентом благодаря поддержке различных языков (PHP, Perl, Python и т.д.)
Использование в качестве реверс-прокси
Подходит в качестве реверс-прокси для балансировки нагрузки и обратного проксирования
Редко используется в роли реверс-прокси, но поддерживает такую возможность через модули
Установка и настройка
Простота в установке и настройке для большинства случаев использования
Требует больше настроек для гибкости, но более универсален
Обновления и безопасность
Регулярные обновления и быстрые патчи безопасности
Регулярные обновления, но с большими усилиями на настройку безопасности
Поддержка OS
Поддерживает Linux, BSD, Windows (ограниченная поддержка)
Поддерживает Linux, BSD, Windows, macOS и другие ОС

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

Подготовка к установке

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

Минимальные системные требования

Nginx поддерживает:

  • все основные дистрибутивы Linux: Ubuntu, Debian, CentOS, Red Hat Enterprise Linux, Fedora, Alpine Linux (в случае использования Docker);

  • на macOS он обычно используется для локальной разработки и тестирования;

  • с Windows сложнее, поскольку есть ограничения: версия Nginx под Windows пока рассматривается как бета-версия, но установить ее можно. 

Что касается процессора, то нужна x86-64 архитектура или ARM. Тактовая частота — 1 ГГц и выше. Nginx не требует значительных вычислительных мощностей, но для большого количества соединений лучше использовать серверы с мощными процессорами.

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

Выбор инфраструктуры для развертывания Nginx

При планировании развертывания Nginx важно определиться с инфраструктурой. Для продакшен-среды, развития и тестирования оптимальным решением станут облачные виртуальные машины, которые обеспечивают гибкость масштабирования и высокую доступность. Сервис Evolution Compute предоставляет виртуальные машины с гибкими конфигурациями на базе актуальных процессоров Intel Gold 6248R и быстрыми NVMe-дисками, что критично для высокопроизводительной работы веб-сервера.

Виртуальные машины Evolution Compute
Виртуальные машины Evolution Compute
Выбирайте готовые конфигурации вычислительных мощностей и адаптируйте их под свои задачи: подключайте дополнительные диски, подсети и IP-адреса.
Узнать больше

Преимущества облачных виртуальных машин для Nginx включают возможность быстрого масштабирования в периоды высокой нагрузки, оплату по факту использования ресурсов и SLA на доступность 99,9%. Через удобный русскоязычный интерфейс, API или Terraform вы можете управлять инфраструктурой, создавать группы серверов для балансировки нагрузки и выделять изолированные окружения для разработки, тестирования и продакшена. Для начального тестирования доступна бесплатная конфигурация с 2 vCPU, 4 ГБ RAM и 30 ГБ дискового пространства.

Подготовка окружения для установки Nginx

Перед установкой Nginx обновите системные пакеты до последних версий:

Для корректной работы и сборки Nginx могут потребоваться определенные зависимости — компилятор, библиотеки для работы с SSL, PCRE и сжатия. Рекомендуется ориентироваться на официальные инструкции по установке пакетов,   так как перечень пакетов может отличаться в зависимости от версии системы и дистрибутива.

Если на сервере настроен фаервол (например, UFW на Ubuntu), откройте порты 80 и 443 для HTTP и HTTPS-трафика:

Для UFW на Ubuntu
Для firewalld на CentOS/RHEL
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

Если планируете установить Nginx через пакетный менеджер, убедитесь, что сервер имеет доступ к интернету:

Перед установкой Nginx на всякий случай создайте резервные копии системных настроек и данных.

Установка Nginx

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

Установка на Ubuntu и Debian-подобных системах

Для устойчивой работы используйте официальные репозитории Nginx. Добавьте репозиторий и ключ:

Установите Nginx:

Запустите и проверьте статус сервера:

При необходимости настройте фаервол для доступа к HTTP и HTTPS.

Добавьте репозиторий Nginx согласно инструкции на официальном сайте:

Для Fedora используйте аналогичный подход с dnf.

Установите Nginx, затем запустите и активируйте автозапуск:

Настройте фаервол, разрешив HTTP и HTTPS:

Установка на macOS

Установка через Homebrew — наиболее простой и рекомендуемый способ:

Конфигурационный файл находится по пути: /usr/local/etc/nginx/nginx.conf.

Установка на Windows

Для Windows скачайте официальный дистрибутив с официального сайта сервера, распакуйте и запустите исполняемый файл. Запуск и управление осуществляется через командную строку.

Установка в Docker

Nginx можно запускать в Docker — платформе для контейнеризации приложений. Сначала нужно установить Docker Engine, следуя официальной инструкции для вашей операционной системы. На странице выберите свою ОС (Ubuntu, Debian, CentOS, macOS, Windows) и следуйте пошаговому руководству для корректной установки.

После установки Docker запустите Nginx с помощью официального образа из Docker Hub. Откройте терминал и выполните команду:

Параметры команды:

  • --name nginx-container — задает имя контейнера

  • -p 8080:80 — пробрасывает порт 80 контейнера на порт 8080 хоста

  • -d — запускает контейнер в фоновом режиме

После выполнения команды Docker автоматически загрузит образ Nginx (если его еще нет локально), создаст и запустит контейнер. Чтобы проверить работоспособность, откройте браузер и перейдите по адресу http://localhost:8080. Если на экране появится страница «Welcome to nginx!», значит, контейнер успешно запущен и работает.

Структура каталогов Nginx

Структура каталога включает несколько основных директорий: 

  • etc/nginx — директория, где хранятся основные файлы настроек и /etc/nginx/nginx.conf — главный конфигурационный файл Nginx;

  • /etc/nginx/sites-available — каталог с конфигурациями для каждого сайта, который обслуживается Nginx;

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

  • /var/www/ssl — каталог, где хранятся файлы, связанные с  SSL-сертификатами;

  • /etc/nginx/snippets — фрагменты конфигурационных файлов, включенных в nginx.conf;

  • /var/log/nginx — директория с лог-файлами. Сюда сохраняются все логи Nginx.

Могут быть и другие каталоги, например, /run/nginx/ для хранения временных файлов, связанных с работой Nginx или /usr/share/nginx/, куда сохраняются статические ресурсы. 

Примерная структура каталогов Nginx на сервере может выглядеть так:

Конфигурирование nginx.conf

Конфигурирование nginx.conf — настройка веб-сервера Nginx путем редактирования файла nginx.conf, который содержит все основные настройки. Оно включает работу со структурой конфигурационного файла и ключевыми директивами. 

Конфигурационный файл определяет, как NGINX будет обрабатывать запросы, маршрутизировать трафик, управлять соединениями. Он делится на несколько секций и директив. Разберем основные секции:

  • Main Context — глобальные настройки, которые будут влиять на работу сервера.

Main ContextMain Context
  • HTTP Context — настройки для обработки запросов, проксирования, кеширования.  

HTTP ContextHTTP Context
  • Server Context — настройки для конкретных хостов. 

Server ContextServer Context
  • Error Pages — настройки отображения страниц ошибок.

Error PagesError Pages
  •  SSL и HTTPS — настройка SSL-сертификатов.

SSL и HTTPSSSL и HTTPS

С помощью конфигурации nginx.conf можно настроить и другие аспекты работы сервера. Мы разобрали основные разделы, которые практически всегда остаются неизменными. 

Пример простого конфигурационного файла

Создадим простой конфигурационный файл для NGINX с базовой настройкой:

Расшифруем: 

Основные настройки (Main Settings):

  • user: пользователь и группа, от имени которых будут работать процессы NGINX (обычно это www-data для Debian/Ubuntu);

  • worker_processes: количество рабочих процессов. Обычно ставят auto;

  • pid: путь к файлу с идентификатором процесса NGINX.

HTTP → HTTPS перенаправление:

Перенаправление с порта 80 на порт 443 с помощью директивы return 301 https://$host$request_uri;

Настройки SSL:

  • listen 443 ssl;: сервер будет слушать порт 443 для безопасных HTTPS-соединений;

  • ssl_certificate и ssl_certificate_key: путь к SSL-сертификату и приватному ключу;

  • ssl_protocols и ssl_ciphers: безопасные протоколы и шифры для SSL-соединений;

  • ssl_prefer_server_ciphers on;: команда, которая указывает, что сервер предпочитает собственные шифры. 

Корневая директория и индексы:

  • root: каталог, который будет корневой директорией для сайта. В примере это /var/www/example.com;

  • index: указывает, какие файлы будут индексными (например, index.html). 

Обработка ошибок:

  • error_page 404 /404.html;: определяет страницу ошибки 404, которая будет отображаться, если запрошенного ресурса не существует.

Основные команды для работы с Nginx и проверки конфигурации

Для запуска Nginx используйте команду:

Для перезапуска используется команда:

Если нужно остановить сервер, используйте команду:

Узнать, работает ли Nginx и увидеть текущий статус поможет команда:

Если хотите перезагрузить Nginx без прерывания работы сервера, используйте команду:  

Для проверки конфигурации Nginx на ошибки используйте команду:

Если конфигурация правильная, появится сообщение: syntax is okay и test is successful. Если есть что-то не так, Nginx укажет на ошибки. 

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

Чтобы просмотреть логи ошибок:

Если нужно очистить журналы логов, используйте команду:

Если вы хотите обновить конфигурацию без прерывания соединения, используйте команду:

Расширенная настройка Nginx

После основных настроек следует позаботиться о безопасности: установить SSL-сертификаты, настроить перенаправление и кэширование. 

Установка и настройка SSL-сертификатов

Если у вас уже есть сертификат и приватный ключ на локальной машине, скопируйте их на сервер в каталог /var/www/ssl с помощью команды scp:

Проверьте, что читать ключ может только root-пользователь:

Проверьте синтаксис:

Проверьте соответствие ключа и сертификата:

Настройте SSL в Nginx:

Можно настроить дополнительные параметры SSL-сессий, но сайт будет использовать SSL/TLS и без них. 

Редиректы и перенаправления

Чаще всего выполняется редирект с HTTP на HTTPS. Он нужен для обеспечения безопасности соединения между клиентом и сервером. Трафик будет автоматически перенаправлен с незащищенной версии сайта на безопасную с SSL-шифрованием. Как это настроить: 

Откройте файл конфигурации вашего сайта. Обычно он находится в директории /etc/nginx/sites-available/ или /etc/nginx/conf.d/ (например, /etc/nginx/sites-available/example.com). Добавьте блок конфигурации для перенаправления HTTP-трафика на HTTPS:

  • listen 80; — указывает на порт 80 (HTTP);

  • return 301 https://$host$request_uri; — директива, перенаправляющая все запросы на HTTPS с сохранением хоста и URI;

  • listen 443 ssl; — сервер будет слушать на порту 443 (HTTPS);

  • ssl_certificate и ssl_certificate_key — указывают на путь к SSL-сертификату и закрытому ключу.

После внесения изменений проверьте конфигурацию: sudo nginx -t. Если все верно, вы увидите сообщение syntax is okay и test is successful.

Еще примеры редиректов — в таблице. 

Сценарий
Пример конфигурации
Пояснение
Редирект с поддоменов на основной домен
server {
listen 80;
server_name www.example.com;

return 301
$scheme://example.com$request_uri;
}
Все запросы с www.example.com будут перенаправлены на example.com, при этом сохранятся все параметры запроса (например, http://www.example.com/page перенаправится на https://example.com/page). $scheme сохраняет протокол (http или https), а $request_uri сохраняет путь и параметры запроса
Редирект с одного порта на другой
server {
listen 8080;
server_name example.com;

return 301 http://$host$request_uri;
}
Все запросы к порту 8080 будут перенаправляться на стандартный HTTP порт 80. $host сохраняет имя хоста, а $request_uri сохраняет путь и параметры запроса.

Кэширование и оптимизация

Кэширование в Nginx позволяет ускорить загрузку страниц, снизить нагрузку на серверы, обеспечить отказоустойчивость. Начнем с кэширования статических файлов: 

Пример конфигурации:

  • expires 30d; — указывает, что период кэширования файлов с расширениями .jpg, .jpeg, .png, .css составляет 30 дней;

  • add_header Cache-Control "public, no-transform"; — добавляет заголовок Cache-Control, указывающий на возможность кэширования ресурсов. 

Если сервер обслуживает динамические запросы, можно использовать директиву proxy_cache для кэширования ответов от бэкендов .

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

  • proxy_cache_path — указывает директорию для хранения кэшированных данных, размер и параметры кэширования;

  • proxy_cache — активирует использование кэша;

  • proxy_cache_valid 200 60m; — указывает, что успешные ответы будут кэшироваться в течение 60 минут;

  • proxy_cache_use_stale — использование устаревшего кэша, если бэкенд-сервер недоступен;

  • add_header X-Cache $upstream_cache_status; — добавляет заголовок X-Cache в ответ, чтобы можно было увидеть, используется ли кэш. 

Если используете PHP,  можно настроить кэширование с помощью директивы fastcgi_cache.

Пример конфигурации:

  • fastcgi_cache_path — указывает место для хранения кэша;

  • fastcgi_cache — активирует использование кэша для PHP;

  • fastcgi_cache_valid 200 60m; — указывает, что успешные ответы от сервера PHP будут кэшироваться на 60 минут;

  • fastcgi_cache_use_stale — указывает, что при проблемах с сервером PHP будет использоваться устаревший кэш;

  • fastcgi_cache_key — задает ключ кэширования для уникальности.

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

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

Основные методы методы балансировки в Nginx: 

  • Round Robin — запросы распределяются между серверами поочередно. Например, первый запрос на первый сервер, второй на второй, третий — снова на первый и так дальше по циклу.

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

  • IP Hash — сервер для следующего запроса определяется на основе IP-адреса клиента с помощью хеш-функции. 

Использование Round Robin:

В этой команде upstream backend определяет группу серверов, между которыми будет распределяться нагрузка.

Использование Least Connections:

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

Пример конфигурации обратного прокси:

Управление и мониторинг Nginx

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

Мониторинг осуществляется с помощью встроенных инструментов Nginx и сторонних сервисов. В таблице мы собрали основные варианты. 

Метод мониторинга
Описание
Пример конфигурации
Использование модуля stub_status
Встроенный модуль Nginx для получения информации о текущем состоянии сервера, включая активные соединения, количество запросов и другие метрики
server {
listen 127.0.0.1:8080;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
Prometheus + Grafana
Использование Nginx Exporter для сбора метрик с Nginx, которые передаются в Prometheus и отображаются в Grafana для визуализации и аналитики
wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v0.9.0/nginx-prometheus-exporter-0.9.0.amd64.tar.gz tar
-xvzf nginx-prometheus-exporter-0.9.0.amd64.tar.gz

Конфигурация Prometheus:
scrape_configs:
- job_name: 'nginx'
static_configs:
- targets: ['localhost:9113']
Datadog
Внешний сервис мониторинга, который интегрируется с Nginx для сбора и анализа метрик в реальном времени, включая ошибки, производительность и состояние сервера
Установка Datadog Agent:
sudo apt-get install datadog-agent

Конфигурация в datadog.yaml:
nginx:
nginx_status_url:
http://localhost:8080/nginx_status
Логирование с использованием ELK Stack
Использование Elasticsearch, Logstash и Kibana (ELK) для сбора, хранения и визуализации логов Nginx. Это позволяет анализировать запросы, ошибки и другие параметры работы сервера
Конфигурация Nginx для логирования:
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
Netdata
Инструмент для мониторинга системных метрик (CPU, память, диск, сетевые соединения) в реальном времени. Netdata может быть использован для мониторинга Nginx и других серверных параметров
Установка Netdata:
bash <(curl -Ss https://my-netdata.io/kickstart.sh)

Доступ к интерфейсу:
http://localhost:19999
Мониторинг с использованием top, htop, dstat
Простейшие инструменты для мониторинга системных метрик: использования CPU, памяти, сетевого трафика и т.д
Пример использования:
htop
dstat
Использование nginx -t для проверки конфигурации
Используется для проверки синтаксиса конфигурационного файла Nginx. Это помогает оперативно выявлять ошибки в конфигурации
Проверка конфигурации:
sudo nginx -t

Перезагрузка сервера:
sudo systemctl reload nginx

Распространенные ошибки и их устранение

Для удобства мы собрали возможные проблемы с Nginx, их причины и решения в таблицу. 

Ошибка
Описание
Возможные причины
Решение
502 Bad Gateway
Nginx не может получить правильный ответ от бэкэнд-сервера
1. Проблемы с бэкэнд-сервером (не отвечает или перегружен)
2. Неправильная конфигурация проксирования (например, неправильные параметры proxy_pass)
3. Бэкэнд-сервер не запущен или недоступен
1. Проверьте логи ошибок Nginx:
sudo tail -f /var/log/nginx/error.log
2. Убедитесь, что бэкэнд-сервер работает и доступен
3. Проверьте параметры proxy_pass в конфиге Nginx
4. Увеличьте тайм-ауты:
proxy_connect_timeout 600;,
proxy_send_timeout 600;,
proxy_read_timeout 600;.
504 Gateway Timeout
Nginx не получил ответ от бэкэнд-сервера в течение установленного времени
1. Бэкэнд-сервер работает медленно или перегружен
2. Низкая пропускная способность или проблемы с сетью
3. Тайм-ауты на уровне Nginx или бэкэнд-сервера слишком короткие
1. Проверьте логи ошибок Nginx:
sudo tail -f /var/log/nginx/error.log
2. Увеличьте тайм-ауты на уровне Nginx и бэкэнд-сервера
3. Проверьте нагрузку на бэкэнд-сервер и его производительность
403 Forbidden
Ошибка доступа к ресурсу
1. Неправильные права доступа на файлы/каталоги.
2. Конфигурация безопасности блокирует доступ
3. Ошибки в .htaccess или настройках location.
1. Проверьте права доступа:
sudo chmod -R 755 /var/www/html,
sudo chown -R www-data:www-data /var/www/html
2. Проверьте конфигурацию Nginx на ограничения доступа
3. Убедитесь, что SELinux не блокирует доступ:
sudo setenforce 0.
404 Not Found
Ошибка, когда запрашиваемый ресурс не найден
1. Неправильные пути в конфигурации Nginx
2. Ресурс был удален или перемещен
3. Неверная настройка маршрутизации для виртуальных хостов
1. Проверьте пути в конфигурации Nginx.
2. Убедитесь, что файл существует на сервере.
3. Перезапустите Nginx:
sudo systemctl restart nginx.
500 Internal Server Error
Ошибка, указывающая на проблему на сервере при обработке запроса
1. Ошибки в коде бэкэнд-приложения
2. Проблемы с конфигурацией Nginx.
3. Неправильные разрешения на файлы/каталоги
1. Просмотрите логи ошибок Nginx:
sudo tail -f /var/log/nginx/error.log
2. Проверьте логи бэкэнд-приложения
3. Проверьте права доступа к файлам:
sudo chown -R www-data:www-data /var/www/html,
sudo chmod -R 755 /var/www/html
4. Перезапустите Nginx:
sudo systemctl restart nginx

Настройки для предотвращения DDoS-атак

DDoS-атаки или распределенный отказ в обслуживании — попытки хакеров «положить» серверы шквалом бессмысленных запросов. Следует предусмотреть вероятность такой атаки и подготовиться —  ограничить количество запросов с одного IP-адреса за определенный промежуток времени. Это можно сделать с помощью модуля limit_req.

Откройте конфигурационный файл Nginx nginx.conf, добавьте блок для ограничения скорости запросов:

  • rate=10r/s — позволяет обрабатывать до 10 запросов в секунду от одного IP;

  • burst=20 — позволяет краткосрочно превышать лимит, например, на 20 запросов.

Ограничить количество одновременных соединений с одного IP-адреса можно с помощью модуля limit_conn. В nginx.conf добавьте следующую настройку:

Комбинация limit_conn addr 1 ограничивает количество активных соединений с одного IP-адреса до 1.

Если сервер подвергается атакам с конкретных IP-адресов или стран, можно настроить доступ с использованием директив allow и deny. Добавьте в конфигурацию настройки для блокировки определенных IP-адресов:

Заключение

Чтобы эффективно работать с Nginx, нужно разобраться со структурой конфигурационного файла nginx.conf и выполнить базовые настройки. Только после этого можно фокусироваться на безопасности и оптимизации производительности. 

Продукты из этой статьи:
Иконка-Evolution Compute
Evolution Compute
31 октября 2025

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