Разворачиваем WordPress за Nginx Proxy Manager

Сейчас вечер, из колонки звучит Ambient-музыка, приглушенный свет, а это значит что самое время поговорить про терминацию SSL и установку WordPress за Nginx Proxy Manager.

Уже довольно продолжительное время поисковые системы начали пессимизировать в результатах поиска те сайты, который отдают контент без шифрования по протоколу HTTP. А так как основная масса контента это блоги в той или иной форме, напомню, что 43% всего интернета – это WordPress – то задача подключения HTTPS к WordPress становится вполне актуальной.

Думаем

Как решать эту задачу – зависит прежде всего от того, а что собственно вам надо. Если у вас маленький бложик на WordPress и нужно просто “добавить SSL”, чтобы поисковики не ругались – то у любого уважающего себя хостера можно это сделать в панельке за пару минут. И наверное вы так и сделали, потом полностью настроили WordPress на HTTPS протокол с помощью какого-нибудь Really SImple SSL, сделали везде относительные ссылки, а там где нельзя использовали плагины вроде Velvet Blues Update URLs . И вроде бы все стало хорошо. Терминацией SSL (дешифрация входящего трафика) у вас занимается веб-сервер (например Apache) и WordPress уже настроен на HTTPS. Но тут внезапно вы решили на той же виртуалке разместить другой софт на поддомене. Встает интересный вопрос. У виртуалки один IP и одна пара портов для веб-трафика (80 + 443). Как же нам в такой ситуации получать на один 443 порт шифрованный трафик для нескольких доменов и перенаправлять его в зависимости от заголовка HOST в шифрованном трафике.

Варианты решения

Ну собственно решения два. Если у вас там прямо хорошая такая контейнерная инфраструктура – то используйте Traefik и будет вам счастье. Если же вы больше по виртуалкам – то отличным решением будет Nginx Proxy Manager. Он поставляется в виде docker-контейнера и умеет терминировать HTTPS на внешнем порту, расшифровывать его и направлять дальше http (или https) трафик на нужный хост или порт. Ставится за 5 минут в общем-то. Вот пример конфига:

docker-compose.yml

./docker/nginx/Dockerfile

Дьявол в деталях

А вот теперь самое интересное. Я перенес Apache на другой порт, ну скажем 85. Поставил Nginx Proxy Manager, которому указал для одного домена ходить на этот порт. Попробовал открыть сайтик – и меня ждала череда бесконечных редиректов. Часа два я убил на это пока не понял, в чем причина. WordPress ждал https трафика, а к нему приходил уже http. Все решилось элегантным костылем, который надо добавить в wp-config.php

wp-config.php

Один заголовок и одна переменная окружения и все заведется. Надеюсь, кому-то я сэкономлю этим постов пару часов его жизни 🙂

Литература

Leave a Comment