すべてのプロダクト
Search
ドキュメントセンター

Server Load Balancer:HTTP リスナーの追加

最終更新日:Feb 04, 2026

リスナーは接続リクエストをチェックします。Web アプリケーションやモバイルゲームなど、ご利用のアプリケーションでデータコンテンツを検査する必要がある場合は、HTTP リスナーを追加して HTTP リクエストを転送できます。

前提条件

操作手順

このトピックでは、HTTP リスナーを作成する 2 つの方法について説明します。

  • HTTP リスナーの作成:ビジネスニーズに基づいて、詳細設定やその他の機能をカスタマイズできます。

  • クイック作成:リスナープロトコル、リスニングポート、バックエンドサーバーグループのみを設定することで、HTTP リスナーを迅速に作成します。

HTTP リスナーの作成

  1. Application Load Balancer (ALB) コンソールにログインします。

  2. トップナビゲーションバーで、ALB インスタンスが配置されているリージョンを選択します。

  3. 次のいずれかの方法で、リスナー設定ウィザードを開きます。

    • インスタンス ページで、対象インスタンスの 操作 列にある [リスナーの作成] をクリックします。

    • インスタンス ページで、管理したい ALB インスタンスの ID をクリックします。リスナー タブで、[リスナーの作成] をクリックします。

  4. リスナーの設定 ステップで、次のパラメーターを設定し、[次へ] をクリックします。

    リスナー設定

    リスナープロトコルの選択

    リスナープロトコルを選択します。

    この例では、[HTTP] が選択されています。

    リスナーポート

    リクエストを受け付け、バックエンドサーバーに転送するためのリスニングポートを入力します。有効なポート値の範囲は 1 から 65535 です。通常、HTTP はポート 80 を、HTTPS はポート 443 を使用します。

    説明

    同じ ALB インスタンス上では、リスニングポートは各プロトコルで一意である必要があります。HTTP リスナーと HTTPS リスナーは同じポートを共有できません。

    この例では、80 を入力します。

    リスナー名

    リスナーの名前を入力します。

    タグ

    [タグキー][タグ値] を設定します。

    タグを設定した後、[リスナー] タブでタグによってリスナーをフィルターできます。

    詳細設定

    [変更] をクリックして詳細設定を展開します。

    アイドル接続タイムアウト期間

    アイドル接続タイムアウトを設定します。有効値:1~600 秒。デフォルト値:15 秒。このクォータを増やすには、[Quota Center] に移動してください。

    タイムアウト期間内にアクセスリクエストが到着しない場合、Server Load Balancer は現在の接続を一時的に中断し、次のリクエストが到着したときに新しい接続を確立します。

    説明

    この機能は HTTP/2 リクエストには適用されません。

    接続リクエストタイムアウト

    リクエストタイムアウトを 1~600 秒の値に設定します。デフォルトは 60 秒です。クォータを増やすには、[Quota Center] でリクエストを送信してください。

    バックエンドサーバーがタイムアウト期間内に応答しない場合、Server Load Balancer は待機を停止し、クライアントに HTTP 504 エラーコードを返します。

    圧縮

    この設定を有効にすると、特定のファイルタイプが圧縮されます。無効にすると、すべてのファイルタイプの圧縮がスキップされます。

    • Brotli は現在、すべてのファイルタイプの圧縮をサポートしています。

    • Gzip は次のファイルタイプをサポートしています:text/xmltext/plaintext/cssapplication/javascriptapplication/x-javascriptapplication/rss+xmlapplication/atom+xmlapplication/xml、および application/json

    説明
    • データ圧縮は、応答の Content-Length 値が 1,024 バイトを超える場合にのみトリガーされます。

    • クライアントリクエストが Brotli と Gzip の両方の圧縮アルゴリズムをサポートしている場合、ALB はより効率的な Brotli を使用します。

    • クライアントリクエストが Gzip のみをサポートし、ファイルタイプが Gzip でサポートされていない場合、ALB はファイルを圧縮しません。

    実際のクライアントソース IP を見つける

    ALB インスタンスが X-Forwarded-For ヘッダーから実際のクライアントソース IP を取得できるようにします。この機能を有効にした後、信頼できる IP リストを設定します。

    • 信頼できる IP リストを 0.0.0.0/0 に設定する:ALB インスタンスは、X-Forwarded-For ヘッダーの左端の IP アドレスを実際のクライアントソース IP として使用します。

    • 信頼できる IP リストを proxy1 IP;proxy2 IP;.. に設定する:ALB インスタンスは、X-Forwarded-For ヘッダーを右から左にスキャンし、信頼リストにない最初の IP アドレスを実際のクライアントソース IP として使用します。

    シナリオ

    X-Forwarded-For ヘッダーに複数の IP アドレスが含まれている場合 (例:X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …)、左端のアドレスが実際のクライアント IP です。ALB 転送ルールで SourceIp マッチングと QPS (クライアントソース IP に基づくレート制限) 機能を使用するには、[実際のクライアントソース IP の取得] スイッチをオンにして、ALB が X-Forwarded-For ヘッダーから実際のクライアントソース IP を識別できるようにします。詳細については、「転送ルールの追加」をご参照ください。

    説明

    Standard Edition および WAF 拡張 ALB インスタンスのみが「実際のクライアントソース IP の取得」機能をサポートしています。Basic Edition の ALB インスタンスはサポートしていません。

    [追加の HTTP ヘッダーフィールド]

    追加したいカスタム HTTP ヘッダーフィールドを選択します:

    • X-Forwarded-For ヘッダーフィールドを有効にして、クライアントの送信元 IP アドレスを取得するかどうかを選択します。

      • [クライアント IP アドレスを保持するために X-Forwarded-For を追加] を選択した場合、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストに X-Forwarded-For ヘッダーを追加するか、リクエストから X-Forwarded-For ヘッダーを削除できます。

        • [追加] (デフォルト)

          [追加] を選択した場合、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストの X-Forwarded-For ヘッダーに最終ホップの IP アドレスを追加します。リクエストに X-Forwarded-For ヘッダーが含まれていない場合、ALB は値が最終ホップの IP アドレスである X-Forwarded-For ヘッダーを作成し、リクエストに追加します。リクエストの X-Forwarded-For ヘッダーには、カンマ (,) で区切られた複数の IP アドレスが含まれる場合があります。

        • [削除]

          [削除] を選択した場合、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストから X-Forwarded-For ヘッダーを削除します。

      • [クライアント IP アドレスを保持するために X-Forwarded-For を追加] を選択しない場合、ALB はリクエストをバックエンドサーバーに転送する前に、リクエストの X-Forwarded-For ヘッダーに対して何もしません。

      フォーマット:

      X-Forwarded-For: <client-ip-address>, <proxy1>, <proxy2>, …

      バックエンドサーバーが受信したリクエストの X-Forwarded-For ヘッダーに関する例を見るにはクリックしてください。

      この例では、最終ホップの IP アドレスは 127.0.0.1 です。

      リクエストの説明

      リクエストの例

      [クライアント IP アドレスを保持するために X-Forwarded-For を追加] を選択

      選択しない [X-Forwarded-For を追加してクライアント IP アドレスを保持]

      追加

      削除

      ALB が受信したリクエストに X-Forwarded-For ヘッダーが含まれていない。

      GET /index.html HTTP/1.1

      Host: example.com

      X-Forwarded-For: 127.0.0.1

      X-Forwarded-For ヘッダーは存在しません。

      X-Forwarded-For ヘッダーは存在しません。

      ALB が受信したリクエストに X-Forwarded-For ヘッダーとクライアント IP アドレスが含まれている。

      GET /index.html HTTP/1.1

      Host: example.com

      X-Forwarded-For: 127.0.0.2

      X-Forwarded-For: 127.0.0.2, 127.0.0.1

      X-Forwarded-For ヘッダーは存在しません。

      X-Forwarded-For: 127.0.0.2

      ALB が受信したリクエストに X-Forwarded-For ヘッダーと複数のクライアント IP アドレスが含まれている。

      GET /index.html HTTP/1.1

      Host: example.com

      X-Forwarded-For: 127.0.0.2, 127.0.0.3

      X-Forwarded-For: 127.0.0.2, 127.0.0.3, 127.0.0.1

      X-Forwarded-For ヘッダーは存在しません。

      X-Forwarded-For: 127.0.0.2, 127.0.0.3

      ALB がクライアント IP アドレスを保持できるようにする方法の詳細については、「Application Load Balancer を介してバックエンドサーバーでクライアントの送信元 IP アドレスを取得する」をご参照ください。

    • SLB-ID ヘッダーフィールドを追加して、SLB インスタンスの ID を取得します。

    • X-Forwarded-Proto ヘッダーフィールドを追加して、インスタンスのリスナープロトコルを取得します。

    • X-Forwarded-Port ヘッダーフィールドを追加して、インスタンスのリスニングポートを取得します。

    • X-Forwarded-Host ヘッダーフィールドを追加して、クライアントが SLB インスタンスへのアクセスに使用するドメイン名を取得します。

    • X-Forwarded-Client-srcport ヘッダーフィールドを追加して、クライアントが SLB インスタンスへのアクセスに使用するポートを取得します。

    説明

    • ALB によって作成され、リクエストに追加される X-Forwarded-For ヘッダーは、常に大文字の「X」で始まります。

    • X-Forwarded-For を除き、上記のヘッダーについて、ALB は上記で説明したルールに従って処理します。その他のヘッダーについては、ALB はリクエスト内で元の形式を保持します。

  5. [サーバーグループの選択] ステップで、サーバーグループを選択し、バックエンドサーバーを表示してから、次へ をクリックします。

  6. 確定 ステップで、設定を確認し、送信 をクリックします。

