Статьи

Руководство по Nginx: Введение

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

Становится очень важным, чтобы веб-сайт основывался на нескольких слабосвязанных, но очень сплоченных строительных блоках, и nginx действительно является важной частью для достижения этой цели.

Nginx (произносится как x) — это легкий, бесплатный HTTP-сервер с открытым исходным кодом и обратный прокси-сервер, а также почтовый прокси-сервер.

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

Использование обратного прокси-сервера очень важно, поскольку оно помогает в:

  1. скрытие существования и характеристик фактического исходного сервера
  2. распределение нагрузки
  3. сжатие и кэширование контента
  4. делать A / B тестирование
  5. манипулирование запросом / ответом

Чем nginx отличается от Apache? Nginx основан на событиях и асинхронен, в то время как Apache полностью зависит от потоков. На веб-сервере с относительно высоким трафиком потоки неизбежно исчерпывают память. Событие, основанное на асинхронной и неблокирующей модели (nginx), является очевидным победителем в таком случае.

Он имеет один главный процесс, и несколько «рабочих» процессов выполняются от имени непривилегированного пользователя. Внутри каждого работника nginx может обрабатывать несколько тысяч соединений.

Архитектура Nginx Источник: Архитектура приложений с открытым исходным кодом

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

Модули Nginx бывают разных форм: основные модули, модули событий, обработчики фаз, протоколы, обработчики переменных, фильтры, восходящие потоки и балансировщики нагрузки. В настоящее время nginx не поддерживает динамически загружаемые модули, поэтому модули должны компилироваться вместе с ядром во время сборки.

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

  1. Клиент отправляет HTTP-запрос.
  2. Ядро Nginx выбирает соответствующий обработчик фазы на основе настроенного местоположения, соответствующего запросу.
  3. Если это настроено, балансировщик нагрузки выбирает вышестоящий сервер для прокси.
  4. Обработчик фазы выполняет свою работу и передает каждый выходной буфер первому фильтру.
  5. Первый фильтр передает выходные данные второму фильтру.
  6. Второй фильтр передает выход на третий (и так далее).
  7. Окончательный ответ отправляется клиенту.

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

Загрузка и установка

Конфигурация Nginx находится в текстовых файлах, обычно в /usr/local/etc/nginx или /etc/nginx . Основной файл конфигурации называется nginx.conf . Файл конфигурации Nginx, по сути, представляет собой список директив, организованных в логической структуре. Все поведение приложения определяется значениями, которые вы передаете этим директивам.

01
02
03
04
05
06
07
08
09
10
11
12
13
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
 
events {
     worker_connections 1024;
}
 
http {
 …

Выше вы видите небольшой фрагмент по умолчанию для nginx conf (с пояснениями). Весь файл также может быть расположен по адресу /usr/local/etc/nginx/nginx.conf.default . Суть в том, чтобы подробно объяснить каждую директиву.

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