Решение проблем модуля NginxCP

Решение проблем модуля NginxCP

24 января 2016
NginxCP - это модуль для серверов с панелью управления Cpanel. Он добавляет поддержку NGINX для панели управления, что положительно сказывается на производительности сервера и скорости открытия сайтов.

Данный модуль имеет две известные для нас проблемы: исчезновение файлов конфигурации для дополнительных доменных имен и проблема добавления поддоменов при использовании новой темы Paper Lantern в Cpanel. В этой статьи мы и постараемся их решить.

Давайте начнем с проблемы, которая известна была несколько лет, но её решение было найдено совсем недавно - исчезновение файлов конфигураций дополнительных доменных имен.

Периодически к нам обращались клиенты с ошибкой ERR_EMPTY_RESPONSE, которая возникает в следствии отсутствия файлов конфигурации для доменного имени в NGINX. Неважно - доменное было добавлено недавно или давно, ошибка появлялась внезапно. Мы всегда спрашивали клиентов, что они делали в панели управления, но в ответ не получали никакой информации, которая нам бы смогла помочь в решении проблемы.

Недавно к нам обратился клиент, который пожаловался на то, что не может удалить некоторые поддомены (это была нормальная ситуация, в Cpanel нельзя удалять системные поддомены, которые создаются после добавления дополнительных доменных имен). Но самым интересным было то, что клиент после этого сразу же обратился с тем, что его сайты стали показывать ошибку ERR_EMPTY_RESPONSE. При дальнейшем тестировании было выявлено, что файлы конфигурации дополнительных доменных имен удалялись после попытки удалить системный поддомен в панели управления.

Если посмотреть скрипт /usr/local/cpanel/hooks/delsubdomain, который поставляется вместе с NginxCP, то видно, что в нём нет никаких проверок на то, что передает панель управления. Он просто удаляет файл конфигурации и всё:


В доработанном скрипте появилась проверка на то, что нам передает панель управления,  также мы используем мягкую перезагрузку NGINX без обрыва открытых соединений:


О второй проблеме с добавлением поддоменов при использовании темы Paper Lantern нам стало известно практически сразу, как тему добавили в панель управления. Решение было найдено быстро и достаточно просто.

Проблема заключалась в том, что при использовании разных тем, Cpanel передавала разные данные на обработчик. В случае с темой X3 передавались данные следующего вида:


А если мы включаем тему Paper Lantern, то данные принимают вид:


Скрипт /usr/local/cpanel/hooks/addsubdomain, который идет в поставке с NginxCP не умеет с этим работать:


Давайте доработаем данный скрипт, чтобы он поддерживал новую тему и мягко перезагружал NGINX.


Этого достаточно для работы модуля NginxCP без каких-либо серьезных ошибок.
1024