RuWeb.net Forum

ISPmanager 4: После установки SSL-сертификата сайт стал работать медленнее. Что делать?
timru - 27.1.2018 в 15:46

Забегая вперед, скажу что установка сертификата никоим образом не должна увеличивать нагрузку на сайте, дело тут совершенно в другом.

Для начала немного теории. В самом простом случае, есть веб-сервер apache, который висит на 80-м порту и отдает посетителю весь контент, как статический (изображения, js, css и т.д.), так и динамический (обрабатывает php-скрипты с помощью php-модуля). В целях снижения нагрузки, на 80-й порт можно повесить более легкий веб-сервер nginx, который будет отдавать статику, а php-скрипты передавать на обработку более тяжелому веб-серверу apache, который будет висеть скажем на порту 8080. Что же делать в случае c SSL, для работы которого используется порт 443 (https-протокол)? По-логике, нужно заставить nginx слушать оба порта - и 80, и 443, и пусть он в случае необходимости работает и SSL-сертификатами, а apache пусть так и остается на порту 8080.

Но в ISPmanager-4 изначально это было реализовано неправильно. В случае с одним только apache, он слушал порты 80 и 443. А в случае связи nginx + apache получалась такая картина:
- для http-протокола nginx висел на 80-м порту, а apache на 8080-м;
- для https-протокола порт 443 обслуживал только один apache, а nginx из связки вообще выпадал.

Проблема долгое время не была актуальной среди наших клиентов, поэтому никто не придал ей особого значения. Но в сентябре 2016-го Google опубликовал предупреждение о том, что начиная с января 2017-го Chrome будет помечать HTTP-страницы, на которых посетители вводят пароли или иные секретные данные, как небезопасные:
https://security.googleblog.com/2016/09/moving-towards-more-secure-web.html
А начиная с 2017-го года все больше и больше клиентов начало переходить на SSL.

И вот тут обнаружилась проблема, которую в первую очередь заметили владельцы выделенных серверов с сильно нагруженными сайтами: до использования SSL сайт работал нормально, а после установки SSL-сертификата и настройки перенаправления посетителей на HTTPS-протокол, нагрузка неожиданно возросла. Но виноват в этом вовсе не сертификат, а тот факт что по HTTPS-протоколу сайт стал обслуживать только один apache, а nginx выпал из связки.

Поэтому возник вопрос, как в этом случае задействовать nginx. Но все не так просто.
Оказывается, в каком-то 201X году разработчики ISPmanager выпустили исправление данной проблемы. Для того чтобы привести файлы конфигурации в "актуальное состояние", необходимо в разделе "Настройки сервера" -> "Возможности" выделить строчки "Веб-сервер Apache" и "nginx [engine x] — HTTP и прокси-сервер." и переактивировать их, нажав кнопку "Вкл." Ни в коем случае не пытайтесь сделать это!
По факту, данная функция не работает так как надо. Очень часто все это заканчивается тем, что ISPmanager выключает SSL на всех сайтах и удаляет все сертификаты. И, к сожалению, техподдержка ISPsystem не желает решать эту проблему, ссылаясь на что поддержка ISPmanager-4 завершена 01.12.2016.

К сожалению, решения на данный момент нет. Иногда после некорректной переактивации удавалось вручню "допилить" файлы конфигурации так, чтобы панель управления ISPmanager продолжала успешно работать и создавать новые домены уже в новом формате. Иногда нет. Если у вас на сервере много сайтов, а также внесены ручные правки в httpd.conf и nginx.conf, с большой долей вероятности ничего не получится даже с нашей помощью. Необходимо задумываться о переезде на сервер с Linux, т.к. ISPmanager-5 уже не поддерживает FreeBSD.


[Отредактировано 27.1.2018 кто timru]