規則比對條件
在 Azure Front Door 規則集中,規則是由一或多個比對條件和動作所組成。 本文提供您可以在 Azure Front Door 規則集中使用之比對條件的詳細描述。
在 Azure Front Door (傳統) 規則引擎中,規則是由一或多個比對條件和動作所組成。 本文提供您可以在 Azure Front Door (傳統) 規則引擎中使用的比對條件詳細描述。
規則會以比對條件或一組比對條件開始。 規則最多可以有10個比對條件。 比對條件會識別特定類型的要求,以便針對這類要求執行已定義的動作。 如果您使用多個比對條件,它們會使用 AND 邏輯分組在一起。 針對支援多個值的比對條件,會使用 OR 邏輯。
例如,您可以使用比對條件來:
- 根據特定 IP 位址、連接埠或國家/地區篩選要求。
- 依標頭資訊篩選要求。
- 從行動裝置或桌面電腦裝置篩選要求。
- 依要求檔名和擴展名篩選要求。
- 依主機名、SSL 通訊協定、要求 URL、通訊協定、路徑、查詢字串、post 自變數和其他值來篩選要求。
- 根據特定 IP 位址或國家/地區來篩選要求。
- 依標頭資訊篩選要求。
- 從行動裝置或桌面電腦裝置篩選要求。
- 依要求檔名和擴展名篩選要求。
- 依要求 URL、通訊協定、路徑、查詢字串、post 引數和其他值來篩選要求。
裝置類型:
使用裝置類型比對條件,以識別從行動裝置或桌面裝置提出的要求。
屬性
屬性 |
支援值 |
運算子 |
- 在 Azure 入口網站中:
Equal 、Not Equal - 在 ARM 範本中:
Equal ;使用 negateCondition 屬性指定 Not Equal
|
值 |
Mobile , Desktop |
範例
在此範例中,我們會比對所有偵測為來自行動裝置的要求。
{
"name": "IsDevice",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"Mobile"
],
"typeName": "DeliveryRuleIsDeviceConditionParameters"
}
}
{
"name": "IsDevice",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"Mobile"
],
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleIsDeviceConditionParameters"
}
}
{
name: 'IsDevice'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'Mobile'
]
typeName: 'DeliveryRuleIsDeviceConditionParameters'
}
}
{
name: 'IsDevice'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'Mobile'
]
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRuleIsDeviceConditionParameters'
}
}
HTTP 版本
使用 HTTP 版本比對條件,以識別使用特定 HTTP 通訊協定版本提出的要求。
注意
HTTP 版本 比對條件僅適用於 Azure Front Door 標準/進階。
屬性
屬性 |
支援值 |
運算子 |
- 在 Azure 入口網站中:
Equal 、Not Equal - 在 ARM 範本中:
Equal ;使用 negateCondition 屬性指定 Not Equal
|
值 |
2.0 、 、 1.1 、 1.0 0.9 |
範例
在此範例中,我們會比對所有使用 HTTP 2.0 通訊協定來傳送的要求。
{
"name": "HttpVersion",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"2.0"
],
"typeName": "DeliveryRuleHttpVersionConditionParameters"
}
}
{
name: 'HttpVersion'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'2.0'
]
typeName: 'DeliveryRuleHttpVersionConditionParameters'
}
}
要求 Cookie
使用要求 Cookie 比對條件,以識別包含特定 Cookie 的要求。
注意
要求 Cookie 比對條件僅適用於 Azure Front Door Standard/Premium。
屬性
屬性 |
支援值 |
Cookie 名稱 |
代表 Cookie 名稱的字串值。 |
運算子 |
標準運算子清單中的任何運算子。 |
值 |
一或多個字串或整數值,代表要比對的要求標頭值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 |
標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對所有包含名為 deploymentStampId
、且值為 1
之 Cookie 的要求。
{
"name": "Cookies",
"parameters": {
"selector": "deploymentStampId",
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"1"
],
"transforms": [],
"typeName": "DeliveryRuleCookiesConditionParameters"
}
}
{
name: 'Cookies'
parameters: {
selector: 'deploymentStampId'
operator: 'Equal'
negateCondition: false
matchValues: [
'1'
]
typeName: 'DeliveryRuleCookiesConditionParameters'
}
}
Post 引數
使用 post 引數比對條件,根據 POST 要求本文內提供的引數來識別要求。 單一比對條件會比對 POST 要求本文中的單一引數。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
注意
post 引數比對條件適用於 application/x-www-form-urlencoded
內容類型。
屬性
屬性 |
支援值 |
Post 引數 |
代表 POST 引數名稱的字串值。 |
運算子 |
標準運算子清單中的任何運算子。 |
值 |
一或多個字串或整數值,代表要比對的 POST 引數值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 |
標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對在要求本文中提供了 customerName
引數,且 customerName
的值以字母 J
或 K
開頭的所有 POST 要求。 我們會使用大小寫轉換將輸入值轉換為大寫,讓值都以 J
、j
、K
和 k
開頭,而全都相符。
{
"name": "PostArgs",
"parameters": {
"selector": "customerName",
"operator": "BeginsWith",
"negateCondition": false,
"matchValues": [
"J",
"K"
],
"transforms": [
"Uppercase"
],
"typeName": "DeliveryRulePostArgsConditionParameters"
}
{
"name": "PostArgs",
"parameters": {
"selector": "customerName",
"operator": "BeginsWith",
"negateCondition": false,
"matchValues": [
"J",
"K"
],
"transforms": [
"Uppercase"
],
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRulePostArgsConditionParameters"
}
{
name: 'PostArgs'
parameters: {
selector: 'customerName'
operator: 'BeginsWith'
negateCondition: false
matchValues: [
'J'
'K'
]
transforms: [
'Uppercase'
]
typeName: 'DeliveryRulePostArgsConditionParameters'
}
}
{
name: 'PostArgs'
parameters: {
selector: 'customerName'
operator: 'BeginsWith'
negateCondition: false
matchValues: [
'J'
'K'
]
transforms: [
'Uppercase'
]
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRulePostArgsConditionParameters'
}
}
查詢字串
使用查詢字串比對條件,識別包含特定查詢字串的要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
注意
整個查詢字串會被視為單一字串來比對,不含前置 ?
。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算子。 不過,當搭配 query string 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
查詢字串 |
一或多個字串或整數值,代表要比對的查詢字串值。 請勿在查詢字串開頭加上 ? 。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 |
標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對查詢字串中包含字串 language=en-US
的所有要求。 我們想要讓比對條件區分大小寫,因此我們不轉換大小寫。
{
"name": "QueryString",
"parameters": {
"operator": "Contains",
"negateCondition": false,
"matchValues": [
"language=en-US"
],
"typeName": "DeliveryRuleQueryStringConditionParameters"
}
}
{
"name": "QueryString",
"parameters": {
"operator": "Contains",
"negateCondition": false,
"matchValues": [
"language=en-US"
],
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleQueryStringConditionParameters"
}
}
{
name: 'QueryString'
parameters: {
operator: 'Contains'
negateCondition: false
matchValues: [
'language=en-US'
]
typeName: 'DeliveryRuleQueryStringConditionParameters'
}
}
{
name: 'QueryString'
parameters: {
operator: 'Contains'
negateCondition: false
matchValues: [
'language=en-US'
]
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRuleQueryStringConditionParameters'
}
}
遠端位址
遠端位址比對條件會根據要求者的位置或 IP 位址來識別要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
- 在指定 IP 位址區塊時使用 CIDR 標記法。 IP 位址區塊的語法是基底 IP 位址,後面接著正斜線和首碼大小。 例如:
- IPv4 範例:
5.5.5.64/26
會比對來自 5.5.5.64 到 5.5.5.127 的任何要求。
- IPv6 範例:
1:2:3:/48
會比對來自位址 1:2:3:0:0:0:0:0 到 1:2:3: ffff:ffff:ffff:ffff:ffff 的任何要求。
- 指定多個 IP 位址和 IP 位址區塊時,會套用 'OR' 邏輯。
- IPv4 範例:如果您新增兩個 IP 位址
1.2.3.4
和 10.20.30.40
,則會比對來自位址 1.2.3.4 或 10.20.30.40 的任何要求。
- IPv6 範例:如果您新增兩個 IP 位址
1:2:3:4:5:6:7:8
和 10:20:30:40:50:60:70:80
,則會比對來自位址 1:2:3:4:5:6:7:8 或 10:20:30:40:50:60:70:80 的任何要求。
- 遠端位址代表來自網路連線的原始用戶端 IP,或者,如果使用者位於 Proxy 後方,則通常是 X-Forwarded-For 要求標頭。 如果您需要根據 TCP 要求的 IP 位址進行比對,請使用通訊端位址比對條件 (標準/進階中可用)。
屬性
屬性 |
支援值 |
運算子 |
- 在 Azure 入口網站中:
Geo Match 、Geo Not Match 、IP Match 或 IP Not Match - 在 ARM 範本中:
GeoMatch 、IPMatch ;使用 negateCondition 屬性指定地區不符或 IP 不符
|
值 |
- 針對
IP Match 或 IP Not Match 運算子:指定一或多個 IP 位址範圍。 如果指定了多個 IP 位址範圍,則會使用 OR 邏輯加以評估。 - 針對
Geo Match 或 Geo Not Match 運算子:使用其國碼 (地區碼) 指定一或多個位置。
|
範例
在此範例中,我們會比對要求不是源自美國的所有要求。
{
"name": "RemoteAddress",
"parameters": {
"operator": "GeoMatch",
"negateCondition": true,
"matchValues": [
"US"
],
"typeName": "DeliveryRuleRemoteAddressConditionParameters"
}
}
{
"name": "RemoteAddress",
"parameters": {
"operator": "GeoMatch",
"negateCondition": true,
"matchValues": [
"US"
],
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleRemoteAddressConditionParameters"
}
}
{
name: 'RemoteAddress'
parameters: {
operator: 'GeoMatch'
negateCondition: true
matchValues: [
'US'
]
typeName: 'DeliveryRuleRemoteAddressConditionParameters'
}
}
{
name: 'RemoteAddress'
parameters: {
operator: 'GeoMatch'
negateCondition: true
matchValues: [
'US'
]
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRuleRemoteAddressConditionParameters'
}
}
要求本文
要求本文比對條件會根據出現在要求本文中的特定文字來識別要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
注意
如果要求本文的大小超過 64 KB,則要求本文比對條件只會考量前 64 KB。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算子。 不過,當搭配 request body 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 |
一或多個字串或整數值,代表要比對的要求本文值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 |
標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對要求本文中包含字串 ERROR
的所有要求。 我們會先將要求本文轉換為大寫再評估相符項目,讓 error
和其他大小寫變體也會觸發此比對條件。
{
"name": "RequestBody",
"parameters": {
"operator": "Contains",
"negateCondition": false,
"matchValues": [
"ERROR"
],
"transforms": [
"Uppercase"
],
"typeName": "DeliveryRuleRequestBodyConditionParameters"
}
}
{
"name": "RequestBody",
"parameters": {
"operator": "Contains",
"negateCondition": false,
"matchValues": [
"ERROR"
],
"transforms": [
"Uppercase"
],
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestBodyConditionParameters"
}
}
{
name: 'RequestBody'
parameters: {
operator: 'Contains'
negateCondition: false
matchValues: [
'ERROR'
]
transforms: [
'Uppercase'
]
typeName: 'DeliveryRuleRequestBodyConditionParameters'
}
}
{
name: 'RequestBody'
parameters: {
operator: 'Contains'
negateCondition: false
matchValues: [
'ERROR'
]
transforms: [
'Uppercase'
]
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestBodyConditionParameters'
}
}
要求檔案名稱
要求檔案名稱比對條件會識別在要求 URL 中包含指定檔案名稱的要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算子。 不過,當搭配 request file name 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 |
一或多個字串或整數值,代表要比對的要求檔案名稱值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 |
標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對要求檔案名稱為 media.mp4
的所有要求。 我們會先將檔案名稱轉換為小寫再評估相符項目,讓 MEDIA.MP4
和其他大小寫變體也會觸發此比對條件。
{
"name": "UrlFileName",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"media.mp4"
],
"transforms": [
"Lowercase"
],
"typeName": "DeliveryRuleUrlFilenameConditionParameters"
}
}
{
"name": "UrlFileName",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"media.mp4"
],
"transforms": [
"Lowercase"
],
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlFilenameConditionParameters"
}
}
{
name: 'UrlFileName'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'media.mp4'
]
transforms: [
'Lowercase'
]
typeName: 'DeliveryRuleUrlFilenameConditionParameters'
}
}
{
name: 'UrlFileName'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'media.mp4'
]
transforms: [
'Lowercase'
]
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlFilenameConditionParameters'
}
}
要求副檔名
要求副檔名比對條件會識別在要求 URL 的檔案名稱中包含指定副檔名的要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
注意
請勿包含前置句點。 例如,使用 html
而不是 .html
。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算子。 不過,當搭配 request file extension 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 |
一或多個字串或整數值,代表要比對之要求副檔名的值。 請勿包含前置句點。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 |
標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對要求副檔名為 pdf
或 docx
的所有要求。 我們會先將要求副檔名轉換為小寫再評估相符項目,讓 PDF
、DocX
和其他大小寫變體也會觸發此比對條件。
{
"name": "UrlFileExtension",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"pdf",
"docx"
],
"transforms": [
"Lowercase"
],
"typeName": "DeliveryRuleUrlFileExtensionMatchConditionParameters"
}
{
"name": "UrlFileExtension",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"pdf",
"docx"
],
"transforms": [
"Lowercase"
],
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlFileExtensionMatchConditionParameters"
}
{
name: 'UrlFileExtension'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'pdf'
'docx'
]
transforms: [
'Lowercase'
]
typeName: 'DeliveryRuleUrlFileExtensionMatchConditionParameters'
}
}
{
name: 'UrlFileExtension'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'pdf'
'docx'
]
transforms: [
'Lowercase'
]
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlFileExtensionMatchConditionParameters'
}
}
要求標頭比對條件會識別在要求中包含特定標頭的要求。 您可以使用此比對條件來檢查標頭是否存在,或檢查標頭是否符合指定的值。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 |
支援值 |
標頭名稱 |
代表 POST 引數名稱的字串值。 |
運算子 |
標準運算子清單中的任何運算子。 |
值 |
一或多個字串或整數值,代表要比對的要求標頭值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 |
標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對要求中包含名為 MyCustomHeader
的標頭 (無論其值為何) 的所有要求。
{
"name": "RequestHeader",
"parameters": {
"selector": "MyCustomHeader",
"operator": "Any",
"negateCondition": false,
"typeName": "DeliveryRuleRequestHeaderConditionParameters"
}
}
{
"name": "RequestHeader",
"parameters": {
"selector": "MyCustomHeader",
"operator": "Any",
"negateCondition": false,
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestHeaderConditionParameters"
}
}
{
name: 'RequestHeader'
parameters: {
selector: 'MyCustomHeader',
operator: 'Any'
negateCondition: false
typeName: 'DeliveryRuleRequestHeaderConditionParameters'
}
}
{
name: 'RequestHeader'
parameters: {
selector: 'MyCustomHeader',
operator: 'Any'
negateCondition: false
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestHeaderConditionParameters'
}
}
Request 方法
要求方法比對條件會識別使用指定 HTTP 要求方法的要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 |
支援值 |
運算子 |
- 在 Azure 入口網站中:
Equal 、Not Equal - 在 ARM 範本中:
Equal ;使用 negateCondition 屬性指定 Not Equal
|
Request 方法 |
來源如下的一或多個 HTTP 方法:GET 、POST 、PUT 、DELETE 、HEAD 、OPTIONS 、TRACE 。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
範例
在此範例中,我們會比對要求使用了 DELETE
方法的所有要求。
{
"name": "RequestMethod",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"DELETE"
],
"typeName": "DeliveryRuleRequestMethodConditionParameters"
}
}
{
"name": "RequestMethod",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"DELETE"
],
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestMethodConditionParameters"
}
}
{
name: 'RequestMethod'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'DELETE'
]
typeName: 'DeliveryRuleRequestMethodConditionParameters'
}
}
{
name: 'RequestMethod'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'DELETE'
]
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestMethodConditionParameters'
}
}
要求路徑
要求路徑比對條件會識別在要求 URL 中包含指定路徑的要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
注意
此路徑是 URL 的一部分,位於主機名稱和斜線後面。 例如,在 URL https://www.contoso.com/files/secure/file1.pdf
中,路徑為 files/secure/file1.pdf
。
屬性
屬性 |
支援值 |
運算子 |
- 支援標準運算子清單中的所有運算子。 不過,當搭配 request path 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。
- 萬用字元:當要求路徑符合萬用字元運算式時比對。 萬用字元運算式可以包含
* 字元,以比對路徑內的零或多個字元。 例如,萬用字元運算式 files/customer*/file.pdf 符合路徑 files/customer1/file.pdf 、files/customer109/file.pdf 和 files/customer/file.pdf ,但不符合 files/customer2/anotherfile.pdf 。- 在 Azure 入口網站中:
Wildcards 、Not Wildcards - 在 ARM 範本中:
Wildcard 使用 negateCondition 屬性來指定「非萬用字元」
|
值 |
一或多個字串或整數值,代表要比對的要求路徑值。 如果您指定前置斜線,則會忽略它。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 |
標準字串轉換清單中的任何轉換。 |
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算子。 不過,當搭配 request path 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 |
一或多個字串或整數值,代表要比對的要求路徑值。 如果您指定前置斜線,則會忽略它。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 |
標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對要求檔案路徑以 files/secure/
開頭的所有要求。 我們會先將要求副檔名轉換為小寫再評估相符項目,如此,對 files/SECURE/
和其他大小寫變體的要求也會觸發此比對條件。
{
"name": "UrlPath",
"parameters": {
"operator": "BeginsWith",
"negateCondition": false,
"matchValues": [
"files/secure/"
],
"transforms": [
"Lowercase"
],
"typeName": "DeliveryRuleUrlPathMatchConditionParameters"
}
}
{
"name": "UrlPath",
"parameters": {
"operator": "BeginsWith",
"negateCondition": false,
"matchValues": [
"files/secure/"
],
"transforms": [
"Lowercase"
],
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlPathMatchConditionParameters"
}
}
{
name: 'UrlPath'
parameters: {
operator: 'BeginsWith'
negateCondition: false
matchValues: [
'files/secure/'
]
transforms: [
'Lowercase'
]
typeName: 'DeliveryRuleUrlPathMatchConditionParameters'
}
}
{
name: 'UrlPath'
parameters: {
operator: 'BeginsWith'
negateCondition: false
matchValues: [
'files/secure/'
]
transforms: [
'Lowercase'
]
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRuleUrlPathMatchConditionParameters'
}
}
要求通訊協定
要求通訊協定比對條件會識別使用指定通訊協定 (HTTP 或 HTTPS) 的要求。
屬性
屬性 |
支援值 |
運算子 |
- 在 Azure 入口網站中:
Equal 、Not Equal - 在 ARM 範本中:
Equal ;使用 negateCondition 屬性指定 Not Equal
|
Request 方法 |
HTTP , HTTPS |
範例
在此範例中,我們會比對要求使用了 HTTP
通訊協定的所有要求。
{
"name": "RequestScheme",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"HTTP"
],
"typeName": "DeliveryRuleRequestSchemeConditionParameters"
}
}
{
"name": "RequestScheme",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"HTTP"
],
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestSchemeConditionParameters"
}
}
{
name: 'RequestScheme'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'HTTP'
]
typeName: 'DeliveryRuleRequestSchemeConditionParameters'
}
}
{
name: 'RequestScheme'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'HTTP'
]
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestSchemeConditionParameters'
}
}
要求 URL
識別符合指定 URL 的要求。 系統會評估整個 URL,包括通訊協定和查詢字串,但不會評估片段。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
提示
當您使用此規則條件時,請務必包含通訊協定和尾端正斜線 /
。 例如,請使用 https://www.contoso.com/
,而不要僅使用 www.contoso.com
。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算子。 不過,當搭配 request URL 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 |
一或多個字串或整數值,代表要比對的要求 URL 值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 |
標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對要求 URL 以 https://api.contoso.com/customers/123
開頭的所有要求。 我們會先將要求副檔名轉換為小寫再評估相符項目,如此,對 https://api.contoso.com/Customers/123
和其他大小寫變體的要求也將觸發此比對條件。
{
"name": "RequestUri",
"parameters": {
"operator": "BeginsWith",
"negateCondition": false,
"matchValues": [
"https://api.contoso.com/customers/123"
],
"transforms": [
"Lowercase"
],
"typeName": "DeliveryRuleRequestUriConditionParameters"
}
}
{
"name": "RequestUri",
"parameters": {
"operator": "BeginsWith",
"negateCondition": false,
"matchValues": [
"https://api.contoso.com/customers/123"
],
"transforms": [
"Lowercase"
],
"@odata.type": "#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestUriConditionParameters"
}
}
{
name: 'RequestUri'
parameters: {
operator: 'BeginsWith'
negateCondition: false
matchValues: [
'https://api.contoso.com/customers/123'
]
transforms: [
'Lowercase'
]
typeName: 'DeliveryRuleRequestUriConditionParameters'
}
}
{
name: 'RequestUri'
parameters: {
operator: 'BeginsWith'
negateCondition: false
matchValues: [
'https://api.contoso.com/customers/123'
]
transforms: [
'Lowercase'
]
'@odata.type': '#Microsoft.Azure.Cdn.Models.DeliveryRuleRequestUriConditionParameters'
}
}
主機名稱
主機名稱比對條件會根據來自用戶端的要求中指定的主機名稱來識別要求。 此比對條件會使用 Host
標頭值來評估主機名稱。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算子。 不過,當搭配 host name 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 |
一或多個字串值,代表要比對的要求主機名稱值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 |
標準字串轉換清單中的任何大小寫轉換。 |
範例
在此範例中,我們會比對 Host
標頭以 contoso.com
結尾的所有要求。
{
"name": "HostName",
"parameters": {
"operator": "EndsWith",
"negateCondition": false,
"matchValues": [
"contoso.com"
],
"transforms": [],
"typeName": "DeliveryRuleHostNameConditionParameters"
}
}
{
name: 'HostName'
parameters: {
operator: 'EndsWith'
negateCondition: false
matchValues: [
'contoso.com'
]
transforms: []
typeName: 'DeliveryRuleHostNameConditionParameters'
}
}
SSL 通訊協定
SSL 通訊協定比對條件會根據已建立 TLS 連線的 SSL 通訊協定來識別要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 |
支援值 |
運算子 |
- 在 Azure 入口網站中:
Equal 、Not Equal - 在 ARM 範本中:
Equal ;使用 negateCondition 屬性指定 Not Equal
|
SSL 通訊協定 |
- 在 Azure 入口網站中:
1.0 、1.1 、1.2 - 在 ARM 範本中:
TLSv1 、TLSv1.1 、TLSv1.2
|
範例
在此範例中,我們會比對所有使用 TLS 1.2 通訊協定的要求。
{
"name": "SslProtocol",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"TLSv1.2"
],
"typeName": "DeliveryRuleSslProtocolConditionParameters"
}
},
{
name: 'SslProtocol'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'TLSv1.2'
]
typeName: 'DeliveryRuleSslProtocolConditionParameters'
}
}
通訊端位址
通訊端位址比對條件會根據對 Azure Front Door 邊緣的直接連線 IP 位址來識別要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
注意
如果用戶端使用 HTTP Proxy 或負載平衡器來傳送要求,通訊端位址將是 Proxy 或負載平衡器的 IP 位址。
如果您需要根據用戶端的原始 IP 位址進行比對,請使用遠端位址比對條件。
- 在指定 IP 位址區塊時使用 CIDR 標記法。 這表示 IP 位址區塊的語法是基底 IP 位址,後面接著正斜線和首碼大小。 例如:
- IPv4 範例:
5.5.5.64/26
會比對來自 5.5.5.64 到 5.5.5.127 的任何要求。
- IPv6 範例:
1:2:3:/48
會比對來自位址 1:2:3:0:0:0:0:0 到 1:2:3: ffff:ffff:ffff:ffff:ffff 的任何要求。
- 指定多個 IP 位址和 IP 位址區塊時,會套用 'OR' 邏輯。
- IPv4 範例:如果您新增兩個 IP 位址
1.2.3.4
和 10.20.30.40
,則會比對來自位址 1.2.3.4 或 10.20.30.40 的任何要求。
- IPv6 範例:如果您新增兩個 IP 位址
1:2:3:4:5:6:7:8
和 10:20:30:40:50:60:70:80
,則會比對來自位址 1:2:3:4:5:6:7:8 或 10:20:30:40:50:60:70:80 的任何要求。
屬性
屬性 |
支援值 |
運算子 |
- 在 Azure 入口網站中:
IP Match 、Not IP Match - 在 ARM 範本中:
IPMatch ;使用 negateCondition 屬性指定非 IP 比對
|
值 |
指定一或多個 IP 位址範圍。 如果指定了多個 IP 位址範圍,則會使用 OR 邏輯加以評估。 |
範例
在此範例中,我們會比對來自範圍 5.5.5.64/26 中的 IP 位址的所有要求。
{
"name": "SocketAddr",
"parameters": {
"operator": "IPMatch",
"negateCondition": false,
"matchValues": [
"5.5.5.64/26"
],
"typeName": "DeliveryRuleSocketAddrConditionParameters"
}
}
{
name: 'SocketAddr'
parameters: {
operator: 'IPMatch'
negateCondition: false
matchValues: [
'5.5.5.64/26'
]
typeName: 'DeliveryRuleSocketAddrConditionParameters'
}
}
用戶端連接埠
用戶端連接埠比對條件會根據發出要求之用戶端的 TCP 連接埠來識別要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算子。 不過,當搭配 client port 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 |
一或多個連接埠號碼,以整數表示。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
範例
在此範例中,我們會比對用戶端連接埠為 1234 的所有要求。
{
"name": "ClientPort",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"1111"
],
"typeName": "DeliveryRuleClientPortConditionParameters"
}
}
{
name: 'ClientPort'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'1111'
]
typeName: 'DeliveryRuleClientPortConditionParameters'
}
}
伺服器通訊埠
伺服器連接埠比對條件會根據接受要求的 Azure Front Door 伺服器的 TCP 連接埠來識別要求。 連接埠必須是 80 或 443。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算子。 不過,當搭配 server port 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 |
連接埠號碼,必須是 80 或 443。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
範例
在此範例中,我們會比對伺服器連接埠為 443 的所有要求。
{
"name": "ServerPort",
"parameters": {
"operator": "Equal",
"negateCondition": false,
"matchValues": [
"443"
],
"typeName": "DeliveryRuleServerPortConditionParameters"
}
}
{
name: 'ServerPort'
parameters: {
operator: 'Equal'
negateCondition: false
matchValues: [
'443'
]
typeName: 'DeliveryRuleServerPortConditionParameters'
}
}
操作員清單
如果規則可接受標準運算子清單中的值,則有效的運算子如下:
運算子 |
描述 |
ARM 範本支援 |
任意 |
只要有值即相符,無論值為何。 |
operator : Any |
等於 |
當值完全符合指定的字串時即相符。 |
operator : Equal |
包含 |
當值包含指定的字串時即相符。 |
operator : Contains |
小於 |
當值的長度小於指定的整數時即相符。 |
operator : LessThan |
大於 |
當值的長度大於指定的整數時即相符。 |
operator : GreaterThan |
小於或等於 |
當值的長度小於或等於指定的整數時即相符。 |
operator : LessThanOrEqual |
大於或等於 |
當值的長度大於或等於指定的整數時即相符。 |
operator : GreaterThanOrEqual |
Begins With |
當值以指定字串開頭時即相符。 |
operator : BeginsWith |
結尾為 |
當值以指定字串結尾時即相符。 |
operator : EndsWith |
Not Any |
沒有任何值即相符。 |
operator : Any 和 negateCondition : true |
不等於 |
當值不符合指定的字串時即相符。 |
operator : Equal 和 negateCondition : true |
Not Contains |
當值不含指定的字串時即相符。 |
operator : Contains 和 negateCondition : true |
Not Less Than |
當值的長度不小於指定的整數時即相符。 |
operator : LessThan 和 negateCondition : true |
Not Greater Than |
當值的長度不大於指定的整數時即相符。 |
operator : GreaterThan 和 negateCondition : true |
Not Less Than or Equal |
當值的長度不小於或等於指定的整數時即相符。 |
operator : LessThanOrEqual 和 negateCondition : true |
Not Greater Than or Equals |
當值的長度不大於或等於指定的整數時即相符。 |
operator : GreaterThanOrEqual 和 negateCondition : true |
Not Begins With |
當值不是以指定字串開頭時即相符。 |
operator : BeginsWith 和 negateCondition : true |
Not Ends With |
當值不是以指定字串結尾時即相符。 |
operator : EndsWith 和 negateCondition : true |
運算子 |
描述 |
ARM 範本支援 |
任意 |
只要有值即相符,無論值為何。 |
operator : Any |
等於 |
當值完全符合指定的字串時即相符。 |
operator : Equal |
包含 |
當值包含指定的字串時即相符。 |
operator : Contains |
小於 |
當值的長度小於指定的整數時即相符。 |
operator : LessThan |
大於 |
當值的長度大於指定的整數時即相符。 |
operator : GreaterThan |
小於或等於 |
當值的長度小於或等於指定的整數時即相符。 |
operator : LessThanOrEqual |
大於或等於 |
當值的長度大於或等於指定的整數時即相符。 |
operator : GreaterThanOrEqual |
Begins With |
當值以指定字串開頭時即相符。 |
operator : BeginsWith |
結尾為 |
當值以指定字串結尾時即相符。 |
operator : EndsWith |
RegEx |
當值符合指定的規則運算式時即相符。 請參閱下方的詳細資料。 |
operator : RegEx |
Not Any |
沒有任何值即相符。 |
operator : Any 和 negateCondition : true |
不等於 |
當值不符合指定的字串時即相符。 |
operator : Equal 和 negateCondition : true |
Not Contains |
當值不含指定的字串時即相符。 |
operator : Contains 和 negateCondition : true |
Not Less Than |
當值的長度不小於指定的整數時即相符。 |
operator : LessThan 和 negateCondition : true |
Not Greater Than |
當值的長度不大於指定的整數時即相符。 |
operator : GreaterThan 和 negateCondition : true |
Not Less Than or Equal |
當值的長度不小於或等於指定的整數時即相符。 |
operator : LessThanOrEqual 和 negateCondition : true |
Not Greater Than or Equals |
當值的長度不大於或等於指定的整數時即相符。 |
operator : GreaterThanOrEqual 和 negateCondition : true |
Not Begins With |
當值不是以指定字串開頭時即相符。 |
operator : BeginsWith 和 negateCondition : true |
Not Ends With |
當值不是以指定字串結尾時即相符。 |
operator : EndsWith 和 negateCondition : true |
Not RegEx |
當值不符合指定的規則運算式時即相符。 請參閱下方的詳細資料。 |
operator : RegEx 和 negateCondition : true |
提示
對於 Less than 和 Greater than or equals 之類的數值運算子,所使用的比較會以長度為基礎。 比對條件中的值應為一個整數,指定您要比較的長度。
規則運算式
規則運算式不支援下列作業:
- 反向參考和擷取子運算式。
- 任意零寬判斷提示。
- 副程式參考和遞迴模式。
- 條件式模式。
- 回溯控制項動詞。
\C
單一位元組指示詞。
\R
新行比對指示詞。
\K
比對重設指示詞的開始。
- 圖說文字和內嵌程式碼。
- 不可部分完成的群組和獨吐量詞。
對於可轉換字串的規則,以下轉換有效:
轉換 |
描述 |
ARM 範本支援 |
轉換為小寫 |
將字串轉換為小寫表示法。 |
Lowercase |
轉換為大寫 |
將字串轉換為大寫表示法。 |
Uppercase |
Trim |
修剪字串的開頭及結尾空白字元。 |
Trim |
移除 Null |
從字串中移除 Null 值。 |
RemoveNulls |
URL 編碼 |
對字串進行 URL 編碼。 |
UrlEncode |
URL 解碼 |
對字串進行 URL 解碼。 |
UrlDecode |
下一步