Недавно я обновил свой сайт: 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.