web-dev-qa-db-ja.com

Google Compute EngineでHTTP(S)ロードバランサーを使用する場合、すべてのHTTPトラフィックをHTTPSにリダイレクトします

2つのグローバル転送ルール(HTTPおよびHTTPS)を使用して、Google Compute EngineでHTTP/HTTPS負荷分散を設定しています。各ルールは、HTTPのプロトコルを使用するバックエンドサービスを指します。

http://*へのすべてのリクエストをhttps://*に送信してほしい。

ロードバランサーがHTTPを介してバックエンドサービスと通信するため、バックエンドサービスでnginxを取得して301を返信することはできないと思います。

私はGoogle Computeで12の小さな微調整を試しましたが、すべてがGoogle Computeで502を返します。

他の誰かが前にこれを設定したと思います。正しい方向に向けたヒントやアドバイスは大歓迎です。

19
Ryan Leckey

HTTP/HTTPSロードバランサーを使用した同様の設定があり、HTTPSを強制することができました。ロードバランサーから直接実行することはできませんが、バックエンドサービスから設定できます。 Google Cloudロードバランサーは、X-Forwarded-Proto httpヘッダーに値httpまたはhttpsのいずれかを設定します。このヘッダーをバックエンドサービス(この場合はVarnishですが、Nginxでも実行できます)で確認し、値がhttpの場合は301を送り返します。

20

今日この問題に直面し、TCPロードバランシングを使用してそれを解決することができました。HTTP/ HTTPS固有のロードバランサーオプションが必要ない場合は、おそらくTCPポート80と443の両方へのトラフィックを受信するロードバランサー(SSLなし)。ポート80からのトラフィックの場合、301を返信できます。

1
gselva