Как установить и настроить Nginx в cpanel

Нативной поддержки Nginx в cpanel нет - только платные решения (LiteSpeed) или заброшенные плагины.

Рабочий бесплатный вариант - поставить nginx как обратный прокси перед Апач и настроить демон, который автоматически генерирует vhost-конфиги при добавлении новых доменов. Ниже - как это сделать руками, без переплаты за готовые модули.

1. Почему не «из коробки»

Цпанель исторически заточен под Апач. Варианта работы с nginx официально три

ВариантСтоимостьАктуальностьНаш вердикт
Платный плагин nginx для WHMПлатноПоддерживаетсяОправдан, если не хочется администрировать вручную
Старый community-плагинБесплатноЗаброшен, обновлений нетНе рекомендуем - риски совместимости
LiteSpeedПлатно (LSWS)Активно развиваетсяХорош, но это отдельная экосистема, не nginx
Ручная связка NGINX + Апач (nginx-cpl)БесплатноТребует самостоятельной поддержкиНаш выбор для тех, кто хочет контроль и экономию

Мы пойдём по четвёртому пути: NGINX отдаёт статику и SSL, Апач остаётся «под капотом» для обработки динамики через mod_php/suPHP - как и был настроен в cpanel.

2. Что должно быть готово заранее

Перед установкой:

  • Соберите или установите͏ NGINX с нужными модулями: ssl_module, stub_statu͏s_mo͏dule, re͏alip_module и http_v2_mo͏dule.
  • Проверьте что͏ конфиги ͏nginx нахо͏дятся в обыч͏ном ͏месте - /etc/nginx.͏
  • Добавьте службу в автозапуск nginx: chkconfig nginx on.

3. Установка демона автогенерации конфигов

Здесь ключевая логика решения. Служба каждые 10 секунд проверяет, менялся ли httpd.conf, и при изменениях пересобирает под каждый домен два файла nginx - для HTTP и HTTPS.

Порядок действий:

  • Скачайте архив nginx-cpl-v3 и распакуйте содержимое в /usr/share/nginx-cpl/sh-mod/.
  • Скопируйте службы nginx-cpl3 в /etc/init.d/ и выдайте права на исполнение: chmod u+x /etc/init.d/nginx-cpl3
  • Включите автозапуск: chkconfig nginx-cpl3 on.
  • Управляйте демоном стандартными командами: service nginx-cpl3 start|stop|status.
  • Для удобства пропишите alias в /root/.bashrc, чтобы вызывать принудительное обновление конфигов одной командой gen-vhosts-consol вместо полного пути к PHP-скрипту.

4. Настройка config.php - ключевые параметры

Именно это определяет, как они «договорятся» между собой по сокетам

ПараметрНазначение
APACHE_PORT_HTTPS / APACHE_PORT_HTTPВнутренние порты (например, 1443/8080), скрытые от внешнего мира
APACHE_CONFПуть к httpd.conf, который парсит демон
NGINX_PORT_HTTPS / NGINX_PORT_HTTPСтандартные внешние порты (443/80), которые примет nginx
NGINX_CONFКаталог nginx для генерируемых vhost-файлов доменов (/etc/nginx/vhosts/)
CPL_BASEРабочий каталог демона - служебные файлы и логи

Важный нюанс: в сгенерированных настройках nginx прописаны пути к inc-файлам proxy и microcache (/etc/nginx/proxy/).

Если отдельные настройки nginx для этого не нужны - создайте пустые заглушки proxy.inc и microcache.inc, иначе NGINX откажется стартовать из-за отсутствующих файлов.

5. Финальный шаг - переключение в WHM

  • Запустите фоновый процесс и убедитесь, что в /etc/nginx/vhosts/ появились nginx конфиги доменов.
  • В WHM: Home - Server Configuration - Tweak Settings.
  • Смените «Apachenon-SSL IP» на 8080, «ApacheSSL» на 1443.
  • Запустите службу NGINX.
  • Обязательно закройте порты 8080 и 1443 от внешнего доступа фаерволом - иначе Апач останется доступен напрямую, в обход nginx и всех его плюсов (кэширование, защита, балансировка нагрузки).

FAQ

В 90% случаев это означает, что nginx не может достучаться на внутренних портах.

Проверьте:

  • Действительно ли индеец слушает порты 8080/1443 (команда netstat -tulpn | grep httpd).
  • Совпадают ли эти значения с APACHE_PORT_HTTP/APACHE_PORT_HTTPS в config.php.
  • Не блокирует ли SELinux или локальный фаервол соединение между Nginx и индейцем на loopback-интерфейсе.

Нет, в этом и смысл - он сам проверяет httpd.conf каждые 10 секунд и обновляет настройки. Ручной вызов (gen-vhosts-consol) нужен только для принудительного пересоздания файлов, например, после ручного редактирования или сбоя.

Итог

Такая связка даёт то же, что и платные решения: nginx держит фронт, отдаёт статику быстрее и держит больше соединений, а индеец спокойно работает в фоне с привычными cpanel механизмами PHP.

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