Як встановити та налаштувати 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, але для провайдера або адміна з руками це розумний компроміс між вартістю і контролем.


