Назад | Перейти на главную страницу

Почему я установил HTTP_X_FORWARDED_PROTO и отключил HTTPS на Apache 2.4?

Недавно обновил свой сайт: CMS (Drupal), это ОС (Ubuntu 14.04) и Apache (2.4.7).

Ситуация такова, что при серфинге на https://example.com/whatever PHP не может обнаружить HTTPS. $_SERVER['HTTPS'] пусто и $_SERVER['SERVER_PORT'] возвращает 80. И это вызывает проблему, потому что Drupal не может обнаружить HTTPS и обслуживает файлы HTTP (смешанное содержимое).

Единственная переменная, которая показывает, что соединение установлено по HTTPS, - это HTTP_X_FORWARDED_PROTO, и Drupal не обрабатывает этот параметр для обслуживания контента.

<<< У меня нет обратного прокси или какой-либо расширенной конфигурации, кроме LAMP и Drupal, и только один сайт. >>> Неправильно, я запускал свой сайт с CloudFlare.

Учтите, что мне не нужно решение Drupal, я уже справился с этим. Я хочу знать, почему Apache не отправляет PHP правильные переменные SERVER или что может быть не так с моей конфигурацией.

Спасибо за вашу помощь.

<<< Окончательное редактирование >>> PD: Я использую свой сайт через обратный прокси CloudFlare. Об этом легко забыть после установки. Проверьте мой ответ, чтобы увидеть параметр, который вы должны установить, чтобы получить ожидаемые переменные SERVER.

Проблема заключалась в том, что я забыл, что использую CloudFlare (легко забыть, как только вы его установили). Вот почему HTTP_X_FORWARDED_PROTO сказал HTTPS, потому что я был за обратным прокси.

Моя конфигурация CloudFlare под CRYPTO / SSL с SPDY также сказала: Гибкость. При изменении на полный PHP возвращает ожидаемые переменные HTTPS и SERVER_PORT.