このトピックでは、Application Load Balancer (ALB) インスタンスのリスナーの転送ルールを管理する方法について説明します。 ALBリスナーのリスナーの転送ルールをカスタマイズして、クライアント要求を1つ以上のサーバーグループのバックエンドサーバーに転送し、応答をクライアントに転送できます。
概要
ALBインスタンスの各リスナーに対して複数の転送ルールを作成できます。 転送ルールは、インバウンド転送ルールとアウトバウンド転送ルールに分けられます。 基本ALBインスタンスは、インバウンド転送ルールのみをサポートします。 標準およびWAF対応のALBインスタンスは、インバウンドおよびアウトバウンド転送ルールをサポートしています。 各転送ルールは、条件とアクションで構成されます。 リクエストが転送ルールで指定された条件に一致すると、転送ルールで指定されたアクションが実行されます。 転送ルールでは、1つ以上の条件と1つ以上のアクションを指定できます。
標準のALBインスタンスまたはWAF対応のALBインスタンスがリクエストを受信した後、ALBインスタンスは受信転送ルールに基づいてバックエンドサーバーにリクエストを配信します。 その後、バックエンドサーバーからの応答は、ALBインスタンスのアウトバウンド転送ルールに基づいて処理され、クライアントに返されます。
インバウンド転送ルールを作成するときは、インバウンド条件とアクションのみを指定できます。
アウトバウンド転送ルールを作成するときは、インバウンド条件とアウトバウンド条件の両方を指定できます。 ただし、アウトバウンド転送ルールでは、アウトバウンドアクションのみを指定できます。
各転送ルールには、[転送] 、[リダイレクト] 、または [固定応答を返す] アクションが1つ含まれている必要があります。 これにより、ALBインスタンスは中断なくクライアント要求を転送できます。
説明基本ALBインスタンスは、インバウンド転送ルールのみをサポートします。 標準およびWAF対応のALBインスタンスは、インバウンドおよびアウトバウンド転送ルールをサポートしています。
表 1. 基本ALBインスタンスでサポートされる転送ルール
方向
条件
Action
インバウンド転送ルール
ドメイン名、パス、およびHTTPヘッダー
転送とリダイレクト
表 2. 標準インスタンスとWAF対応インスタンスでサポートされている転送ルール
方向
条件
Action
インバウンド転送ルール
ドメイン名、パス、HTTPヘッダー、クエリ文字列、HTTPリクエストメソッド、Cookie、ソースIP
Forward、Redirect、Return Fixed Responses、Rewrite、Add Header、Remove Header、Throttle Traffic、Mirror Traffic、CORS
送信転送ルール
インバウンド条件 (オプション): ドメイン名、パス、HTTPヘッダー、クエリ文字列、HTTPリクエストメソッド、Cookie、ソースIP
アウトバウンド条件: 応答ステータスコードおよび応答ヘッダー
固定応答の返却、ヘッダーの追加、ヘッダーの削除
一致ポリシー
一致ポリシー: 各クライアント要求は、優先度の高い順に転送ルールと一致します。 ルール番号が小さいほど優先度が高いことを示す。 転送ルールが一致すると、トラフィックはルールに基づいて直ちに転送され、一致プロセスは終了します。
カスタムインバウンド転送ルールと一致しないリクエストは、デフォルトの転送ルールに基づいて転送されます。
カスタムアウトバウンド転送ルールに一致しない応答は、ALBによってクライアントに直接返されます。
パスが /*
に設定されている場合、すべてのパスへのリクエストは一致していると見なされます。 予期しないリクエストを転送する場合は、転送条件のパスを /*
に設定し、転送アクションをReturn Fixed Responsesに設定し、ステータスコードを404または403に設定します。 転送ルールを設定したら、ルールリストの最後から2番目の位置にルールをドラッグアンドドロップします。
転送ルールの優先度: リクエストは、優先度の高い順に転送ルールと照合されます。 数字が小さいほど、優先度が高くなります。
デフォルト転送ルール: リスナーを作成すると、デフォルトのインバウンド転送ルールが自動的に作成されます。 転送条件は-
に設定されます。これは、すべてのクライアント要求が一致すると見なされることを示します。 転送アクションは [転送] に設定されています。 この場合、トラフィックはリスナーに関連付けられているサーバーグループに転送されます。
デフォルトの転送ルールは削除できません。 ただし、転送アクションを設定することで、宛先サーバーグループを変更できます。 デフォルトの転送ルールの優先度は最も低く、調整できません。
制限事項
基本的なALBインスタンスの転送ルールを作成する場合、条件をドメイン名、パス、またはHTTPヘッダーに設定し、アクションを転送またはリダイレクトに設定できます。 他の条件とアクションを指定する場合は、ALBインスタンスを標準またはWAF対応のALBインスタンスにアップグレードします。 詳細については、「ALBインスタンスの設定の変更」をご参照ください。
基本ALBインスタンス、標準ALBインスタンス、およびWAF対応ALBインスタンスの機能とクォータの詳細については、「機能と機能」および「ALBクォータ」をご参照ください。
転送ルールで指定できるアクションの最大数、一致条件、およびワイルドカード文字一致ルールの詳細については、「転送ルールごとのリソース割り当て」をご参照ください。
前提条件
サーバーグループが作成され、バックエンドサーバーがサーバーグループに追加されます。 詳細については、「サーバーグループの作成と管理」をご参照ください。
標準またはWAF対応ALBインスタンスが作成され、リスナーが設定されています。 詳細については、「ALBインスタンスの作成」をご参照ください。
転送ルールの作成
リスナーの作成時に、デフォルトの転送ルールを設定できます。 リスナーの作成後に転送ルールを追加することもできます。
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされています。
インスタンスページで、管理するインスタンスのIDをクリックします。
リスナータブで、管理するリスナーを見つけ、アクション列で転送ルールの表示 /変更をクリックします。
転送ルールタブで、受信転送ルールまたはアウトバウンド転送ルールを選択し、新しいルールの追加をクリックします。
転送ルールの追加セクションで、次のパラメーターを設定し、OKをクリックします。
説明各条件のアクション間の論理演算子はORです。 条件に複数のアクションを指定すると、いずれかのアクションに一致するリクエストが転送されます。
異なる条件間の論理演算子はANDです。 転送ルールで複数の条件を指定した場合、すべての条件が満たされたときにリクエストが転送されます。
インバウンド転送ルールの作成
パラメーター
説明
名前
カスタムルールの名前を指定します。 名前を入力しないと、システムは自動的に名前を生成します。
転送ルールに指定できる名前は1つだけです。
条件
次のいずれかの条件を指定します。 [+ 条件の追加] をクリックして、さらに条件を追加することもできます。
ドメイン名: 1つ以上のドメイン名を指定します。 ドメイン名照合ルールの長さは3 ~ 128文字である必要があります。 アスタリスク (*) と疑問符 (?) をワイルドカード文字として使用できます。 アスタリスク (*) は文字列にすることができ、疑問符 (?) は単一の文字列にすることができます。 ドメイン名ベースの転送ルールでは、特定のドメイン名、ワイルドカードドメイン名、または正規表現を転送条件として指定できます。 詳細については、「ドメイン名ベースの転送ルール」をご参照ください。
この例では、
* .example.com
を入力します。パス: 1つ以上のURLを指定します。 URLまたは正規表現を指定できます。 詳細については、「URLベースの転送ルール」をご参照ください。
たとえば、URLが
www.example.com/test/test1?x=1&y=2
の場合、パラメーターを/test/*
に設定できます。HTTPヘッダー: KeyフィールドにHTTPヘッダーの名前を、valueフィールドにHTTPヘッダーの値を指定します。 HTTPヘッダーのキーは1 tp 40文字で、英数字、アンダースコア (_) 、ハイフン (-) を使用できます。 HTTPヘッダーの値は1 ~ 128文字で、印刷可能な文字を含めることができます。 スペースで開始または終了してはなりません。
たとえば、キーを
user-agent
に設定し、値を* Mozilla/4.0*
に設定できます。クエリ文字列: 1つ以上のクエリ文字列のキーと値のペアを追加します。 キーの長さは1 ~ 100文字で、値は1 ~ 128文字である必要があります。 クエリ文字列には、小文字、アスタリスク (*) 、および疑問符 (?) を使用できます。 スペース文字や
# [ ] { } \ | < > &
の特殊文字は使用できません。たとえば、URLが
www.example.com/test/test1?x=1&y=2
の場合、クエリ文字列をx:1
またはy:2
に設定できます。HTTPリクエストメソッド: 1つ以上のHTTPリクエストメソッドを追加します。 有効な値: HEAD、GET、POST、OPTIONS、PUT、PATCH、DELETE。
Cookie: 1つ以上のCookieを追加します。 キーの長さは1 ~ 100文字で、値は1 ~ 128文字でなければなりません。 cookieには、小文字、アスタリスク (*) 、および疑問符 (?) を含めることができます。 スペース文字や [ ] { } < > \ # | & の特殊文字は使用できません。
たとえば、キーを
key
に、値をvalue
に設定できます。送信元IP: 1つ以上のIPアドレスまたはCIDRブロックを追加します。 ゼロアドレス (0.0.0.0/x) はサポートされていません。
例:
192.168.1.1/32
Action
次のいずれかのアクションを指定します。 [+ アクションの追加] をクリックして、さらにアクションを追加することもできます。
転送: ドロップダウンリストからサーバーグループを選択します。 サポートされているサーバーグループタイプには、server、IP、およびFunction Computeタイプが含まれます。 複数のサーバーグループを追加し、追加したすべてのサーバーグループに対してセッション維持機能を有効にすることができます。
リダイレクト: [プロトコル] ドロップダウンリストからプロトコルを選択し、[ステータスコード] ドロップダウンリストからステータスコードを選択します。 リクエストのリダイレクト先の [ドメイン名] 、[ポート] 、[パス] を指定し、[検索] フィールドにクエリ文字列を入力します。 [プロトコル] 、[ドメイン名] 、[ポート] 、[パス] 、[検索] を同時に空のままにしたり、パラメーターにデフォルト値を同時に使用したりすることはできません。
説明リダイレクトアクションのパスを設定する方法の詳細については、「書き換えとリダイレクトの高度なURLベースの転送ルール設定」をご参照ください。
${x} を指定した場合、レスポンスで返された値が使用されます。 それ以外の場合、各リクエストで指定されたデフォルト値が使用されます。
HTTPステータスコードの詳細については、「HTTPステータスコード」をご参照ください。
固定応答を返す: [応答ステータスコード] フィールドでHTTPステータスコードを指定し、[応答コンテンツタイプ] を選択し、[応答コンテンツ] を入力します。 応答ステータスコードは、2xx、4xx、および5xxのいずれかの数値文字列である必要があります。 文字xは、0から9までの数を示す。
書き換え: [ドメイン名] 、[パス] 、[検索] を指定します。 設定方法の詳細については、パスのための書き換えアクション, see書き換えとリダイレクトのための高度なURLベースの転送ルール設定.
ヘッダーの追加: 条件に一致するリクエストに追加するヘッダーのキーと値を指定します。 新しく追加されたヘッダーは、既存のヘッダーを上書きします。 キーの長さは1 ~ 40文字で、英数字、アンダースコア (_) 、およびハイフン (-) を使用できます。 値は1 ~ 128文字で、印刷可能な文字と文字を使用できます。 スペース文字で開始または終了することはできません。
ヘッダーの削除: 削除するヘッダーのキーを指定します。 次に、指定されたヘッダーのキーと値の両方が削除されます。
説明インバウンド転送ルールでアクションを [ヘッダーの追加] または [ヘッダーの削除] に設定した場合、
slb-id
、slb-ip
、x-forwarded-for
、x-forwarded-proto
、x-forwarded-eip
、x-forwarded-port
、x-forwarded-client-srcport
、connection
、upgrade
、content-length
、transfer-encoding
、keep-alive
、te
、host
、cookie
、remoteip
、authority
。 ヘッダーは大文字と小文字を区別しません。Throttle Traffic: ビジネス要件に基づいて次のパラメーターを設定します。
QPS (合計): 1秒あたりの最大クエリ数 (QPS) を指定します。 有効な値: 1 ~ 1000000
QPS (Per Client IP): 送信元クライアントIPアドレスのQPSの最大数を指定します。 有効な値: 1 ~ 1000000 QPS (Total) とQPS (Per Client IP) の両方を設定した場合、QPS (Per Client IP) の値はQPS (Total) の値より小さくなければなりません。
説明アクションがThrottle Trafficに設定されている場合は、移行先サーバーグループのForwardアクションも指定する必要があります。 それ以外の場合、設定は有効になりません。
[スロットルトラフィック] と [転送] の両方を設定した場合、1秒あたりのクエリ数 (QPS) がしきい値に達する前に、リクエストは指定されたサーバーグループに転送されます。 それ以外の場合、HTTP 503ステータスコードがクライアントに返されます。
[スロットルトラフィック] 、[リダイレクト] 、および [転送] を設定した場合、QPSがしきい値に達する前に、リクエストは指定されたサーバーグループに転送されます。 QPSがしきい値に達すると、リクエストは別のアドレスにリダイレクトされます。
Throttle Traffic、Return Fixed Responses、およびForwardを設定した場合、QPSがしきい値に達する前に、リクエストは指定されたサーバーグループに転送されます。 QPSがしきい値に達すると、お客様が設定した応答がクライアントに返されます。
X-Forwarded-Forリクエストヘッダーに
X-Forwarded-For: <client-IP-address> 、<proxy1> 、<proxy2> 、...
などの複数のipアドレスが含まれている場合、左端のIPアドレスがクライアントIPアドレスになります。 転送ルールの一致条件を送信元IPおよびQPS (クライアントごとのIP) に設定する場合は、リスナーのクライアントIPの取得をオンにして、ALBがX-Forwarded-forヘッダーからクライアントIPアドレスを取得できるようにする必要があります。 詳細については、「HTTPリスナーの追加」および「HTTPSリスナーの追加」をご参照ください。
トラフィックのミラーリング: ドロップダウンリストからサーバーグループを選択します。 [サーバータイプ] または [IP] タイプのサーバーグループを選択できます。
IPタイプのサーバーグループを選択する場合は、次の項目に注意してください。
内部対応サーバーのみを追加できます。 インターネットサーバーはサポートされていません。
IPタイプのバックエンドサーバーを、同じVPC内のALBインスタンス、Network Load Balancer (NLB) インスタンス、またはClassic Load Balancer (CLB) インスタンスに追加することはできません。
ループが存在しないことを確認してください。 ALBは、各リクエストにALICLOUD-ALB-TRACE HTTPヘッダーを追加してループを検出します。 ループが検出された場合、ALBはバックエンドサーバーへのリクエストの転送を停止し、ネットワークストームが発生してすべてのリソースが枯渇した場合に備えて463ステータスコードを返します。
クロスリージョン転送には、Enterprise EditionトランジットルーターとExpress Connect回線を使用できます。 Basic Editionトランジットルーターはサポートされていません。
同じCENインスタンスの場合、各リージョンに1つ以上のALBインスタンスが異なるリージョンにデプロイされたバックエンドサーバーを使用するVPCを1つのみ設定できます。
同じリージョン内の異なるVPCのALBインスタンスは、同じトランジットルーターを使用してバックエンドサーバーにアクセスすることはできません。
同じリージョン内の異なるVPCのALBインスタンスは、異なるトランジットルーターを使用して同じバックエンドサーバーにアクセスすることはできません。
ALBインスタンスとバックエンドサーバー間のネットワークトラフィックは、システムルートテーブルのみに基づいてルーティングできます。 VPCカスタムルートテーブルはサポートされていません。
CORS: 応答がURLから返され、プロトコル、ドメイン名、またはポートがクライアントから要求されたものと異なる場合、クロスオリジンリソース共有 (CORS) が有効になります。 クロスオリジンリクエストは、シンプルリクエストとプリフライトリクエストに分けられます。
信頼できる発信元: ブラウザーを介してクロスリージョンリソースにアクセスできるURLを指定します。
許可された方法: 指定されたURLがクロスオリジンリソースにアクセスするために使用できるHTTP方法を指定します。 有効な値: GET、POST、PUT、DELETE、HEAD、OPTIONS、PATCH。
信頼できるリクエストヘッダー: ブラウザの組み込みヘッダーとは別に、CORSリクエストで実行できるヘッダーを指定します。
信頼できるレスポンスヘッダー: ブラウザーまたはJavaScriptで解析できるレスポンスヘッダーを指定します。
信頼できる資格情報: CORSリクエストで資格情報を許可するかどうかを指定します。 有効な値: AllowおよびDeny。 デフォルト値: 許可。
ブラウザキャッシュ時間: OPTIONSメソッドを使用するプリフライトリクエストをキャッシュできる最大期間を指定します。 単位は秒です。 有効値: -1 ~ 172800
アウトバウンド転送ルールの作成
パラメーター
説明
名前
カスタムルールの名前を指定します。 名前を入力しない場合、システムは自動的に名前を生成します。
転送ルールに指定できる名前は1つだけです。
インバウンド条件 (オプション)
インバウンド条件を選択します。 [+ 受信条件の追加] をクリックすると、さらに受信条件を追加できます。 インバウンド転送ルールで条件を設定する方法の詳細については、「転送ルールの作成」をご参照ください。
アウトバウンド条件
アウトバウンド条件を選択します。 [+ 送信条件の追加] をクリックすると、送信条件を追加できます。
応答ステータスコード: クライアントに返す応答ステータスコードを指定します。 有効な値: 100〜599。
コード範囲を指定し、複数のコードとコード範囲をコンマ (,) (200 233,301など) で区切ることができます。
レスポンスヘッダー: レスポンスに含まれるHTTPヘッダーを指定します。 [キー] フィールドにHTTPヘッダーの名前を入力し、[値] フィールドにHTTPヘッダーの値を入力します。 複数のHTTPヘッダーを指定できます。
Action
送信アクションを選択します。 [+ アクションの追加] をクリックすると、さらにアウトバウンドアクションを追加できます。
固定応答を返す: [応答ステータスコード] フィールドでHTTPステータスコードを指定し、[応答コンテンツタイプ] を選択し、[応答コンテンツ] を入力します。 応答ステータスコードは、2xx、4xx、および5xxのいずれかの数値文字列である必要があります。 文字xは、0から9までの数を示す。
ヘッダーの追加: レスポンスに追加するヘッダーの名前と値を指定します。 新しく追加されたヘッダーは、既存のヘッダーを上書きします。
ヘッダーの削除: 削除するヘッダーのキーを指定します。 次に、指定されたヘッダーのキーと値の両方が削除されます。
説明送信転送ルールでは、
connection
、upgrade
、content-length
、transfer-encoding
のヘッダーキーに [ヘッダーの追加] または [ヘッダーの削除] を設定することはできません。 ヘッダーキーは大文字と小文字を区別しません。
AScriptを使用したスクリプトの作成
[+ 転送ルールの適用後にスクリプトを追加] をクリックして、スクリプトを追加できます。 詳細については、「手順2: 転送ルールをカスタマイズするスクリプトの作成」をご参照ください。
説明AScript機能を使用するには、次の要件が満たされていることを確認します。
標準またはWAF対応のALBインスタンスが作成されています。
転送ルールの変更
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされています。
インスタンスページで、管理するインスタンスのIDをクリックします。
リスナータブで、管理するリスナーを見つけ、アクション列で転送ルールの表示 /変更をクリックします。
転送ルールタブで、受信転送ルールまたはアウトバウンド転送ルールを選択し、編集するルールを選択し、右上隅で編集をクリックします。
ルールを変更したら、保存をクリックします。
転送ルールの優先度の変更
転送ルールは、優先度の高い順に評価されます。 より低い値は、より高い優先度を指定する。 カスタム転送ルールの優先度はいつでも変更できます。 デフォルトの転送ルールの優先度は変更できません。
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされています。
インスタンスページで、管理するインスタンスのIDをクリックします。
リスナータブで、管理するリスナーを見つけ、アクション列で転送ルールの表示 /変更をクリックします。
転送ルールタブで、受信転送ルールまたはアウトバウンド転送ルールをクリックし、管理する転送ルールを目的の位置に移動し、優先度の変更を保存をクリックします。
転送ルールの削除
リスナーのカスタム転送ルールはいつでも削除できます。 デフォルトの転送ルールは削除できません。 リスナーを削除すると、リスナーのすべての転送ルールが削除されます。
ALBコンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされています。
インスタンスページで、管理するインスタンスのIDをクリックします。
リスナータブで、管理するリスナーを見つけ、アクション列で転送ルールの表示 /変更をクリックします。
転送ルールタブで、受信転送ルールまたはアウトバウンド転送ルールをクリックし、削除するルールを選択し、右上隅の [削除] をクリックします。
表示されるメッセージで、[OK] をクリックします。
関連ドキュメント
転送条件でドメイン名とパスを設定する方法、および書き換えとリダイレクトのための高度なURLベースの転送ルールの詳細については、「ドメイン名ベースまたはURLベースの転送ルールの作成」をご参照ください。
HTTPリクエストをHTTPSリスナーにリダイレクトする方法の詳細については、「HTTPリクエストをHTTPSリスナーにリダイレクトする」をご参照ください。
本番トラフィックをステージング環境にミラーリングする方法の詳細については、「本番トラフィックをステージング環境にミラーリングする」をご参照ください。
ALBを使用してカナリアリリースを実装する方法の詳細については、「ALBを使用してカナリアリリースを実装する」をご参照ください。
CreateRule: 転送ルールを作成します。
CreateRules: 転送ルールを一度に作成します。
DeleteRule: 転送ルールを削除します。
DeleteRules: 転送ルールを一度に削除します。
ListRules: 転送ルールを照会します。
UpdateRuleAttribute: 転送ルールを更新します。
UpdateRulesAttribute: 複数の転送ルールの設定を更新します。