最近、Web サイトを更新しました: CMS (Drupal)、OS (Ubuntu 14.04)、Apache (2.4.7)。
状況は、https://example.com/whateverPHP は HTTPS を検出できません。$_SERVER['HTTPS']
空なので$_SERVER['SERVER_PORT']
80 を返します。Drupal は HTTPS を検出できず、HTTP ファイル (混合コンテンツ) を提供しているため、問題が発生します。
接続が HTTPS であることを示す唯一の変数は HTTP_X_FORWARDED_PROTO であり、Drupal はコンテンツの提供にこの設定を処理しません。
<<< LAMP と Drupal 以外のリバース プロキシや高度な構成はなく、サイトは 1 つだけです。>>>違います。私は CloudFlare を使用してサイトを運営していました。
Drupal ソリューションは必要ないので、すでにそれを実現しています。Apache が PHP に正しい SERVER 変数を送信しない理由や、設定のどこが間違っているのかを知りたいのです。
ご協力いただきありがとうございます。
<<< 最終編集 >>>PD: 私はリバース プロキシの CloudFlare 経由でサイトを運営しています。インストールしたら忘れてしまいがちです。期待される SERVER 変数を取得するために設定する必要があるオプションを確認するには、私の回答を確認してください。
答え1
問題は、CloudFlare を使用していることを忘れていたことです (一度インストールすると忘れやすくなります)。リバース プロキシの背後にいたため、HTTP_X_FORWARDED_PROTO が HTTPS と表示されたのはそのためです。
CRYPTO / SSL with SPDY の CloudFlare 構成にも、「Flexible」と表示されています。フルに変更すると、PHP は期待される HTTPS および SERVER_PORT 変数を返します。