URL 路徑型路由概觀
URL 路徑型路由可讓您根據要求的 URL 路徑,將流量路由傳送至後端伺服器集區。
有一個案例是將對於不同內容類型的要求路由傳送至不同的後端伺服器集區。
下列範例中,應用程式閘道會針對 contoso.com 從三個後端伺服器集區提供流量,例如:VideoServerPool、ImageServerPool 和 DefaultServerPool。
對 http://contoso.com/video/* 的要求會路由至 VideoServerPool,而對 http://contoso.com/images/* 的要求則會路由至 ImageServerPool。 如果沒有任何路徑模式相符,則會選取 DefaultServerPool。
注意
路由傳送要求時,會將完整 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 是要比對的路徑模式清單。 每個路徑都必須以 / 開頭,而且可以使用 * 作為萬用字元。 傳送給路徑比對器的字串沒有在第一個 ?
或 #
之後加入任何文字,而這些是此處不允許使用的字元。 否則,PathPattern 中會允許 URL 中允許的任何字元。
路徑規則不區分大小寫。
路徑模式 | 是否支援? |
---|---|
/images/* |
是 |
/images* |
是 |
/images/*.jpg |
否 |
/*.jpg |
否 |
/Repos/*/Comments/* |
否 |
/CurrentUser/Comments/* |
是 |
系統會依入口網站所列的順序處理路徑規則。 最不特定的路徑 (具有萬用字元) 應該放在清單結尾,讓系統最後才加以處理。 如果清單頂端有萬用字元規則,則其優先順序最高,且系統會優先加以處理。 查看下列範例情節。
範例
使用萬用字元 (*) 時的路徑型規則處理方式:
範例 1:
/master-dev* to contoso.com
/master-dev/api-core/ to fabrikam.com
/master-dev/* to microsoft.com
因為萬用字元路徑 /master-dev*
出現在更精細的路徑之上,所以包含 /master-dev
的所有用戶端要求都會路由傳送至 contoso.com,包括特定的 /master-dev/api-core/
。 為了確保用戶端要求會路由傳送至適當的路徑,請務必讓精細路徑位於萬用字元路徑之上。
範例 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 型路由建立應用程式閘道 ,利用 URL 路由規則來建立應用程式閘道。