Проблемы с HTTPS при использовании балансировщика Amazon

ВОПРОС

Привет всем разработчикам. Мне нужна помощь в решении одной проблемы. Дело в том, что она и раньше у меня появлялась, и я до сих пор не знаю, как можно ее решить. В общем, я запускаю WordPress вместе с балансировщиком нагрузки EC2 Amazon. Все запускается, но сценарии почему-то не видят, что они запускаются по протоколу HTTPS и поэтому появляются циклы перенаправления и постоянно выскакивают предупреждения о том, что подключение небезопасно.
Я смог найти одно решение. Но оно требует изменить само ядро WordPress. У вас есть способы, которые помогут мне убрать эту проблему, но при этом не изменяя ядро? Если что, я использую Apache 2.2. Заранее, спасибо за содействие.

ОТВЕТ

Привет. Сейчас я сначала расскажу тебе об источнике проблемы, а потом объясню, что нужно делать. Смотри, у тебя есть такая функция, как is_ssl(). Она проверяет, каким образом осуществляется доступ к странице. Когда ты заходишь на сайт через защищенное соединение, в этот же момент Amazon Load Balancer делает разгрузку SSL. То есть, он просто убирает защиту, и в итоге ты заходишь на незащищеную страницу. Поэтому сервер не видит, что по факту доступ происходит через HTTPS.
Поэтому нам нужно сделать так, чтобы балансировщик отправлял X-Forwarded-Proto HTTP-заголовок. Это позволит нам выяснить, какой протокол используется на обратной стороне. С твоей версией Apache можно применить такой код:

<IfModule mod_setenvif.c>
SetEnvIf X-Forwarded-Proto “^https$” HTTPS
</IfModule>

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