HTTPS は、転送中のデータを暗号化する安全なプロトコルです。 サービスを HTTPS にアップグレードした後、Classic Load Balancer (CLB) を使用して HTTP リクエストを HTTPS にシームレスにリダイレクトできます。 このトピックでは、CLB を使用して HTTP リクエストを HTTPS にリダイレクトする方法について説明します。
主な特長
-
シームレスな移行:HTTP から HTTPS への高速でシームレスなリダイレクトにより、ユーザーは中断なくブラウジングを続けられます。
-
サーバー負荷の軽減:ロードバランサーがリダイレクトを処理し、このタスクをバックエンドサーバーからオフロードします。 これにより、サーバーはコアアプリケーションロジックに集中でき、効率が向上します。
ユースケース
-
HTTPS へのアップグレード:HTTP から HTTPS に移行することで、既存の Web サイトやアプリケーションを保護します。 これにより、データ転送のセキュリティが強化されます。
-
ドメイン名の変更またはサイト移行:Web サイトを新しいドメインに移行する際に、リダイレクトを使用して、ユーザーが中断なくアクセスできるようにします。
例
CLB インスタンスを購入し、HTTP リスナーを設定した企業が、データセキュリティを向上させるために Web サイトを HTTPS にアップグレードする必要があるとします。 アップグレード中のサービス中断を防ぐため、同社は CLB インスタンスを使用して HTTP リクエストを HTTPS にリダイレクトします。 これにより、スムーズな移行が保証され、ビジネスデータが保護されます。
注意事項
-
CLB の HTTP リダイレクト機能は、すべてのリージョンで利用できます。
-
HTTP から HTTPS へのリダイレクトを設定する場合、HTTP リスナーと HTTPS リスナーは同じ CLB インスタンス上にある必要があります。
-
CLB インスタンス上の既存の HTTP リスナーに対して、リスナーによるリダイレクトを有効にすることはできません。 HTTP リスナーを作成する際に、リスナーによるリダイレクトを有効にする必要があります。
前提条件
-
2 つのバックエンドサーバー ECS01 と ECS02 を作成し、それぞれにアプリケーションをデプロイします。 このトピックでは、サーバーは Alibaba Cloud Linux 3.2104 LTS 64-bit オペレーティングシステムを使用します。 詳細については、「ウィザードを使用したインスタンスの作成」をご参照ください。
-
CLB インスタンスを作成します。 このトピックでは、インターネット向け CLB インスタンスを例として使用します。 詳細については、「CLB インスタンスの作成と管理」をご参照ください。
-
証明書を購入するか、サードパーティの証明書を Certificate Management Service にアップロードし、ドメイン名に関連付けます。 詳細については、「証明書を使用した Web サイトでの HTTPS の有効化」をご参照ください。
操作手順
ステップ1:HTTPS リスナーの作成
-
Classic Load Balancer コンソールにログインします。
-
上部メニューで、CLB インスタンスがデプロイされているリージョンを選択します。
-
インスタンス ページで、目的のインスタンスを見つけ、操作 列の リスナーの設定 をクリックします。
-
プロトコルとリスナー ステップで、リスナーを次のように設定し、次へ をクリックします。
このトピックでは、必須パラメーターのみを説明します。 他のすべてのパラメーターはデフォルト値のままにします。 他のパラメーターの詳細については、「HTTPS リスナーの追加」をご参照ください。
-
[リスナープロトコルの選択]:HTTPS。
-
[リスニングポート]:443。
-
-
SSL 証明書 ステップで、既存のサーバー証明書を選択するか、サーバー証明書の選択 ドロップダウンリストから サーバー証明書の作成 をクリックします。他のパラメーターはデフォルト値のままにして、次へ をクリックします。
-
バックエンド サーバー ステップでは、サーバーグループにバックエンドサーバーを追加します。このトピックでは、デフォルトサーバーグループを例に説明します。
-
デフォルトのサーバーグループ を選択し、さらに追加 をクリックします。
-
サーバー パネルで ECS01 と ECS02 を選択し、次に 次へ をクリックします。
-
ポート/重み ステップで、ECS01 と ECS02 のウェイトを設定し、追加 をクリックします。
-
ECS01 と ECS02 の両方のポートを 80 に設定し、次へ をクリックします。
-
-
ヘルスチェック ステップで、デフォルト設定のままにして、次へ をクリックします。
-
確定 ステップで、リスナー設定を確認し、送信 をクリックします。確認ダイアログボックスが表示されたら、OK をクリックします。
ステップ2:HTTP リスナーの転送ルールの設定
-
リスナー タブで、リスナーの作成 をクリックします。
-
プロトコルとリスナーステップで、次の情報を使用してリスナーを設定し、その他の設定はデフォルト値のままにして、次へをクリックします。
パラメーター
説明
[リスナープロトコルの選択]
リスナーが使用するプロトコルです。
このトピックでは、HTTP を選択します。
[リスニングポート]
リクエストを受信し、バックエンドサーバーに転送するポートです。
このトピックでは、このパラメーターを 80 に設定します。
[高度な設定]
編集 をクリックして詳細設定を展開します。
このトピックでは、[リダイレクション] のみを変更します。 他のパラメーターはデフォルト値のままにします。
[リダイレクション]
HTTP リスナーから HTTPS リスナーへのトラフィックのリダイレクトを有効にします。
このトピックでは、リダイレクション を有効にし、対象リスナー としては、「ステップ1:HTTPS リスナーの作成」で作成した HTTPS リスナーを選択します。
-
確定 ページで、送信 をクリックします。設定が正常に完了したら、OK をクリックします。
リスナーによるリダイレクトを有効にすると、CLB インスタンスの HTTP:80 へのすべてのリクエストは HTTPS:443 にリダイレクトされます。 その後、リクエストは HTTPS リスナーの設定に基づいて転送されます。
ステップ3:DNS の設定
-
Alibaba Cloud に登録されていないドメインの場合、DNS レコードを設定する前に、まず Alibaba Cloud DNS コンソールにドメインを追加する必要があります。
-
CLB インスタンスが内部向けインスタンスの場合、まず Elastic IP アドレス (EIP) を関連付けてから、ドメイン名を EIP にマッピングする A レコードを作成して、パブリックアクセスを有効にする必要があります。
-
左側のナビゲーションペインで、を選択します。
-
インスタンス ページで、対象のインスタンスを選択し、その IP をコピーします。
-
次の手順を実行して、A レコードを追加します。
-
Alibaba Cloud DNS コンソールにログインします。
-
インターネットの権威ある DNS 解決 ページで、目的のドメイン名を見つけ、Actions 列の 解決設定 をクリックします。
-
解決設定 ページで、Add Record をクリックします。
-
Add Record パネルで、次のパラメーターを設定します。その他のパラメーターはデフォルト値のままにするか、必要に応じて変更できます。次に、OK をクリックします。
パラメーター
説明
[Record Type]
ドロップダウンリストから A を選択します。
[Hostname]
ドメイン名のプレフィックスです。
説明ルートドメインの場合は、ホスト名を @ に設定します。
[Record Value]
コピーした CLB インスタンスの IP アドレスを入力します。
-
ステップ4:結果の検証
インターネットにアクセスできるクライアントから、CLB インスタンスへの HTTP リクエストが HTTPS にリダイレクトされるかどうかをテストします。
-
クライアントでコマンドラインインターフェイス (CLI) を開きます。
-
curl -v http://<CLB ドメイン名>コマンドを実行します。 返された 302 ステータスコードは、CLB へのリクエストが HTTPS にリダイレクトされたことを示します。C:\Users\admin>curl -v http://your.domain.com * Trying 192.0.2.1:80... * Connected to your.domain.com (192.0.2.1) port 80 > GET / HTTP/1.1 > Host: your.domain.com > User-Agent: curl/8.4.0 > Accept: */* > < HTTP/1.1 302 Found < Date: Wed, 17 Jul 2024 03:13:13 GMT < Content-Type: text/html < Content-Length: 154 < Connection: keep-alive < Location: https://your.domain.com < Via: HTTP/1.1 SLB.94 < <html> <head><title>302 Found</title></head> <body bgcolor="white"> <center><h1>302 Found</h1></center> <hr><center>nginx</center> </body> </html> * Connection #0 to host your.domain.com left intact
リダイレクトステータスコード
次の表では、CLB がサポートするリダイレクション ステータスコードについて説明します。
|
ステータスコード |
説明 |
|
302 |
一時的なリダイレクト。 リソースが一時的に別の URL にあることを示します。 クライアントは、今後のリクエストに元の URL を引き続き使用する必要があります。 |
よくある質問
「リスナーによるリダイレクト」オプションが見つからない
CLB インスタンス上の既存の HTTP リスナーに対して、リスナーによるリダイレクトを有効にすることはできません。 リスナーによるリダイレクトを有効にするには、HTTP リスナーを再作成する必要があります。
関連ドキュメント
CLB はリスナールールに基づいてトラフィックをリダイレクトします。 対照的に、Application Load Balancer (ALB) はアプリケーションレイヤーでリクエストをリダイレクトするため、パスベースまたはヘッダーベースのリダイレクトなど、より高い柔軟性と幅広い設定オプションを提供します。 詳細については、「ALB を使用した HTTP から HTTPS へのリクエストのリダイレクト」をご参照ください。