Classic Load Balancer (CLB) は、リスナーレベルですべての HTTP リクエストを HTTPS リスナーに自動的にリダイレクトできます。これにより、ユーザーに対してアップグレードを透過的に保ち、バックエンドサーバーからリダイレクトロジックをオフロードします。これは、アプリケーションコードを変更せずにサイト全体を HTTP から HTTPS にアップグレードする場合に適しています。
リスナーによるリダイレクトは、HTTP リスナーの作成時にのみ有効にできます。既存の HTTP リスナーでは有効にできません。HTTP リスナーが既に存在する場合は、リダイレクトを有効にして新しいリスナーを作成してください。
仕組み
HTTP リクエストが HTTP リスナー (ポート 80) に到着します。
CLB は 302 リダイレクト応答を発行し、クライアントを HTTPS リスナー (ポート 443) に誘導します。
クライアントは HTTPS 経由で接続します。バックエンドサーバーは HTTPS トラフィックのみを処理します。
制限事項
HTTP から HTTPS へのリダイレクトは、すべてのリージョンで利用可能です。
HTTP リスナーと HTTPS リスナーは、同じ CLB インスタンスに属している必要があります。
リスナーによるリダイレクトは、HTTP リスナーの作成時にのみ有効にできます。既存のリスナーでは有効にできません。
前提条件
開始する前に、以下が準備できていることを確認してください:
アプリケーションがデプロイされた 2 台のバックエンドサーバー (ECS01 と ECS02)。このガイドでは、64 ビットの Alibaba Cloud Linux 3.2104 LTS を使用します。設定手順については、「カスタム起動タブでのインスタンスの作成」をご参照ください。
インターネット向けの CLB インスタンス。詳細については、「CLB インスタンスの作成と管理」をご参照ください。
Certificate Management Service にアップロードされ、ドメイン名に関連付けられたサーバー証明書。 「Certificate Management Service の使用開始」をご参照ください。
テストアプリケーションをデプロイするためのサンプルコマンド
ECS01 へのデプロイ:
yum install -y nginx
systemctl start nginx.service
cd /usr/share/nginx/html/
echo "Hello World ! This is ECS01." > index.htmlECS02 へのデプロイ:
yum install -y nginx
systemctl start nginx.service
cd /usr/share/nginx/html/
echo "Hello World ! This is ECS02." > index.htmlステップ 1: HTTPS リスナーの作成
CLB コンソール にログインします。
Classic Load Balancer (CLB) コンソールにログインします。
上部のナビゲーションバーで、CLB インスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、CLBインスタンスを見つけ、[アクション] 列の[リスナー設定] をクリックします。
「プロトコルとリスナー」ステップで、以下のパラメーターを設定し、[次へ] をクリックします。ここに記載されていないパラメーターについては、デフォルト値のままにしてください。パラメーターの完全なリファレンスについては、「HTTPS リスナーの追加」をご参照ください。
パラメーター 値 リスナープロトコルの選択 HTTPS リスナーポート 443 Certificate Management Service ステップで、[サーバー証明書] ドロップダウンリストからサーバー証明書を選択するか、[サーバー証明書の作成] をクリックして作成します。 その他のパラメーターはデフォルト値のままにし、[次へ] をクリックします。
バックエンドサーバー のステップで、ECS01 と ECS02 をデフォルトサーバーグループに追加します:
[デフォルトサーバーグループ] を選択し、[さらに追加] をクリックします。
[サーバー] パネルで ECS01 と ECS02 を選択し、[次へ] をクリックします。
「ポート/重み」ステップで、ECS01 および ECS02 の重みを設定し、[追加] をクリックします。
ECS01 と ECS02 の両方について、ポートを [80] に設定し、[次へ] をクリックします。
「ヘルスチェック」ステップで、デフォルト値のまま、[次へ] をクリックします。
[確認] ステップで、リスナー構成を確認し、[送信] をクリックします。確認メッセージで [OK] をクリックします。
ステップ 2: リダイレクト機能付き HTTP リスナーの作成
[リスナー]タブで、[リスナーの追加]をクリックします。
[プロトコルとリスナー] ステップで、以下のパラメーターを設定し、[次へ] をクリックします。[リスナーによるリダイレクト] にアクセスするには、[詳細設定] の横にある [変更] をクリックします。
CLB の HTTP リダイレクト機能は、すべてのリージョンで利用可能です。パラメーター 値 [リスナープロトコルの選択] HTTP [リスナーポート] 80 [リスナーによるリダイレクト] 有効化します。[リスナー] を、ステップ 1 で作成した HTTPS リスナーに設定します。 [確認] ステップで、[送信] をクリックし、次に [OK] をクリックします。
これで、ポート 80 のすべての HTTP リクエストはポート 443 にリダイレクトされ、HTTPS リスナーによって処理されます。
ステップ 3: DNS A レコードの設定
Alibaba Cloud で登録されていないドメインの場合、DNS レコードを作成する前に、まず ドメインを Alibaba Cloud DNS に追加する必要があります。CLB インスタンスが内部向けの場合は、まず Elastic IP アドレス (EIP) を関連付け、その後、ドメイン名を EIP にマップします。
左側のナビゲーションペインで、[CLB] > [インスタンス] を選択します。
[インスタンス] ページで、CLB インスタンスを探してその [エンドポイント] をコピーします。
Alibaba Cloud DNS コンソールにログインします。
[権威DNS解決] ページでドメイン名を見つけ、[操作] 列の [DNS設定] をクリックします。
[DNS 設定] ページで、[レコードの追加] をクリックします。
[レコードの追加] パネルで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター 値 レコードタイプ A ホスト名 ドメインプレフィックス。サブドメインの場合は wwwを、ルートドメインの場合は@を入力します。記録値 CLB インスタンスの IP アドレス (ステップ 2 でコピーしたエンドポイント)。
ステップ 4: リダイレクトの検証
インターネットにアクセスできるマシンから次のコマンドを実行します:
curl -v http://<CLB インスタンスのドメイン名>応答の 302 ステータスコードは、CLB が HTTP リクエストを HTTPS にリダイレクトしていることを確認します。

HTTP リダイレクトのステータスコード
CLB は、すべての HTTP から HTTPS へのリダイレクトに対して 302 (一時的なリダイレクト) ステータスコードを返します。
| ステータスコード | 説明 |
|---|---|
| 302 | 一時的なリダイレクト。リクエストされたリソースは一時的に移動しました。クライアントは今後のリクエストで元の URL を使用し続ける必要があります。 |
よくある質問
リスナー設定に「リスナーによるリダイレクト」が表示されないのはなぜですか?
リスナーによるリダイレクトは、HTTP リスナーの作成中にのみ表示されます。既存の HTTP リスナーでは利用できません。リダイレクトを有効にするには、新しい HTTP リスナーを作成してください。
次のステップ
CLB はリスナーレベルでリクエストをリダイレクトします。URL ベース、ヘッダーベース、または恒久的な (301) リダイレクトルールが必要な場合は、Application Load Balancer (ALB) を使用してください。詳細については、「HTTP リクエストを HTTPS リスナーにリダイレクトする」をご参照ください。