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

Обзор Nginx

Nginx — это http сервер, чаще всего используемый в качестве:

  • веб-сервера
  • обратного прокси-сервер
  • балансировщика нагрузки
  • кэширующего сервера

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 https://stable.see.selectel.ru selectos main contrib
  • добавить тестовый репозиторий: deb https://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, нужно выполнить исполняемый файл:

systemctl start nginx

После запуска Nginx им можно управлять с помощью команд:

  • systemctl stop nginx — завершение
  • systemctl reload nginx — перезагрузка конфигурационного файла
к сведению

Команда должна быть выполнена под тем же пользователем, под которым был запущен Nginx.

Перезагрузка конфигурационного файла Nginx

Изменения конфигурационного файла применяются:

  • при перезагрузке конфигурации командой systemctl reload nginx
  • при перезапуске Nginx

При systemctl reload nginx главный процесс выполняет следующие операции:

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

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

к сведению

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