Google Cloud Platform HTTP ロード バランサでエンドポイント ターミネーションをセットアップし、バックエンドとの通信用のプロトコルとして HTTPS を設定しました。
これは、すべてのリクエスト (HTTP または HTTPS) が apache に対して HTTPS であることを意味します。これの問題は、が に設定されている場合でも、HTTPS環境変数が に設定されることです。onX-Forwarded-Protohttp
私の調査とテストのすべては、逆のケースのみを指しています(いつに設定HTTPSするかはルールによるものです)。onX-Forwarded-ProtohttpsSetEnvIf X-Forwarded-Proto https HTTPS=on
しかし、 のときに設定を解除するものが必要です。HTTPSX-Forwarded-Protohttp
、、およびSSLOptions -StdEnvVarsの多くの組み合わせと同様に、設定を試みました。mod_rewrite を介して設定することは、私にとってはオプションではありません (とにかく機能するかどうかはわかりません)。オフにすることについての興味深い点は、オフにしても、SSL 関連の変数はすべて消えており、構成ファイルでそれを設定しているものは他にないことを確認できます。SetEnvIfSetEnvUnsetEnvStdEnvVarsHTTPS
編集:
サーバー構成、vhost、および htaccess で試したディレクティブの例:
SetEnvIf X-Forwarded-Proto http HTTPS=Off
SetEnvIf X-Forwarded-Proto http HTTPS=0
SetEnvIf X-Forwarded-Proto http !HTTPS
SetEnv HTTPS Off
SetEnv HTTPS 0
SetEnv HTTPS
UnsetEnv HTTPS
これらのディレクティブを他の変数とともに使用すると、次のようなテストが正常にfoo機能します。