HTTPSは、データ伝送を保護するために使用されるプロトコルです。 HTTPからHTTPSにアップグレードした後、ユーザー側で変更せずにHTTPリクエストをHTTPSリスナーにリダイレクトできます。
前提条件
ALBインスタンスが作成されました。 HTTPリスナーとHTTPSリスナーがALBインスタンスに追加されます。 HTTPSリスナーはポート443を使用します。 詳細については、以下のトピックをご参照ください。
HTTPリクエストを送信するためにElastic Compute Service (ECS) インスタンスが作成されます。 ECSインスタンスとALBインスタンスは同じVPCにあります。
HTTPリクエストをHTTPSポートにリダイレクトする
転送ルールを作成して、HTTPリクエストをHTTPSポート (ポート443) にリダイレクトできます。
- ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、管理するALBインスタンスのIDをクリックします。
[リスナー] タブでHTTPリスナーを見つけ、[操作] 列の [転送ルールの表示 /変更] をクリックします。
[転送ルール] タブで、[新しいルールの追加] をクリックします。
[転送ルールの追加] セクションで、[名前] と次のパラメーターを指定し、[OK] をクリックします。
条件
説明
転送条件
[パス] を選択します。 この例では、/* を入力します。
転送操作
[リダイレクト] を選択します。
プロトコル: この例では、HTTPSが選択されています。
ドメイン名: デフォルト値 ${host} を使用します。
ポート: HTTPSリスナーのポート番号を入力します。 この例では、値は443に設定されています。
パス: デフォルト値 ${Path} を使用します。
クエリ: デフォルト値 ${Query} を使用します。
ステータスコード: この例では301が使用されています。
[転送ルール] タブで、作成した転送ルールをリストの一番上にドラッグし、右上隅の [優先度の変更を保存] をクリックして、転送ルールに最高の優先度を割り当てることができます。
転送ルールがリストの一番上に既にリストされている場合は、この手順をスキップします。
転送ルールを設定すると、HTTPリクエストはHTTPSポートであるポート443にリダイレクトされます。
ECSインスタンスにリモートでログインし、
curl -v http://<ALB domain name>
コマンドを実行して、ECSインスタンスからのHTTPリクエストをALBインスタンスのHTTPSポートにリダイレクトできるかどうかをテストします。 ECSインスタンスにリモートでログインする方法の詳細については、「接続方法」をご参照ください。次の図は、HTTP 301ステータスコードが返されたことを示しています。これは、ALBインスタンス宛てのHTTPリクエストがHTTPSポートにリダイレクトされることを示しています。
HTTPヘッダーに基づいてリクエストをリダイレクトする
Accept-Languageヘッダー値がzh-CN、zhであり、ALBドメイン名を宛先としているリダイレクトアクションをドメイン名 https://www.example.com にリダイレクトするように設定できます。
- ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、管理するALBインスタンスのIDをクリックします。
[リスナー] タブでHTTPリスナーを見つけ、[操作] 列の [転送ルールの表示 /変更] をクリックします。
[転送ルール] タブで、[新しいルールの追加] をクリックします。
[転送ルールの追加] セクションで、[名前] と次のパラメーターを指定し、[OK] をクリックします。
条件
説明
転送条件
[HTTPヘッダー] を選択します。
キー: この例では、Accept-Languageを入力します。
値: この例では、zh-CN,zhが入力されます。
転送操作
[リダイレクト] を選択します。
プロトコル: この例では、HTTPSが選択されています。
ドメイン名: この例では、www.example.comが入力されます。
ポート: HTTPSリスナーのポート番号を入力します。 この例では、値は443に設定されています。
パス: デフォルト値 ${Path} を使用します。
クエリ: デフォルト値 ${Query} を使用します。
ステータスコード: この例では、302が選択されています。
[転送ルール] タブで、作成した転送ルールをリストの一番上にドラッグし、右上隅の [優先度の変更を保存] をクリックして、転送ルールに最高の優先度を割り当てることができます。
転送ルールがリストの一番上に既にリストされている場合は、この手順をスキップします。
リダイレクトアクションを設定すると、Accept-Languageヘッダー値がzh-CN、zhであり、ALBドメイン名を宛先とするリクエストは、ドメイン名 https://www.example.com にリダイレクトされます。
ECSインスタンスにリモートでログインし、
curl -H "Accept-Language: zh-CN,zh" <ALB domain name>
コマンドを実行して、ECSインスタンスからのHTTPリクエストをドメイン名 https://www.example.com にリダイレクトできるかどうかをテストします。次の図は、HTTP 302ステータスコードが返されたことを示しています。これは、ALBインスタンス宛てのHTTPリクエストがドメイン名 https://www.example.com にリダイレクトされることを示しています。
リダイレクトのステータスコード
ALBリダイレクトのデフォルトのHTTPステータスコードは301です。 必要に応じてHTTPステータスコードを指定できます。 次の表に、ALBでサポートされているHTTPステータスコードを示します。
HTTPステータスコード | 説明 |
301 | 永続的なリダイレクトを示します。 要求されたリソースは、新しいURLに永久に移動される。 クライアントからのリクエストはすべて新しいURLを使用することを推奨します。 |
302 | 一時的なリダイレクトを示します。 要求されたリソースは一時的に移動されます。 クライアントは元のURLを引き続き使用できます。 |
303 | 302に似ています。 POSTリクエストはGETリクエストにリダイレクトされます。 |
307 | 302に似ています。 POSTリクエストはGETリクエストにリダイレクトされません。 |
308 | 301に似ています。 POSTリクエストはGETリクエストにリダイレクトされません。 |