Обзор Nginx
В основном используются следующие возможности открытого Nginx:
- веб-сервер
- обратный прокси-сервер
- балансировка нагрузки
- кэширование данных
У Nginx есть один главный процесс и несколько рабочих.
Главный процесс выполняет задачи:
- чтение конфигурации,
- проверка конфигурации,
- управление рабочими процессами.
Рабочие процессы выполняют фактическую обработку запросов в соответствии с конфигурационным файлом.
Количество рабочих процессов задаётся в конфигурационном файле:
- может быть фиксированным для данной конфигурации,
- может автоматически устанавливаться равным числу доступных процессорных ядер.
Nginx использует модель, основанную на событиях, и механизмы для эффективного распределения запросов между рабочими процессами. Эти механизмы зависят от операционной системы.
Версии Nginx в репозиториях SelectOS
В основном репозитории SelectOS содержится дефолтная версия Nginx 1.22.1.
В тестовом репозитории SelectOS дополнительно есть DPDK-версия на базе Nginx 1.25. На данный момент эта версия находится в стадии бета-тестирования.
Установка Nginx
Установка дефолтной версии Nginx:
apt install nginx
Установка DPDK-версии Nginx для сетевых карт Intel®:
apt install fast-nginx
DPDK-версия Nginx находится в тестовом репозитории в пакете fast-nginx. Для ее установки необходимо подключить публичный тестовый репозиторий в файле /etc/apt/sources.list.d/1.0.list
:
- закомментировать имеющийся репозиторий:
deb hps://stable.see.selectel.ru selectos main contrib
- добавить тестовый репозиторий:
deb hps://testing.see.selectel.ru selectos main contrib
- выполнить
sudo apt update
для обновления кеша пакетного менеджера
Конфиг Nginx: модули, дерективы, контексты
То, как работает Nginx и его модули, определяют настройки конфигурационного файла nginx.conf
.
Он расположен в директории /etc/nginx
.
Nginx состоит из модулей. Модули настраиваются директивами, указанными в конфигурационном файле.
Директивы Nginx
Директивы делятся на простые и блочные:
- Простая директива состоит из имени и параметров, разделённых пробелами, и оканчивается точкой с запятой
;
. - Блочная директива состоит из имени, параметров и набора дополнительных инструкций (вместо
;
).
Дополнительные инструкции в блочной директиве размещаются внутри фигурных скобок ({
и })
.
Контексты Nginx
Контексты Nginx — это блочные директивы внутри фигурных скобок которых есть другие директивы. Директивы, помещённые в конфигурационном файле вне любого контекста, считаются находящимися в контексте main
.
Примеры директив и контекстов:
- директивы
events
иhttp
располагаются в контекстеmain
, - директива
server
— в контекстеhttp
, - директива
location
— в контекстеserver
.
Запуск и управление Nginx
Чтобы запустить Nginx, нужно выполнить исполняемый файл:
make nginx
После запуска Nginx им можно управлять, вызывая исполняемый файл с параметром -s:
nginx -s stop
— быстрое завершениеnginx -s quit
— плавное завершениеnginx -s reload
— перезагрузка конфигурационного файлаnginx -s reopen
— переоткрытие файлов с логами
Команда должна быть выполнена под тем же пользователем, под которым был запущен Nginx.
Перезагрузка конфигурационного файла Nginx
Изменения конфигурационного файла применяются:
- при перезагрузке конфигурации командой
nginx -s reload
- при перезапуске Nginx
При nginx -s reload
главный процесс выполняет следующие операции:
- получает сигнал о перезагрузке
- проверяет правильность синтаксиса нового конфигурационного файла
- пробует применить новую конфигурацию и запустить новые рабочие процессы
- отправляет требование завершиться старым рабочим процессам
Старые рабочие процессы, получив команду завершиться, прекращают принимать новые запросы и продолжают обслуживать оставшиеся текущие запросы. После этого старые рабочие процессы завершаются.
В случае сбоя главный процесс откатывает изменения и продолжает работать со старой конфигурацией.