この Topic では、Application Load Balancer (ALB) リスナーのドメイン名とパスベースの転送ルールを設定する方法について説明します。また、再書き込みおよびリダイレクト操作のための高度なパスベースのルールを設定する方法についても説明します。
ドメイン名ベースの転送ルール
ドメイン名ベースのルールは、完全一致、ワイルドカード、および正規表現のドメイン名をサポートします。転送ルールの追加方法の詳細については、「転送ルールの追加」をご参照ください。
ドメイン名ルール | 説明 |
完全一致とワイルドカード |
|
正規表現一致 |
|
パスベースの転送ルール
パスベースのルールは、完全一致、ワイルドカード、および正規表現のパスをサポートします。転送ルールの追加方法の詳細については、「転送ルールの追加」をご参照ください。
パスルール | 説明 |
完全一致とワイルドカード文字 |
|
正規表現一致 |
|
再書き込みとリダイレクトにおけるパスの高度な設定ルール
転送条件のパスに正規表現を設定した後、再書き込みおよびリダイレクト操作のパスに正規表現の置き換えを使用できます。転送ルールの追加方法の詳細については、「転送ルールの追加」をご参照ください。
転送条件のパス正規表現設定ルールの詳細については、「パスベースの転送ルール」をご参照ください。
注
転送条件の正規表現内の括弧のペア
( )の数は、転送操作の再書き込みまたはリダイレクトパス内の ${n} 変数の数と一致する必要があります。転送操作の再書き込みまたはリダイレクトパスには、変数
${1}、${2}、および${3}のうち 1 つ以上を含める必要があります。これらの変数を他の文字に置き換えることはできません。
置き換えの原則
パスの一致: クライアントは、パスベースの転送ルールの正規表現に一致するリクエストを送信します。
抽出と置き換え: 正規表現の仕様に基づき、最初の 3 つの括弧のペア
( )でキャプチャされたコンテンツは、それぞれ${1}、${2}、および${3}に保存されます。このコンテンツは、転送操作の再書き込みまたはリダイレクトパスでの置き換えに使用されます。連結: 転送操作の再書き込みまたはリダイレクトパスの設定に基づき、
${1}、${2}、および${3}の値が代入され、最終的な再書き込みまたはリダイレクトされたパスが形成されます。
番号
手順
例
1
転送ルールで転送条件と転送操作を設定します。
転送条件のパス:
/sys/(.*)/(.*)/aaaリクエストが再書き込みまたはリダイレクトされるパス:
/${1}/${2}
2
クライアントリクエストは、転送ルールのパスと一致します。
リクエストパス:
/sys/ccc/bbb/aaa一致したパス:
/sys/(.*)/(.*)/aaa
3
フェッチと置き換え
正規表現は、パス内の 2 つの
(.*)キャプチャグループからcccとbbbをフェッチします。これらの値は、再書き込みまたはリダイレクトパス内の ${1} と ${2} 変数を置き換えます。${1}はcccに置き換えられます。${2}はbbbに置き換えられます。
4
パスの連結
バックエンドサーバーが受信したパス:
/ccc/bbb設定例
前述の注と置き換えの原則に基づいて、コンソールで転送ルールを追加できます。
例 1: 転送操作が「再書き込みと転送」の場合
この例では、パス
sys/ccc/bbb/aaaへのリクエストを/ccc/bbbに再書き込みしてから転送する転送ルールを設定する方法を示します。以下は設定例です。
カテゴリ
説明
以下のすべての条件が満たされた場合
パスの正規表現一致
一致条件
リクエストされたパスは、指定された正規表現と一致します。
要件
正規表現には、文字、数字、および次の特殊文字のみを含めることができます:
.-_/=?~^*$:()[]+|。例
リクエストパス:
/sys/ccc/bbb/aaa大文字と小文字を区別する: パスは正規表現
/sys/(.*)/(.*)/aaaと一致します。大文字と小文字を区別しない: パスは正規表現
/sys/(.*)/(.*)/aaaと一致します。
転送操作
書き換え
ドメイン名:
${host}パス:
/${1}/${2}クエリ:
${query}
説明[クエリ] は、URL の疑問符 (?) に続く部分です。
たとえば、URL が
www.example.com/test/test1?x=1の場合、[クエリ] はx=1です。転送先
サーバーグループリストから宛先サーバーグループを選択します。
例 2: 転送操作が「リダイレクト」の場合
この例では、パス
sys/ccc/bbb/aaaへのリクエストを/ccc/bbbにリダイレクトする転送ルールを設定する方法を示します。以下は設定例です。
カテゴリ
説明
以下のすべての条件が満たされた場合
パスの正規表現一致
一致条件
リクエストされたパスは、指定された正規表現と一致します。
入力要件
正規表現には、文字、数字、および次の特殊文字のみを含めることができます:
.-_/=?~^*$:()[]+|。例
リクエストパス:
/sys/ccc/bbb/aaa大文字と小文字を区別する: 正規表現が
/sys/(.*)/(.*)/aaaの場合、パスは一致します。大文字と小文字を区別しない: 正規表現が
/sys/(.*)/(.*)/aaaの場合、パスは一致します。
転送操作
リダイレクト
プロトコル:
$protocolドメイン名:
${host}ポート:
${port}パス:
/${1}/${2}クエリ:
${query}ステータスコード:
301
よくある質問
ALB で特定のパスプレフィックスを削除し、多層パス一致をサポートする転送ルールを設定するにはどうすればよいですか?
リクエストパスから特定のプレフィックスを削除し、後続の多層パスと一致させる転送ルールを設定するには、次の設定例を使用します。
例: ALB が www.example.com/api/aaa/bbb/... へのアクセスリクエストを転送する場合、パスから /api プレフィックスを削除し、/api に続く多層パスを一致させる必要があります。
再書き込みまたはリダイレクト操作を使用できます。パスを設定する際、正規表現 ^/api/(.*) を使用して /api で始まるすべてのパスを一致させます。次に、転送操作のパスを /${1} に設定します。これにより、一致したパスが /api に続くすべてのものに置き換えられます。具体的な設定は次のとおりです。
再書き込み

リダイレクト

関連ドキュメント
ALB リスナーの他の転送ルールを設定するには、「リスナー転送ルールの設定」をご参照ください。