規則比對條件
在 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 屬性來指定 [不等於]
|
值 |
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 Standard/進階版。
屬性
屬性 |
支援值 |
運算子 |
- 在 Azure 入口網站:
Equal 、Not Equal - 在 ARM 範本中:
Equal ; 使用 negateCondition 屬性來指定 [不等於]
|
值 |
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/進階版。
屬性
屬性 |
支援值 |
Cookie 名稱 |
表示 Cookie 名稱的字串值。 |
運算子 |
標準運算子清單中的任何運算元。 |
值 |
一或多個字串或整數值,代表要比對的要求標頭值。 如果指定了多個值,則會使用 OR 邏輯來評估這些值。 |
案例轉換 |
來自 標準字串轉換清單的任何轉換。 |
範例
在此範例中,我們會比對具有名為 deploymentStampId
之 Cookie 且值為 1
的所有要求。
{
"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 args 比對條件,根據 POST 要求主體中提供的自變數來識別要求。 單一比對條件會比對 POST 要求的本文中的單一自變數。 您可以指定要比對的多個值,這可以使用 OR 邏輯來結合。
注意
post args 比對條件適用於application/x-www-form-urlencoded
內容類型。
屬性
屬性 |
支援值 |
自變數後 |
字串值,表示POST自變數的名稱。 |
運算子 |
標準運算子清單中的任何運算元。 |
值 |
一或多個字串或整數值,代表要比對之POST自變數的值。 如果指定了多個值,則會使用 OR 邏輯來評估這些值。 |
案例轉換 |
來自 標準字串轉換清單的任何轉換。 |
範例
在此範例中,我們會比對要求本文中提供自變數的所有POST要求 customerName
,以及 customerName
的值以字母 J
或 K
開頭。 我們使用案例轉換將輸入值轉換成大寫,讓開頭為 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 邏輯來結合。
注意
整個查詢字串會比對為單一字串,而不使用前置 ?
。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算元。 不過,當搭配查詢字串比對條件使用時,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: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:5:6: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 , ;使用 negateCondition 屬性來指定異地不相符或 IP IPMatch 不相符
|
值 |
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 邏輯來結合。
注意
如果要求本文的大小超過 64KB,則只會針對 要求本文 比對條件考慮前 64KB。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算元。 不過,當與要求主體比對條件搭配使用時,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 邏輯來結合。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算元。 不過,當搭配要求檔名比對條件使用時,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
。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算元。 不過,當搭配要求擴展名比對條件使用時,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 屬性來指定 [不等於]
|
Request 方法 |
來自:GET 、、POST 、、PUT 、DELETE 、、、HEAD OPTIONS TRACE 的一或多個 HTTP 方法。 如果指定了多個值,則會使用 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
。
屬性
屬性 |
支援值 |
運算子 |
- 支援標準運算子清單中的所有運算元。 不過,當搭配要求路徑比對條件使用時,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 邏輯來評估這些值。 |
案例轉換 |
來自 標準字串轉換清單的任何轉換。 |
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算元。 不過,當搭配要求路徑比對條件使用時,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 屬性來指定 [不等於]
|
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
。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算元。 不過,當搭配要求 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 邏輯來結合。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算元。 不過,當搭配主機名比對條件使用時,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 屬性來指定 [不等於]
|
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 Edge 的 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: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:5:6:8 或 10:20:30:40:50:60:70:80 的任何要求。
屬性
屬性 |
支援值 |
運算子 |
- 在 Azure 入口網站:
IP Match 、Not IP Match - 在 ARM 範本中:
IPMatch ; 使用 negateCondition 屬性來指定 Not IP Match
|
值 |
指定一或多個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 邏輯來結合。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算元。 不過,當與用戶端埠比對條件搭配使用時,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 邏輯來結合。
屬性
屬性 |
支援值 |
運算子 |
支援標準運算子清單中的所有運算元。 不過,當與伺服器埠比對條件搭配使用時,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 : 和 negateCondition : Any true |
不等於 |
當值不符合指定的字串時即相符。 |
operator : 和 negateCondition : Equal true |
Not Contains |
當值不含指定的字串時即相符。 |
operator : 和 negateCondition : Contains true |
Not Less Than |
當值的長度不小於指定的整數時即相符。 |
operator : 和 negateCondition : LessThan true |
Not Greater Than |
當值的長度不大於指定的整數時即相符。 |
operator : 和 negateCondition : GreaterThan true |
Not Less Than or Equal |
當值的長度不小於或等於指定的整數時即相符。 |
operator : 和 negateCondition : LessThanOrEqual true |
不大於或等於 |
比對值長度不大於或等於指定的整數時。 |
operator : 和 negateCondition : GreaterThanOrEqual true |
Not Begins With |
當值不是以指定的字串開頭時相符。 |
operator : 和 negateCondition : BeginsWith true |
不結束於 |
當值未以指定的字串結尾時比對。 |
operator : 和 negateCondition : EndsWith 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 : 和 negateCondition : Any true |
不等於 |
當值不符合指定的字串時即相符。 |
operator : 和 negateCondition : Equal true |
Not Contains |
當值不含指定的字串時即相符。 |
operator : 和 negateCondition : Contains true |
Not Less Than |
當值的長度不小於指定的整數時即相符。 |
operator : 和 negateCondition : LessThan true |
Not Greater Than |
當值的長度不大於指定的整數時即相符。 |
operator : 和 negateCondition : GreaterThan true |
Not Less Than or Equal |
當值的長度不小於或等於指定的整數時即相符。 |
operator : 和 negateCondition : LessThanOrEqual true |
不大於或等於 |
比對值長度不大於或等於指定的整數時。 |
operator : 和 negateCondition : GreaterThanOrEqual true |
Not Begins With |
當值不是以指定的字串開頭時相符。 |
operator : 和 negateCondition : BeginsWith true |
不結束於 |
當值未以指定的字串結尾時比對。 |
operator : 和 negateCondition : EndsWith true |
非 RegEx |
符合值不符合指定的正則表達式時。 如需進一步的詳細數據,請參閱下方。 |
operator : 和 negateCondition : RegEx true |
提示
對於小於和大於或等於的數字運算元,使用的比較是以長度為基礎。 比對條件中的值應該是整數,指定您要比較的長度。
規則運算式
正規表示式不支援下列作業:
- 反向參考和擷取子表達式。
- 任意的零寬度判斷提示。
- 子程式參考和遞迴模式。
- 條件模式。
- 回溯控件動詞。
\C
單一位元組指示詞。
- 換
\R
行符比對指示詞。
\K
比對重設指示詞的開頭。
- 圖說文字和內嵌程序代碼。
- 不可部分完成分組和擁有數量值。
對於可轉換字串的規則,下列轉換有效:
轉換 |
描述 |
ARM 範本支援 |
至小寫 |
將字串轉換成小寫表示法。 |
Lowercase |
至大寫 |
將字串轉換為大寫表示。 |
Uppercase |
Trim |
從字串修剪開頭和尾端空格符。 |
Trim |
拿掉 Null |
從字串中移除 Null 值。 |
RemoveNulls |
URL 編碼 |
URL 編碼字串。 |
UrlEncode |
URL 譯碼 |
URL 譯碼字串。 |
UrlDecode |
下一步