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


18

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

すべてのリクエストをhttp://*に行きたいですhttps://*

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

私はグーグルコンピュートで12の小さな調整を試してみましたが、それらはすべてグーグルコンピュートがを返すことになり502ます。

他の誰かがこれを以前に設定したことがあると思います。正しい方向へのヒントやポインタは大歓迎です。


現在、HTTP / HTTPSロードバランサーでは、HTTPからHTTPSへのリダイレクト(SSLを使用)はサポートされていません。Webサーバー(apache、nginxなど)でリダイレクトを構成する必要があります。とはいえ、Compute Engineの公開問題トラッカー(code.google.com/p/google-compute-engine/issues/list)にこの機能のリクエストを提出することをheしないでください。
ファイザン

ありがとうございました; 問題をオープンしました:code.google.com/p/google-compute-engine/issues/…–
Ryan

わかりました、機能リクエストをエンジニアリングに転送しました。
ファイザン

@Faizan-この機能が利用可能になる予定はありますか?機能が要求されてから約2年が経ちました。回避策は不格好です。
タロンクス

このリクエストの新しいリンクはissuetracker.google.com/issues/35904733です(ただし、古いリンクは引き続きリダイレクトされます)。
ダニエルコンプトン

回答:


19

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


8
ありがとう!後世のために: if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }
ライアンレッキー

あなたはHTTPを使用する必要があります426。その他のヘッダーではなく、301読み取りをアップグレードstackoverflow.com/questions/17873247/...
ビクラムTiwariさん

3
Vikramには同意しません。SEOの目的には301を使用する必要があります。4xxファミリコードを返す場合、ページランクは、古いhttpからhttpsへのリンクからは移動しません。少なくともあなたのサイトでSEOが気になるなら、301が期待されるコードです。
キリル

1
@VikramTiwari、投稿の回答は実際には次のように述べています。「http://からhttps://にアップグレードすることすらまったくありません」
-Rambatino

1

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


1
TCPロードバランシングはポート80で許可されていませんdoc > TCPプロキシロードバランシングは次のポートをサポートしています:
25、43、110、143、195、443、465、587、700、993、995、1883、5222
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.