Перейти к основному содержимому
Обзор Nginx

Обзор 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 главный процесс выполняет следующие операции:

  • получает сигнал о перезагрузке
  • проверяет правильность синтаксиса нового конфигурационного файла
  • пробует применить новую конфигурацию и запустить новые рабочие процессы
  • отправляет требование завершиться старым рабочим процессам

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

к сведению

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