4

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機能します。

4

1 に答える 1

1

foo などのテストを含む他の変数でこれらのディレクティブを使用すると、問題なく動作します。

最初は単なるアイデアです (誰かがより良いアイデアを持っている場合は喜んで撤回します)

ターゲット プロキシ

ターゲット プロキシは、クライアントからの HTTP(S) 接続を終了し、1 つ以上のグローバル転送ルールによって参照され、着信要求を URL マップにルーティングします。

プロキシは、HTTP 要求/応答ヘッダーを次のように設定します。

  • 経由: 1.1 google(リクエストとレスポンス)
  • X-Forwarded-Proto: [http | https](リクエストのみ)
  • X-Forwarded-For: <client IP(s)>, <global forwarding rule external IP>(要求のみ) ク​​ライアントが移動する仲介者によって追加された X-Forwarded-For エントリに応じて、IP アドレスのコンマ区切りリストにすることができます。セクションの最初の要素は、起点アドレスを示します。

問題は、これがどこに設定されているかです。Apache構成ファイルの場合、構成を変更するだけです。他の場所に設定されている場合は、その場所を見つける必要があります。

TargetHttpsProxies リソースには、それを変更する方法も記載されていませんでした。では、上記の動作につながる構成ファイルを投稿してみませんか?

于 2016-07-26T17:56:33.960 に答える