HTTP リスナーのクイック作成

リスナーを迅速に作成するには、リスナープロトコル、リスニングポート、およびバックエンドサーバーグループを設定するだけで済みます。

  1. Application Load Balancer (ALB) コンソールにログインします。

  2. トップナビゲーションバーで、ALB インスタンスが配置されているリージョンを選択します。

  3. [インスタンス] ページで、対象のインスタンスを見つけ、そのインスタンス ID をクリックします。

  4. [リスナー] タブをクリックします。[リスナー] タブで、[リスナーのクイック作成] をクリックします。

  5. [リスナーのクイック作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。

    リスナー設定

    説明

    リスナープロトコルの選択

    リスナープロトコルを選択します。本トピックでは、HTTP を選択します。

    リスナーポート

    バックエンドサーバーにリクエストを受け付け、転送するフロントエンドポートです。

    一般的なポートを選択するか、ポート番号を入力します。ポート番号は 1 ~ 65535 の範囲内で指定する必要があります。

    リソースグループの選択

    バックエンドサーバーグループが含まれるリソースグループを選択します。

    サーバーグループ

    バックエンドサーバーグループのタイプを選択し、バックエンドサーバーを追加します。

よくある質問

X-Forwarded-For フィールドのなりすましを防ぐ方法は?

  • 別のプロダクトでヘッダーフィールドを指定して、送信元 IP アドレスを記録する:

    例えば、クライアント > CDN > WAF > Server Load Balancer > ECS のアーキテクチャでは、CDN は Ali-Cdn-Real-Ip HTTP ヘッダーフィールドで送信元 IP アドレスを渡します。WAF にサービスを追加する際、クライアント IP 検出方法を Ali-Cdn-Real-Ip ヘッダーフィールドを使用するように設定します。バックエンドの Nginx サーバーでは、送信元 IP アドレスのログ変数を $http_Ali_Cdn_Real_Ip として設定します。

  • レイヤー 4 リスナー (NLB または CLB) に切り替える。これにより、バックエンドサーバーは自動的に送信元 IP アドレスを取得できます。詳細については、「CLB レイヤー 4 リスナーを介してバックエンドサーバーで送信元 IP アドレスを取得する」をご参照ください。

ALB は WebSocket プロトコルをサポートしていますか?

ALB の HTTP リスナーは、デフォルトで WebSocket プロトコルをサポートしています。詳細については、チュートリアル「ALB で WebSocket プロトコルを使用してリアルタイムで情報をプッシュする」をご参照ください。

参考資料

  • ALB は豊富な高度な転送ルールを提供しています。詳細については、「リスナーの転送ルールの管理」をご参照ください。

  • 異常なステータスコードに遭遇した場合は、「ALB のステータスコード」をご参照ください。

  • ヘルスチェックの問題に遭遇した場合は、「ALB のヘルスチェック問題のトラブルシューティング」をご参照ください。

  • その他のシナリオベースのチュートリアルについては、以下をご参照ください:

    • HTTP リクエストを HTTPS リスナーにリダイレクトする:ALB のリスナー転送ルールを使用して、HTTP リクエストを HTTPS にリダイレクトします。これにより、転送中のデータが暗号化され、中間者攻撃やデータ漏洩が防止され、現代のセキュリティ基準を満たすネットワークアーキテクチャを構築するのに役立ちます。

    • トラフィックミラーリング機能を使用して本番トラフィックをステージング環境にミラーリングする:ALB のトラフィックミラーリング機能を使用して、オンラインのトラフィックをステージング環境のバックエンドサーバーにミラーリングすることで、ライブトラフィックをシミュレートします。ALB はこれらのミラーリングされたバックエンドサーバーからの応答を自動的に破棄するため、テスト活動がオンラインのワークロードに影響を与えないことが保証されます。

    • ALB を使用してカナリアリリースを実装する:リスナーの転送ルールを設定して、特定の条件や異なるサーバーグループのトラフィックの重みに基づいて、リクエストの一部を新しいアプリケーションバージョンにルーティングします。これにより、新しいバージョンの安定性を段階的に検証し、カナリアリリースを実現できます。