Application Load Balancer を使用して、あるドメインを別のドメインにリダイレクトするにはどうすればよいですか? 

最終更新日: 2021 年 2 月 5 日

Application Load Balancer を使用して、あるドメインを別のドメインにリダイレクトするにはどうすればよいですか?

簡単な説明

Application Load Balancer サービスは、ドメイン名のリダイレクトと HTTP から HTTPS へのリダイレクトをサポートします。Application Load Balancer をポイントするドメインがある場合は、Amazon Simple Storage Service (Amazon S3) ではなく、Application Load Balancer を使用してリダイレクトを設定することがベストプラクティスです。

解決方法

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

設定の一部としてApplication Load Balancer を使用している場合は、それを使用してあるドメインを別のドメインにリダイレクトできます。

  1. Amazon Elastic Compute Cloud (Amazon EC2) コンソールを開きます。
  2. ナビゲーションペインにある [Load Balancing] (ロードバランシング) で、[Load Balancers] (ロードバランサー) を選択します。
  3. ロードバランサーを選んで、[Listeners] (リスナー) を選択します。
  4. 使用するロードバランサーリスナーの [View/edit rules] (ルールの表示/編集) を選択します。
  5. [Add rule] (ルールを追加する) アイコン (プラス記号) を選択します。
  6. [Insert Rule] (ルールを挿入) を選択します。
  7. [Add condition] (条件の追加) を選択します。
  8. 条件のセクション (IF) で、[Add condition] (条件の追加) を選択します。
    [Host header] (ホストヘッダー) を選択し、ホスト名 (例: example.com) を入力します。
    保存のために、チェックマークアイコンをオンにします。
  9. アクションのセクション (THEN) で、[Add action] (アクションの追加) を選択します。
    [Redirect to] (リダイレクト先) を選択します。
    ユースケースにおける必要に応じて、プロトコルとポートを指定します。
    [Original host, path, query] (デフォルトホスト、パス、クエリを使用...) を [Custom host, path, query] (カスタムホスト、パス、クエリを使用...) に変更します。
    [Host] (ホスト) で、example2.com と入力します。
    [Path] (パス) と [Query] (クエリ) で、デフォルト値をそのまま使用します (ユースケースで変更が必要な場合を除く)。
    [Response] (レスポンス) を [HTTP 301 "Permanently moved"] (HTTP 301「完全に移動されました」 ) または [HTTP 302 "Found"] (HTTP 302「見つかりました」) に設定します。
    保存のために、チェックマークアイコンをオンにします。
    THEN セクションが表示されます。
    https://example2.com:443/#{path}?#{query} にリダイレクトする
    ステータスコード: HTTP_301
  10. [Save] (保存) を選択します。

: 両方のドメインが同じ Application Load Balancer をポイントしている場合は、次のことを確認してください。

  • 両方のドメインに別々の証明書を持っている、または
  • ドメインを検証するために SAN (Subject Alternative Name) 証明書を使用している

リダイレクトが機能していることを確認するには:

1.    AWS CLI で、curl 関数を使用します。

curl
    -Iv https://example1.com -L
* Rebuilt URL to: https://example1.com/
. . . 
* Connected to example1.com (1.2.3.4) port 443 (#0)
<SSL handshake> 
> Host: example1.com.   ———> Host name is example1.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.    インターネットブラウザで example1.com と入力し、example2.com にリダイレクトされていることを確認します。