2つのグローバル転送ルール(HTTPおよびHTTPS)を使用して、Google Compute EngineでHTTP/HTTPS負荷分散を設定しています。各ルールは、HTTPのプロトコルを使用するバックエンドサービスを指します。
http://*
へのすべてのリクエストをhttps://*
に送信してほしい。
ロードバランサーがHTTPを介してバックエンドサービスと通信するため、バックエンドサービスでnginxを取得して301
を返信することはできないと思います。
私はGoogle Computeで12の小さな微調整を試しましたが、すべてがGoogle Computeで502
を返します。
他の誰かが前にこれを設定したと思います。正しい方向に向けたヒントやアドバイスは大歓迎です。
HTTP/HTTPSロードバランサーを使用した同様の設定があり、HTTPSを強制することができました。ロードバランサーから直接実行することはできませんが、バックエンドサービスから設定できます。 Google Cloudロードバランサーは、X-Forwarded-Proto httpヘッダーに値httpまたはhttpsのいずれかを設定します。このヘッダーをバックエンドサービス(この場合はVarnishですが、Nginxでも実行できます)で確認し、値がhttpの場合は301を送り返します。
今日この問題に直面し、TCPロードバランシングを使用してそれを解決することができました。HTTP/ HTTPS固有のロードバランサーオプションが必要ない場合は、おそらくTCPポート80と443の両方へのトラフィックを受信するロードバランサー(SSLなし)。ポート80からのトラフィックの場合、301を返信できます。