URL パス ベースのルーティングの概要
URL パス ベースのルーティングを使用すると、要求の URL パスに基づいてバックエンド サーバー プールにトラフィックをルーティングできます。
1 つのシナリオとして、異なる種類のコンテンツの要求を、異なるバックエンド サーバー プールにルーティングします。
次の例では、Application Gateway は 3 つのバックエンド サーバー プール (VideoServerPool、ImageServerPool、DefaultServerPool など) からの contoso.com のトラフィックを処理します。
http://contoso.com/video/* の要求は、VideoServerPool にルーティングされ、http://contoso.com/images/* は ImageServerPool にルーティングされます。 一致するパス パターンがない場合は、DefaultServerPool が選択されます。
Note
要求がルーティングされると、完全な URL パスがバックエンド プールに送信されます。 要求されたリソースが別のパスにある場合 (たとえば、http://contoso.com/video/* への要求で VideoServerPool の背後にあるサイトのルートからビデオを提供する必要がある場合)、URL 書き換えルールを構成するか、バックエンド設定でバックエンド パスをオーバーライドする必要もあります。
重要
v1、v2 どちらの SKU でも、ポータルに一覧表示される順番でルールを処理します。 パス ルールを作成するときは、最も限定的でないパス (ワイルドカードを含む) を最後に指定することをお勧めします。 ワイルドカードが一番上にあると、後続のパス ルールにより限定的な一致がある場合でも、ワイルドカードが優先されます。
基本リスナーが先に表示されていて、なおかつ受信要求と一致した場合、そのリスナーによって要求が処理されます。 ただし、基本リスナーを構成する前に、まずマルチサイト リスナーを構成することを強くお勧めします。 そうすることで、トラフィックが確実に適切なバックエンドにルーティングされます。
UrlPathMap 構成要素
urlPathMap 要素を使用すると、バックエンド サーバー プールのマッピングにパス パターンを指定できます。 次のコード例は、テンプレート ファイルの urlPathMap 要素のスニペットです。
"urlPathMaps": [{
"name": "{urlpathMapName}",
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/urlPathMaps/{urlpathMapName}",
"properties": {
"defaultBackendAddressPool": {
"id": "/subscriptions/ {subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/backendAddressPools/{poolName1}"
},
"defaultBackendHttpSettings": {
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/backendHttpSettingsCollection/{settingname1}"
},
"pathRules": [{
"name": "{pathRuleName}",
"properties": {
"paths": [
"{pathPattern}"
],
"backendAddressPool": {
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/backendAddressPools/{poolName2}"
},
"backendHttpsettings": {
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/backendHttpSettingsCollection/{settingName2}"
}
}
}]
}
}]
PathPattern
PathPattern は照合するパス パターンの一覧です。 各パスは / で始まる必要があります。ワイルドカード文字として * を使用できます。 パス照合に提供する文字列には最初の ?
または #
の後にテキストを含めません (これらの文字は、ここでは許可されません)。 それ以外の場合、URL で許可される文字はすべて PathPattern で許可されます。
パス ルールでは大文字と小文字が区別されません。
パスのパターン | サポートされているか |
---|---|
/images/* |
はい |
/images* |
はい |
/images/*.jpg |
no |
/*.jpg |
no |
/Repos/*/Comments/* |
no |
/CurrentUser/Comments/* |
はい |
パス ルールは、ポータルでの一覧表示に基づいて順番に処理されます。 最も具体性の低いパス (ワイルドカードを含む) は、 最後に処理されるように、一覧の末尾に置く必要があります。 一覧の先頭にワイルドカード ルールが存在する場合は、それらが優先され、最初に処理されます。 次のシナリオ例を参照してください。
例
ワイルドカード (*) が使用されている場合のパスベースのルール処理:
例 1:
/master-dev* to contoso.com
/master-dev/api-core/ to fabrikam.com
/master-dev/* to microsoft.com
ワイルドカード パス /master-dev*
は、より詳細なパスの上に存在するため、/master-dev
を含むすべてのクライアント要求は、特定の /master-dev/api-core/
を含む contoso.com にルーティングされます。 クライアント要求が適切なパスにルーティングされるようにするには、ワイルドカード パスの上に詳細なパスを設定する必要があります。
例 2:
/ (default) to contoso.com
/master-dev/api-core/ to fabrikam.com
/master-dev/api to bing.com
/master-dev/* to microsoft.com
パス パターン /master-dev/*
を使用するすべてのクライアント要求は、リストに示されている順番で処理されます。 パス ルール内で一致が検出されない場合、要求は既定のターゲットにルーティングされます。
詳細については、「URL ベースのルーティングを使用した Resource Manager テンプレート」をご覧ください。
PathBasedRouting ルール
タイプ PathBasedRouting の RequestRoutingRule は、リスナーを urlPathMap にバインドする際に使用します。 このリスナーで受け取られるすべての要求は、urlPathMap に指定されたポリシーに基づいてルーティングされます。 PathBasedRouting ルールのスニペット:
"requestRoutingRules": [
{
"name": "{ruleName}",
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/requestRoutingRules/{ruleName}",
"properties": {
"ruleType": "PathBasedRouting",
"httpListener": {
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/httpListeners/<listenerName>"
},
"urlPathMap": {
"id": "/subscriptions/{subscriptionId}/../microsoft.network/applicationGateways/{gatewayName}/urlPathMaps/{urlpathMapName}"
}
}
}
]
次のステップ
URL ベースのコンテンツ ルーティングについて理解したら、 URL ベースのルーティングを使用した Application Gateway の作成 に関するセクションに移動して、URL ルーティング ルールを使ってアプリケーション ゲートウェイを作成します。