Apache и nginx

Nginx - это дополнительный, высокопроизводительный веб-сервер, который обычно используется как обратный прокси и позволяет улучшить работу основного веб-сервера, отвечающего за хостинг клиентских сайтов. Этот веб-сервер был разработан специально для передачи больших объемов статического контента (изображений, видео, css, xml и так далее). Nginx намного эффективнее справляется с большим количеством одновременных подключений, чем Apache. А также потребляет гораздо меньше памяти в расчете на одно подключение.

Для наиболее оптимального использования nginx Parallels Plesk настраивает его как обратный прокси-сервер между Интернетом и Apache (см. схему ниже). За счет этого nginx работает как внешний веб-сервер, который принимает все входящие запросы от посетителей сайтов. Эти запросы отправляются Apache, который в свою очередь разделяет их в зависимости от того, какой тип контента запрашивается - статический или динамический. Если запрашивается статический файл (jpg, css, html и т.д.), Apache пропускает запрос через все имеющиеся обработчики (применяет конфигурацию .htaccess, перезаписывает URL и т.д.) и возвращает nginx ответ, содержащий только расположение запрошенного файла в файловой системе. Nginx находит этот файл и отправляет его клиенту. Если запрашивается динамический файл (например, скрипт PHP), Apache исполняет этот файл и отправляет ответ nginx, который доставляет его клиенту.

Такая комбинация из nginx and Apache обеспечивает следующие преимущества:

Технические подробности того, как Plesk обрабатывает HTTP-запросы с помощью nginx, приведены далее в этом разделе. Информацию о том, как включить поддержку nginx в Plesk, смотрите в разделе Установка nginx. Если вы не хотите использовать веб-сервер nginx, вы можете отключить его, как описано в разделе Отключение nginx.

Как обрабатываются HTTP-запросы в Plesk с nginx

Чтобы обеспечить интеграцию между nginx и Apache, Plesk использует два дополнительных модуля Apache:

Давайте более подробно рассмотрим, как Plesk обрабатывает запросы статического и динамического контента с помощью этих модулей.

Обработка HTTP-запроса статического файла происходит следующим образом (см. схему):

  1. Клиент отправляет запрос веб-серверу.
  2. Nginx добавляет в этот запрос заголовки X-Accel-Internal (используется модулем mod_aclr2) и X-Forwarded-For (содержит IP-адрес клиента) и отправляет его Apache.
  3. Apache получает запрос и пропускает его через зарегистрированные обработчики (применяет конфигурацию .htaccess, перезаписывает URL и т.д.). На этом этапе модуль mod_rpaf заменяет IP-адрес сервера nginx в переменной Apache REMOTE_ADDR на адрес клиента из заголовка X-Forwarded-For .
  4. После прохождения через все зарегистрированные обработчики запрос попадает в модуль mod_aclr2. Обработчик проверяет наличие заголовка X-Accel-Internal. Если он есть, модуль отправляет серверу nginx ответ с заголовком X-Accel-Redirect и пустым содержимым. Этот заголовок содержит точное расположение файла, определенное модулем mod_aclr2.
  5. Получив ответ, сервер nginx находит соответствующий файл и передает его клиенту.

На расположенной ниже схеме приведен пример обработки запроса файла GIF размером 2 КБ.

static_seq

В случае с динамическим контентом шаги с первого по третий будут такими же. Затем запрос передается обработчику соответствующего модуля Apache (mod_php, mod_perl, mod_cgi и т.д.). Запрос никогда не доходит до модуля mod_aclr2 (за исключением запросов SSI). Обработчик формирует ответ и отправляет его nginx, который в свою очередь доставляет его клиенту. На следующей схеме приведен пример обработки запроса файла PHP.


Далее в этом разделе:

Установка nginx

Выключение nginx

 

Установка nginx

В случае установки Plesk с нуля сервер nginx включен по умолчанию. В случае обновления с более ранней версии вы всегда можете добавить компонент nginx на странице Инструменты и настройки > Обновления > Установить/удалить компоненты. После установки компонента необходимо запустить службу Обратный прокси-сервер (nginx) на странице Инструменты и настройки > Управление службами.

Номер установленной у вас версии nginx можно посмотреть на странице Инструменты и настройки > Серверные компоненты.

nginx version

 

Выключение nginx

Чтобы вернуться к конфигурации с одним веб-сервером (Apache), остановите службу Обратный прокси-сервер (nginx) на странице Инструменты и настройки > Управление службами.

nginx_stop

Чтобы снова включить nginx, запустите службу Обратный прокси-сервер (nginx).

Примечание. Запуская и останавливая службу Обратный прокси-сервер (nginx), вы не только включаете и отключаете nginx, но и меняете конфигурацию веб-сервера (при одной внешним веб-сервером является комбинация из nginx и Apache, при другой - только Apache). Перезапуск работает так же, как со всеми остальными службами: служба nginx просто перезапускается.