規則比對條件
在 Azure Front Door 規則集中,規則是由一或多個比對條件和動作所組成。 本文提供您可以在 Azure Front Door 規則集中使用之比對條件的詳細描述。
重要
Azure Front Door (傳統) 將於 2027 年 3 月 31 日遭到淘汰。 為了避免任何服務中斷,請務必在 2027 年 3 月之前,將 Azure Front Door (傳統) 設定檔移轉至 Azure Front Door 標準或進階層。 如需詳細資訊,請參閱 Azure Front Door (傳統版) 淘汰。
在 Azure Front Door (傳統) 規則引擎中,規則是由一或多個比對條件和動作所組成。 本文提供您可以在 Azure Front Door (傳統) 規則引擎中使用的比對條件詳細描述。
規則會以比對條件或一組比對條件開始。 規則最多可以有10個比對條件。 比對條件會識別特定類型的要求,以便針對這類要求執行已定義的動作。 如果您使用多個比對條件,它們會使用 AND 邏輯分組在一起。 針對支援多個值的比對條件,會使用 OR 邏輯。
例如,您可以使用比對條件來:
- 根據特定 IP 位址、連接埠或國家/地區篩選要求。
- 依標頭資訊篩選要求。
- 從行動裝置或桌面電腦裝置篩選要求。
- 依要求檔名和擴展名篩選要求。
- 依主機名、SSL 通訊協定、要求 URL、通訊協定、路徑、查詢字串、post 自變數和其他值來篩選要求。
- 根據特定 IP 位址或國家/地區來篩選要求。
- 依標頭資訊篩選要求。
- 從行動裝置或桌面電腦裝置篩選要求。
- 依要求檔名和擴展名篩選要求。
- 依要求 URL、通訊協定、路徑、查詢字串、post 引數和其他值來篩選要求。
裝置類型:
使用裝置類型比對條件,以識別從行動裝置或桌面裝置提出的要求。
屬性
屬性 | 支援值 |
---|---|
運算子 |
|
值 |
Mobile , Desktop |
範例
在此範例中,我們會比對所有偵測為來自行動裝置的要求。
HTTP 版本
使用 HTTP 版本比對條件,以識別使用特定 HTTP 通訊協定版本提出的要求。
注意
HTTP 版本 比對條件僅適用於 Azure Front Door 標準/進階。
屬性
屬性 | 支援值 |
---|---|
運算子 |
|
值 |
2.0 、 、 1.1 、 1.0 0.9 |
範例
在此範例中,我們會比對所有使用 HTTP 2.0 通訊協定來傳送的要求。
要求 Cookie
使用要求 Cookie 比對條件,以識別包含特定 Cookie 的要求。
注意
要求 Cookie 比對條件僅適用於 Azure Front Door Standard/Premium。
屬性
屬性 | 支援值 |
---|---|
Cookie 名稱 | 代表 Cookie 名稱的字串值。 |
運算子 | 標準運算子清單中的任何運算子。 |
值 | 一或多個字串或整數值,代表要比對的要求標頭值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 | 標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對所有包含名為 deploymentStampId
、且值為 1
之 Cookie 的要求。
Post 引數
使用 post 引數比對條件,根據 POST 要求本文內提供的引數來識別要求。 單一比對條件會比對 POST 要求本文中的單一引數。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
注意
post 引數比對條件適用於 application/x-www-form-urlencoded
內容類型。
屬性
屬性 | 支援值 |
---|---|
Post 引數 | 代表 POST 引數名稱的字串值。 |
運算子 | 標準運算子清單中的任何運算子。 |
值 | 一或多個字串或整數值,代表要比對的 POST 引數值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 | 標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對在要求本文中提供了 customerName
引數,且 customerName
的值以字母 J
或 K
開頭的所有 POST 要求。 我們會使用大小寫轉換將輸入值轉換為大寫,讓值都以 J
、j
、K
和 k
開頭,而全都相符。
查詢字串
使用查詢字串比對條件,識別包含特定查詢字串的要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
注意
整個查詢字串會被視為單一字串來比對,不含前置 ?
。
屬性
屬性 | 支援值 |
---|---|
運算子 | 支援標準運算子清單中的所有運算子。 不過,當搭配 query string 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
查詢字串 | 一或多個字串或整數值,代表要比對的查詢字串值。 請勿在查詢字串開頭加上 ? 。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 | 標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對查詢字串中包含字串 language=en-US
的所有要求。 我們想要讓比對條件區分大小寫,因此我們不轉換大小寫。
遠端位址
遠端位址比對條件會根據要求者的位置或 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 的任何要求。
-
IPv4 範例:
- 指定多個 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 的任何要求。
-
IPv4 範例:如果您新增兩個 IP 位址
- 遠端位址代表來自網路連線的原始用戶端 IP,或者,如果使用者位於 Proxy 後方,則通常是 X-Forwarded-For 要求標頭。 如果您需要根據 TCP 要求的 IP 位址進行比對,請使用通訊端位址比對條件 (標準/進階中可用)。
屬性
屬性 | 支援值 |
---|---|
運算子 |
|
值 |
|
範例
在此範例中,我們會比對要求不是源自美國的所有要求。
要求本文
要求本文比對條件會根據出現在要求本文中的特定文字來識別要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
注意
如果要求本文的大小超過 64 KB,則要求本文比對條件只會考量前 64 KB。
屬性
屬性 | 支援值 |
---|---|
運算子 | 支援標準運算子清單中的所有運算子。 不過,當搭配 request body 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 | 一或多個字串或整數值,代表要比對的要求本文值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 | 標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對要求本文中包含字串 ERROR
的所有要求。 我們會先將要求本文轉換為大寫再評估相符項目,讓 error
和其他大小寫變體也會觸發此比對條件。
要求檔案名稱
要求檔案名稱比對條件會識別在要求 URL 中包含指定檔案名稱的要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 | 支援值 |
---|---|
運算子 | 支援標準運算子清單中的所有運算子。 不過,當搭配 request file name 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 | 一或多個字串或整數值,代表要比對的要求檔案名稱值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 | 標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對要求檔案名稱為 media.mp4
的所有要求。 我們會先將檔案名稱轉換為小寫再評估相符項目,讓 MEDIA.MP4
和其他大小寫變體也會觸發此比對條件。
要求副檔名
要求副檔名比對條件會識別在要求 URL 的檔案名稱中包含指定副檔名的要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
注意
請勿包含前置句點。 例如,使用 html
而不是 .html
。
屬性
屬性 | 支援值 |
---|---|
運算子 | 支援標準運算子清單中的所有運算子。 不過,當搭配 request file extension 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 | 一或多個字串或整數值,代表要比對之要求副檔名的值。 請勿包含前置句點。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 | 標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對要求副檔名為 pdf
或 docx
的所有要求。 我們會先將要求副檔名轉換為小寫再評估相符項目,讓 PDF
、DocX
和其他大小寫變體也會觸發此比對條件。
要求標頭
要求標頭比對條件會識別在要求中包含特定標頭的要求。 您可以使用此比對條件來檢查標頭是否存在,或檢查標頭是否符合指定的值。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 | 支援值 |
---|---|
標頭名稱 | 代表 POST 引數名稱的字串值。 |
運算子 | 標準運算子清單中的任何運算子。 |
值 | 一或多個字串或整數值,代表要比對的要求標頭值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 | 標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對要求中包含名為 MyCustomHeader
的標頭 (無論其值為何) 的所有要求。
Request 方法
要求方法比對條件會識別使用指定 HTTP 要求方法的要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 | 支援值 |
---|---|
運算子 |
|
Request 方法 | 來源如下的一或多個 HTTP 方法:GET 、POST 、PUT 、DELETE 、HEAD 、OPTIONS 、TRACE 。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
範例
在此範例中,我們會比對要求使用了 DELETE
方法的所有要求。
要求路徑
要求路徑比對條件會識別在要求 URL 中包含指定路徑的要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
注意
此路徑是 URL 的一部分,位於主機名稱和斜線後面。 例如,在 URL https://www.contoso.com/files/secure/file1.pdf
中,路徑為 files/secure/file1.pdf
。
屬性
屬性 | 支援值 |
---|---|
運算子 |
|
值 | 一或多個字串或整數值,代表要比對的要求路徑值。 如果您指定前置斜線,則會忽略它。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 | 標準字串轉換清單中的任何轉換。 |
屬性 | 支援值 |
---|---|
運算子 | 支援標準運算子清單中的所有運算子。 不過,當搭配 request path 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 | 一或多個字串或整數值,代表要比對的要求路徑值。 如果您指定前置斜線,則會忽略它。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 | 標準字串轉換清單中的任何轉換。 |
範例
在此範例中,我們會比對要求檔案路徑以 files/secure/
開頭的所有要求。 我們會先將要求副檔名轉換為小寫再評估相符項目,如此,對 files/SECURE/
和其他大小寫變體的要求也會觸發此比對條件。
要求通訊協定
要求通訊協定比對條件會識別使用指定通訊協定 (HTTP 或 HTTPS) 的要求。
注意
通訊協定有時也稱為配置。
屬性
屬性 | 支援值 |
---|---|
運算子 |
|
Request 方法 |
HTTP , HTTPS |
範例
在此範例中,我們會比對要求使用了 HTTP
通訊協定的所有要求。
要求 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
和其他大小寫變體的要求也將觸發此比對條件。
主機名稱
主機名稱比對條件會根據來自用戶端的要求中指定的主機名稱來識別要求。 此比對條件會使用 Host
標頭值來評估主機名稱。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 | 支援值 |
---|---|
運算子 | 支援標準運算子清單中的所有運算子。 不過,當搭配 host name 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 | 一或多個字串值,代表要比對的要求主機名稱值。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
大小寫轉換 | 標準字串轉換清單中的任何大小寫轉換。 |
範例
在此範例中,我們會比對 Host
標頭以 contoso.com
結尾的所有要求。
SSL 通訊協定
SSL 通訊協定比對條件會根據已建立 TLS 連線的 SSL 通訊協定來識別要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 | 支援值 |
---|---|
運算子 |
|
SSL 通訊協定 |
|
範例
在此範例中,我們會比對所有使用 TLS 1.2 通訊協定的要求。
通訊端位址
通訊端位址比對條件會根據對 Azure Front Door 邊緣的直接連線 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 的任何要求。
-
IPv4 範例:
- 指定多個 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 的任何要求。
-
IPv4 範例:如果您新增兩個 IP 位址
屬性
屬性 | 支援值 |
---|---|
運算子 |
|
值 | 指定一或多個 IP 位址範圍。 如果指定了多個 IP 位址範圍,則會使用 OR 邏輯加以評估。 |
範例
在此範例中,我們會比對來自範圍 5.5.5.64/26 中的 IP 位址的所有要求。
用戶端連接埠
用戶端連接埠比對條件會根據發出要求之用戶端的 TCP 連接埠來識別要求。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 | 支援值 |
---|---|
運算子 | 支援標準運算子清單中的所有運算子。 不過,當搭配 client port 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 | 一或多個連接埠號碼,以整數表示。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
範例
在此範例中,我們會比對用戶端連接埠為 1234 的所有要求。
伺服器通訊埠
伺服器連接埠比對條件會根據接受要求的 Azure Front Door 伺服器的 TCP 連接埠來識別要求。 連接埠必須是 80 或 443。 您可以指定多個要比對的值,這些值可以使用 OR 邏輯加以合併。
屬性
屬性 | 支援值 |
---|---|
運算子 | 支援標準運算子清單中的所有運算子。 不過,當搭配 server port 比對條件一起使用時,Any 比對條件都會比對每個要求,而 Not Any 比對條件則不會比對任何要求。 |
值 | 連接埠號碼,必須是 80 或 443。 如果指定了多個值,則會使用 OR 邏輯加以評估。 |
範例
在此範例中,我們會比對伺服器連接埠為 443 的所有要求。
操作員清單
如果規則可接受標準運算子清單中的值,則有效的運算子如下:
運算子 | 描述 | 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 |
下一步
- 深入了解 Azure Front Door (傳統) 規則引擎
- 了解如何設定您的第一個規則引擎。
- 深入了解規則動作
- 深入了解 Azure Front Door 規則集。
- 了解如何設定您的第一個規則集。
- 深入了解規則動作。