Як встановити та налаштувати 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_status_module, realip_module і http_v2_module.
  • Перевірте що конфігурації 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, але для провайдера або адміна з руками це розумний компроміс між вартістю і контролем.