Application Load Balancer を使用して、ドメインを別のドメインにリダイレクトしたいと思います。
簡単な説明
Application Load Balancer サービスは、ドメイン名のリダイレクトと HTTP から HTTPS へのリダイレクトをサポートしています。Application Load Balancer を指すドメインがある場合は、Application Load Balancer を使用してドメインを設定します。
**注:**Amazon Simple Storage Service (Amazon S3) の代わりに Application Load Balancer を使用してドメインを設定するのがベストプラクティスです。
解決策
**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーを受け取った場合は、最新の AWS CLI バージョンを使用していることを確認してください。
設定の一部として Application Load Balancer を使用すると、ドメインを別のドメインにリダイレクトできます。
- Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
- ナビゲーションペインの [ロードバランシング] で **[ロードバランサー]**を選択します。
- ロードバランサーを選択し、[リスナー] タブを選択します。
- 使用するロードバランサーリスナーの [ルールの表示/編集] を選択します。
- [ルールを追加] アイコン (プラス記号) を選択します。
- [ルールを挿入] を選択します。
- [条件を追加] を選択します。
- 条件セクション (IF) で [条件を追加] を選択します。次に、以下の操作を実行します。
[ホストヘッダー] を選択し、ホスト名 (example.com など) を入力します。
保存するには、チェックマークアイコンを選択します。
- アクションセクション (THEN) で、[アクションを追加] を選択します。次に、以下の操作を実行します。
[リダイレクト先] を選択します。
ユースケースに応じて、プロトコルとポートを指定します。
[元のホスト、パス、クエリ] を [カスタムホスト、パス、クエリ] に変更します。
[ホスト] には、「example2.com」 と入力します。
[パス] と [クエリ] については、デフォルト値をそのまま使用します (ユースケースで変更が必要な場合を除く)。
[レスポンス] を HTTP 301 "Permanently moved" または HTTP 302 "Found" に設定します。
保存するには、チェックマークアイコンを選択します。
これで [THEN] セクションが表示されます。
にリダイレクト
ステータスコード: HTTP_301
- [保存] を選択します。
**注:**両方のドメインが同じ Application Load Balancer を指している場合は、以下のタスクのいずれかを実行します。
- 両方のドメインに別々の証明書を用意してください。
- SAN (サブジェクト代替名) 証明書を使用してドメインを検証します。
リダイレクトが機能していることを確認するには、次の手順を実行します。
1.AWS CLI で次の curl 関数を使用します。
curl
-Iv https://example.com -L
* Rebuilt URL to: https://example.com/
. . .
* Connected to example.com (1.2.3.4) port 443 (#0)
<SSL handshake>
> Host: example.com. ------> Host name is example.com
> User-Agent: curl/7.61.1
>
Accept: */*>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
< HTTP/2 301 ------> ALB does redirection
< server: awselb/2.0
< date: Fri, 06 Mar 2020 09:18:33 GMT
< content-type: text/html
< content-length: 150
< location: https://example2.com:443/. ----> redirected to "example2.com"
<
* Issue another request to this URL: 'https://example2.com:443/'. ------> Curl initiates another request that is to example2.com
* Trying 34.195.219.169...
* TCP_NODELAY set
<SSL handshake>
> Host: example2.com. ------> Host name has changed to example2.com
> User-Agent: curl/7.61.1
> Accept: */*
>
* Connection state changed (MAX_CONCURRENT_STREAMS == 128)!
<
HTTP/2 200 ----> We got a response
2.インターネットブラウザに「example.com」と入力し、それが example2.com にリダイレクトされていることを確認します。
注: Application Load Balancer は 301 と 302 のリダイレクトのみをサポートします。これらのリダイレクトにより、クライアントは後続のリクエストで HTTP メソッドを POST から GET に変更できます。307 リダイレクトが必要な場合、リダイレクトはターゲットアプリケーションを経由する必要があります。
関連情報
Amazon Simple Storage Service (Amazon S3) と Amazon Route 53 を使用して、apex ドメインをそのサブドメインにリダイレクトするにはどうすればよいですか?
Application Load Balancers now support multiple TLS certificates with smart selection using Server Name Indication (SNI)