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

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

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

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

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

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

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

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

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

решение1

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

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

Связанный контент