規則集動作
Azure Front Door 規則集 是由規則所組成,其中包含符合條件和動作的組合。 本文提供您可以在規則集中使用的動作詳細描述。 動作會定義套用至符合條件所識別之要求類型的行為。 在規則集中,規則最多可以有五個動作。 Front Door 也支援 規則集動作中的伺服器變數 。
下列動作可用於規則集:
路由組態覆寫
路由 組態覆寫 動作可用來覆寫來源群組或要求的快取組態。 您可以選擇覆寫或接受路由中指定的原始群組組態。 不過,當您覆寫路由設定時,您必須設定快取。 否則,快取會針對要求停用。
您也可以覆寫檔案針對特定要求快取的方式,包括:
- 覆寫原始來源所指定的快取行為。
- 查詢字串參數如何用來產生要求的快取索引鍵。
- 存留時間 (TTL) 值,可控制內容在快取中停留的時間長度。
屬性
屬性 |
支援值 |
覆寫原始群組 |
- 是: 覆寫用於要求的源群組。
- 否: 使用路由中指定的原始群組。
|
快取功能 |
- 已啟用: 強制為要求啟用快取。
- 已停用: 強制停用要求的快取。
|
當 [覆寫原始群組] 設定為 [是] 時,請設定下列屬性:
屬性 |
支援值 |
原始群組 |
要求應路由傳送至的來源群組。 此設定會覆寫 Front Door 端點路由中指定的組態。 |
轉寄通訊協定 |
Front Door 在將要求轉送至來源時要使用的通訊協定。 支援的值為僅限 HTTP、僅限 HTTPS、符合連入要求。 此設定會覆寫 Front Door 端點路由中指定的組態。 |
當 [快取] 設定為 [已啟用] 時,請設定下列屬性:
屬性 |
支援值 |
查詢字串快取行為 |
- 忽略查詢字串: 產生快取索引鍵時,不會考慮查詢字串。 在 ARM 樣本中,將
queryStringCachingBehavior 屬性設定為 IgnoreQueryString 。 - 使用查詢字串: 每個唯一 URL 都有自己的快取索引鍵。 在 ARM 樣本中,使用
queryStringCachingBehavior 的 UseQueryString 。 - 忽略指定的查詢字串: 產生快取索引鍵時,會排除參數中指定的查詢字串。 在 ARM 樣本中,將
queryStringCachingBehavior 屬性設定為 IgnoreSpecifiedQueryStrings 。 - 包含指定的查詢字串: 產生快取索引鍵時,會包含參數中指定的查詢字串。 在 ARM 樣本中,將
queryStringCachingBehavior 屬性設定為 IncludeSpecifiedQueryStrings 。
|
查詢參數 |
查詢字串參數名稱的清單,以逗號分隔。 只有當查詢字串快取行為設定為 [忽略指定的查詢字串] 或 [包含指定的查詢字串] 時,才會設定此屬性。 |
壓縮 |
- 已啟用: Front Door 會動態壓縮邊緣的內容,進而產生更小且更快的回應。 如需詳細資訊,請參閱 檔案壓縮。 在 ARM 樣本中,將
isCompressionEnabled 屬性設定為 Enabled 。 - Disabled。 Front Door 不會執行壓縮。 在 ARM 樣本中,將
isCompressionEnabled 屬性設定為 Disabled 。
|
快取行為 |
- 榮譽來源: Front Door 一律接受原始響應標頭指示詞。 如果來源指示詞遺失,Front Door 會在 1 到 3 天的任何位置快取內容。 在 ARM 樣本中,將
cacheBehavior 屬性設定為 HonorOrigin 。 - 覆寫一律: 從原始來源傳回的 TTL 值會以動作中指定的值覆寫。 只有在回應可快取時,才會套用此行為。 在 ARM 樣本中,將
cacheBehavior 屬性設定為 OverrideAlways 。 - 如果來源遺失,請覆寫: 如果來源未傳回任何 TTL 值,規則會將 TTL 設定為動作中指定的值。 只有在回應可快取時,才會套用此行為。 在 ARM 樣本中,將
cacheBehavior 屬性設定為 OverrideIfOriginMissing 。
|
快取持續時間 |
當快取行為設定為 Override always 或 Override if origin missing 時,這些字段必須指定要使用的快取持續時間。 持續時間上限為366天。 對於 0 秒的值,CDN 會快取內容,但必須使用源伺服器重新驗證每個要求。 只有當快取行為設定為 [一律覆寫] 時,才會設定這個屬性,如果原始來源遺失,則此屬性才會設定為 [覆寫]。- 在 Azure 入口網站 中:指定天、小時、分和秒。
- 在 ARM 範本中:使用
cacheDuration 來指定 格式 d.hh:mm:ss 的持續時間。
|
範例
在此範例中,我們會將所有相符的要求路由傳送至名為 MyOriginGroup
的來源群組,而不論 Front Door 端點路由中的設定為何。
{
"name": "RouteConfigurationOverride",
"parameters": {
"originGroupOverride": {
"originGroup": {
"id": "/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Cdn/profiles/<profile-name>/originGroups/MyOriginGroup"
},
"forwardingProtocol": "MatchRequest"
},
"cacheConfiguration": null,
"typeName": "DeliveryRuleRouteConfigurationOverrideActionParameters"
}
}
{
name: 'RouteConfigurationOverride'
parameters: {
originGroupOverride: {
originGroup: {
id: '/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.Cdn/profiles/<profile-name>/originGroups/MyOriginGroup'
}
forwardingProtocol: 'MatchRequest'
}
cacheConfiguration: null
typeName: 'DeliveryRuleRouteConfigurationOverrideActionParameters'
}
}
在此範例中,我們將快取索引鍵設定為包含名為的 customerId
查詢字串參數。 已啟用壓縮,並接受原始來源的快取原則。
{
"name": "RouteConfigurationOverride",
"parameters": {
"cacheConfiguration": {
"queryStringCachingBehavior": "IncludeSpecifiedQueryStrings",
"queryParameters": "customerId",
"isCompressionEnabled": "Enabled",
"cacheBehavior": "HonorOrigin",
"cacheDuration": null
},
"originGroupOverride": null,
"typeName": "DeliveryRuleRouteConfigurationOverrideActionParameters"
}
}
{
name: 'RouteConfigurationOverride'
parameters: {
cacheConfiguration: {
queryStringCachingBehavior: 'IncludeSpecifiedQueryStrings'
queryParameters: 'customerId'
isCompressionEnabled: 'Enabled'
cacheBehavior: 'HonorOrigin'
cacheDuration: null
}
originGroupOverride: null
typeName: 'DeliveryRuleRouteConfigurationOverrideActionParameters'
}
}
在此範例中,我們會針對尚未指定快取持續時間的相符要求,覆寫快取到期至 6 小時。 Front Door 會在判斷快取索引鍵並啟用壓縮時忽略查詢字串。
{
"name": "RouteConfigurationOverride",
"parameters": {
"cacheConfiguration": {
"queryStringCachingBehavior": "IgnoreQueryString",
"cacheBehavior": "OverrideIfOriginMissing",
"cacheDuration": "0.06:00:00",
},
"originGroupOverride": null,
"typeName": "DeliveryRuleRouteConfigurationOverrideActionParameters"
}
}
{
name: 'RouteConfigurationOverride'
parameters: {
cacheConfiguration: {
queryStringCachingBehavior: 'IgnoreQueryString'
cacheBehavior: 'OverrideIfOriginMissing'
cacheDuration: '0.06:00:00'
}
originGroupOverride: null
typeName: 'DeliveryRuleRouteConfigurationOverrideActionParameters'
}
}
使用修改要求標頭動作,在傳送至來源時修改要求中的標頭。
屬性
屬性 |
支援值 |
運算子 |
- Append: 指定的標頭會新增至具有指定值的要求。 如果標頭已經存在,則會使用字串串連將值附加至現有的標頭值。 未新增分隔符。 在 ARM 樣本中,使用
headerAction 的 Append 。 - 覆寫: 指定的標頭會新增至具有指定值的要求。 如果標頭已經存在,則指定的值會覆寫現有的值。 在 ARM 樣本中,使用
headerAction 的 Overwrite 。 - 刪除: 如果規則中指定的標頭存在,標頭就會從要求中刪除。 在 ARM 樣本中,使用
headerAction 的 Delete 。
|
標頭名稱 |
要修改的標頭名稱。 |
標頭值 |
要附加或覆寫的值。 |
範例
在此範例中,我們會將 值 AdditionalValue
附加至 MyRequestHeader
要求標頭。 如果原點會回應標頭設定為的值 ValueSetByClient
,則套用此動作之後,要求標頭的值會是 ValueSetByClientAdditionalValue
。
{
"name": "ModifyRequestHeader",
"parameters": {
"headerAction": "Append",
"headerName": "MyRequestHeader",
"value": "AdditionalValue",
"typeName": "DeliveryRuleHeaderActionParameters"
}
}
{
name: 'ModifyRequestHeader'
parameters: {
headerAction: 'Append'
headerName: 'MyRequestHeader'
value: 'AdditionalValue'
typeName: 'DeliveryRuleHeaderActionParameters'
}
}
使用修改響應標頭動作來修改回應中存在的標頭,再傳回您的用戶端。
屬性
屬性 |
支援值 |
運算子 |
- Append: 指定的標頭會新增至具有指定值的回應。 如果標頭已經存在,則會使用字串串連將值附加至現有的標頭值。 未新增分隔符。 在 ARM 樣本中,使用
headerAction 的 Append 。 - 覆寫: 指定的標頭會新增至具有指定值的回應。 如果標頭已經存在,則指定的值會覆寫現有的值。 在 ARM 樣本中,使用
headerAction 的 Overwrite 。 - 刪除: 如果規則中指定的標頭存在,標頭就會從響應中刪除。 在 ARM 樣本中,使用
headerAction 的 Delete 。
|
標頭名稱 |
要修改的標頭名稱。 |
標頭值 |
要附加或覆寫的值。 |
範例
在此範例中,我們會先刪除具有回應名稱 X-Powered-By
的標頭,再將其傳回給用戶端。
{
"name": "ModifyResponseHeader",
"parameters": {
"headerAction": "Delete",
"headerName": "X-Powered-By",
"typeName": "DeliveryRuleHeaderActionParameters"
}
}
{
name: 'ModifyResponseHeader'
parameters: {
headerAction: 'Delete'
headerName: 'X-Powered-By'
typeName: 'DeliveryRuleHeaderActionParameters'
}
}
URL 重新導向
使用URL重新 導向 動作,將用戶端重新導向至新的URL。 用戶端會從 Front Door 傳送重新導向回應。
屬性
屬性 |
支援值 |
重新導向類型 |
要傳回給要求者的回應類型。 - 在 Azure 入口網站:發現(302),移動(301),臨時重新導向(307),永久重新導向(308)。
- 在 ARM 樣本中:
Found 、、Moved 、 TemporaryRedirect PermanentRedirect
|
重新導向通訊協定 |
- 在 Azure 入口網站:
Match Request 、、 HTTP HTTPS - 在 ARM 樣本中:
MatchRequest 、、 Http Https
|
目的地主機 |
您想要將要求重新導向至的主機名。 保留空白以保留傳入主機。 |
目的地路徑 |
重新導向中使用的路徑。 包含前置 / 。 保留空白以保留傳入路徑。 |
查詢字串 |
重新導向中使用的查詢字串。 請勿包含前置 ? 。 保留空白以保留傳入查詢字串。 |
目的地片段 |
要用於重新導向的片段。 保留空白以保留傳入片段。 |
範例
在此範例中,我們會將要求重新導向至 https://contoso.com/exampleredirection?clientIp={client_ip}
,同時保留片段。 使用 HTTP 暫存重新導向 (307)。 用戶端的IP位址是用來取代 {client_ip}
URL內的令牌,方法是使用 client_ip
伺服器變數。
{
"name": "UrlRedirect",
"parameters": {
"redirectType": "TemporaryRedirect",
"destinationProtocol": "Https",
"customHostname": "contoso.com",
"customPath": "/exampleredirection",
"customQueryString": "clientIp={client_ip}",
"typeName": "DeliveryRuleUrlRedirectActionParameters"
}
}
{
name: 'UrlRedirect'
parameters: {
redirectType: 'TemporaryRedirect'
destinationProtocol: 'Https'
customHostname: 'contoso.com'
customPath: '/exampleredirection'
customQueryString: 'clientIp={client_ip}'
typeName: 'DeliveryRuleUrlRedirectActionParameters'
}
}
URL 重寫
使用 URL 重寫動作來重寫路由至您來源的要求路徑。
屬性
屬性 |
支援值 |
來源模式 |
在 URL 路徑中定義要取代的來源模式。 目前,來源模式使用基於前置詞的比對。 若要符合所有 URL 路徑,請使用正斜線 (/ ) 作為來源模式值。 |
Destination |
定義重寫中使用的目的地路徑。 目的地路徑會覆寫來源模式。 |
保留未比對的路徑 |
如果設定為 [是],來源模式之後的剩餘路徑會附加至新的目的地路徑。 |
範例
在此範例中,我們會將所有要求重寫至路徑 /redirection
,而且不會保留路徑的其餘部分。
{
"name": "UrlRewrite",
"parameters": {
"sourcePattern": "/",
"destination": "/redirection",
"preserveUnmatchedPath": false,
"typeName": "DeliveryRuleUrlRewriteActionParameters"
}
}
{
name: 'UrlRewrite'
parameters: {
sourcePattern: '/'
destination: '/redirection'
preserveUnmatchedPath: false
typeName: 'DeliveryRuleUrlRewriteActionParameters'
}
}
在 Azure Front Door(傳統版)中,規則引擎最多可以包含 25 個規則,其中包含相符的條件和相關聯的動作。 本文提供您可以在規則中定義之每個動作的詳細描述。
動作會定義套用至符合條件或一組比對條件的要求類型的行為。 在規則引擎設定中,規則最多可以有10個比對條件和5個動作。 在單一規則中,您只能有一個 覆寫路由 設定動作。
下列動作可用於規則引擎組態。
使用這些動作來修改傳送至後端的要求中存在的標頭。
必填欄位
動作 |
HTTP 標頭名稱 |
值 |
附加 |
選取此選項且規則相符時,標頭名稱中指定的標頭會新增至具有指定值的要求。 如果標頭已存在,則會將值附加至現有的值。 |
String |
覆寫 |
選取此選項且規則相符時,標頭名稱中指定的標頭會新增至具有指定值的要求。 如果標頭已經存在,則指定的值會覆寫現有的值。 |
String |
刪除 |
當選取此選項時,具有相符的規則,且規則中指定的標頭存在,標頭就會從要求中刪除。 |
String |
使用這些動作來修改回應中傳回給客戶端的標頭。
必填欄位
動作 |
HTTP 標頭名稱 |
值 |
附加 |
選取此選項且規則相符時,標頭名稱中指定的標頭會使用指定的 Value 新增至回應。 如果標頭已存在, Value 會附加至現有的值。 |
String |
覆寫 |
選取此選項且規則相符時,標頭名稱中指定的標頭會使用指定的 Value 新增至回應。 如果標頭已經存在, Value 會覆寫現有的值。 |
String |
刪除 |
當選取此選項時,具有相符規則,且規則中指定的標頭存在,則標頭會從回應中刪除。 |
String |
路由組態覆寫
路由類型:重新導向
使用這些動作將用戶端重新導向至新的URL。
必填欄位
欄位 |
描述 |
重新導向類型 |
重新導向是將使用者/用戶端從一個URL傳送到另一個URL的方式。 重新導向類型會設定用戶端用來瞭解重新導向用途的狀態代碼。
您可以選取下列重新導向狀態代碼:找到 (302)、已移動 (301)、暫時重新導向 (307) 和永久重新導向 (308)。 |
重新導向通訊協定 |
根據傳入要求保留通訊協定,或定義重新導向的新通訊協定。 例如,針對 HTTP 至 HTTPS 重新導向選取 [HTTPS]。 |
目的地主機 |
將此值設定為變更重新導向 URL 中的主機名,或從傳入要求保留主機名。 |
目的地路徑 |
請根據傳入要求保留路徑,或更新重新導向URL中的路徑。 |
查詢字串 |
設定此值以取代傳入要求 URL 中的任何現有查詢字串,否則會保留原始的查詢字串集。 |
目的地片段 |
目的地片段是 URL 之後的一部分,通常供瀏覽器用來登陸頁面上的特定區段。 將此值設定為將片段新增至重新導向URL。 |
路由類型:轉寄
使用這些動作將用戶端轉送至新的URL。 這些動作也包含 URL 重寫和快取的子動作。
欄位 |
描述 |
後端集區 |
選取要覆寫並處理要求的後端集區,您會在 Front Door 配置檔中看到目前所有預先設定的後端集區。 |
轉寄通訊協定 |
用來將要求轉送至後端的通訊協定,或比對來自傳入要求的通訊協定。 |
URL 重寫 |
建構 URL 重寫要求以轉送至後端時要使用的路徑。 |
快取功能 |
啟用此路由規則的快取。 啟用時,Azure Front Door 會快取靜態內容。 |
URL 重寫
使用此設定可設定選擇性 的自定義轉送路徑 ,以在建構要轉送至後端的要求時使用。
快取功能
使用這些設定來控制檔案如何快取包含查詢字串的要求。 是要根據所有參數或選取的參數來快取內容。 您可以使用這些設定來覆寫存留時間 (TTL) 值,以控制內容保留在快取中的時間長度。 若要強制快取作為動作,請將快取欄位設定為 「已啟用」。當您強制快取時,會出現下列選項:
快取行為 |
描述 |
忽略查詢字串 |
快取資產之後,所有之後的要求都會忽略查詢字串,直到快取的資產到期為止。 |
使用查詢字串 |
每個具有唯一 URL 的要求,包括查詢字串,都會被視為具有其本身快取的唯一資產。 |
忽略指定的查詢字串 |
快取會忽略「查詢參數」設定中列出的要求 URL 查詢字串。 |
包含指定的查詢字串 |
「查詢參數」設定中列出的要求 URL 查詢字串會用於快取。 |
其他欄位 |
描述 |
動態壓縮 |
Front Door 可以動態壓縮邊緣的內容,進而產生更小且更快的回應。 |
查詢參數 |
允許或不允許參數的逗號分隔清單,做為快取的基礎。 |
使用預設快取持續時間 |
設定為使用 Azure Front Door 預設快取持續時間,或定義忽略原始回應指示詞的快取持續時間。 |
下一步