Как установить и настроить 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, но для провайдера или админа с руками это разумный компромисс между стоимостью и контролем.


