このトピックでは、Application Load Balancer(ALB)リスナーのドメイン名ベースおよび URL パスベースの転送ルールの構成方法と、書き換えおよびリダイレクトのための高度な URL パスベースの転送ルールの構成方法について説明します。
ドメイン名ベースの転送ルール
ドメイン名ベースの転送ルールでは、特定のドメイン名、ワイルドカードドメイン名、または正規表現を一致条件として指定できます。転送ルールの作成方法の詳細については、「リスナーの転送ルールの管理」トピックの転送ルールの作成セクションをご参照ください。
一致タイプ | 説明 |
完全一致とワイルドカード一致 |
|
正規表現一致 |
|
URL ベースの転送ルール
URL ベースの転送ルールでは、特定の URL、ワイルドカード URL、または正規表現を一致条件として指定できます。転送ルールの作成方法の詳細については、「リスナーの転送ルールの管理」トピックの転送ルールの作成セクションをご参照ください。
一致タイプ | 説明 |
完全一致とワイルドカード一致 |
|
正規表現一致 |
|
書き換えおよびリダイレクトのための高度な URL ベースの転送ルール設定
書き換えルールまたはリダイレクトルールで一致条件として正規表現を指定すると、元の URL は正規表現と一致する変数によって上書きされます。転送ルールの作成方法の詳細については、「リスナーの転送ルールの管理」トピックの転送ルールの作成セクションをご参照ください。
URL ベースの転送条件で正規表現を構成する方法の詳細については、このトピックのURL ベースの転送ルールセクションをご参照ください。
使用上の注意
書き換えルールまたはリダイレクトルールで、1 つ以上の正規表現を一致条件として指定し、かっこ
( )
を使用してキャプチャグループとして定義できます。キャプチャグループの数は、書き換えルールまたはリダイレクトルールの変数の数と同じである必要があります。最大 3 つの変数(
${1}
、${2}
、${3}
)を使用して、元の URL を上書きする URL を形成できます。変数を他の文字に置き換えることはできません。
手順
URL の一致:クライアントがリクエストを送信します。リクエストは、転送ルールで指定された正規表現と一致します。
抽出と置換:キャプチャグループ
( )
からコンテンツを抽出し、${1}
、${2}
、${3}
に書き込みます。コンテンツは、転送アクションの書き換えパスまたはリダイレクトパスを置き換えるために使用されます。スプライシング:変数
${1}
、${2}
、${3}
を上書きした文字列をスプライシングして、新しい URL を形成します。
番号
手順
例
1
転送ルールで転送条件と転送アクションを構成します。
転送条件のパス:
/sys/(.*)/(.*)/aaa
リクエストが書き換えまたはリダイレクトされるパス:
/${1}/${2}
2
クライアントリクエストは、転送ルールのパスと一致します。
リクエストされたパス:
/sys/ccc/bbb/aaa
一致したパス:
/sys/(.*)/(.*)/aaa
3
システムは正規表現から値を抽出し、変数を値に置き換えます。
ccc
とbbb
は、正規表現の(.*)
から抽出され、リクエストが書き換えまたはリダイレクトされるパスの変数 ${1} と ${2} を置き換えます。${1}
はccc
に置き換えられます。${2}
はbbb
に置き換えられます。
4
値が連結されて実際のパスが形成されます。
バックエンドサーバーが受信するパスは
/ccc/bbb
です。例
使用上の注意と手順に基づいて、ALB コンソールで転送ルールを作成できます。
例 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
FAQ
リクエスト URL パスから特定のプレフィックスを削除し、後続のディレクトリに基づいてリクエストを転送するには、転送ルールをどのように構成すればよいですか??
解決策:
www.example.com/api/aaa/bbb/...
宛てのリクエストの URL から /api
を削除し、/api
に続くディレクトリに基づいてリクエストを転送するように ALB を設定するとします。
転送ルールで、[条件の追加] を [パス] に設定し、[正規表現マッチング] を選択し、パスを /api/(.*)
に設定して、URL パスが /api
で始まるすべてのリクエストを一致させます。[アクション] を [書き換え] または [リダイレクト] に設定し、アクション [パス] を /${1}
に設定して、元の URL パスの /api
に続く部分を使用します。
設定例は次のとおりです。
書き換え
リダイレクト
参照
ALB リスナーの他の転送ルールの構成方法の詳細については、リスナーの転送ルールの管理をご参照ください。