全部產品
Search
文件中心

CDN:規則引擎

更新時間:Oct 12, 2025

規則引擎功能使用圖形化方式配置條件規則。條件規則支援識別使用者請求中的各種參數資訊,以決定某個配置是否對該請求生效,可用於靈活、精確地控制CDN的配置策略執行效果。

背景說明

阿里雲CDN產品控制台提供了配置緩衝到期時間、回源參數改寫等基礎功能,滿足大部分通用需求。但對於一些特殊需求,如將包含路徑/example的請求回源到指定來源站點地址,則需要結合規則引擎實現自訂配置。此外,阿里雲CDN還提供了邊緣指令碼功能,支援高度靈活的使用者定製需求。

配置能力

基礎功能

基礎功能+規則引擎

邊緣指令碼

功能實現

常見的通用功能配置

較為靈活的自訂配置

高度靈活的自訂配置

使用情境

常見的通用需求

部分自訂進階配置需求

定製化的使用者需求

上手難度(對使用者技術要求)

配置靈活性

注意事項

  • 單個網域名稱下最多支援建立50個規則條件。

  • 單個規則條件中的子條件數量最多不超過20個。

  • 通過控制台或者OpenAPI來配置時,無法使用正則相關的匹配運算子(包括正則匹配和正則不匹配),但是可以查看已有配置。如果要使用正則相關的匹配運算子,請提交工單申請,或者使用邊緣安全加速產品

  • 通過控制台或者OpenAPI配置時,單個網域名稱下所有功能對規則條件的總引用次數最大不超過5次。

  • 規則條件支援嵌套,嵌套層次最多為3層,不同層級支援獨立的邏輯關係設定。

規則條件的文法說明

一個規則條件由“邏輯判斷運算子”與“條件運算式”構成,具體見下方說明。

邏輯判斷(Logic)

對同一個層級內的條件(包括被嵌套的條件集合)進行邏輯判斷,支援andor

  • and(並且):邏輯與運算子,所有條件都為真才會匹配成功。

  • or(或者):邏輯或運算子,其中一個條件為真即可匹配成功。

條件運算式包含的參數

最小粒度的條件運算式包含以下參數:

參數名稱

網域名稱配置功能函數condition中對應的配置參數

參數說明

是否必填

條件匹配

match

表示條件匹配運算式。

邏輯判斷

logic

表示條件匹配運算式的邏輯判斷參數,取值為andor

條件判斷內容

criteria

表示條件運算式的判斷內容。

匹配類型

MatchType

表示對使用者請求中攜帶的某一類型資訊進行匹配。

匹配對象

MatchObject

表示對匹配類型進行進一步的細分,例如:用戶端IP可以細分為“建聯IP”和“XFF IP”。

匹配運算子

MatchOperator

表示匹配操作執行的具體動作。

匹配值

MatchValue

表示預先設定的匹配值,將會與使用者請求中攜帶的資訊進行匹配。

條件判斷值取反

negate

表示是否對條件運算式的結果取反,取值為true和false。

大小寫敏感

caseSensitive

表示對匹配值中的字元是否大小寫敏感。

規則條件名稱

name

表示規則條件的名稱。

生效狀態

status

表示規則條件的生效狀態。

條件運算式的配置方法

匹配類型名稱

網域名稱配置功能函數condition中對應的配置參數

匹配類型含義

匹配對象

匹配運算子

匹配值

大小寫敏感

對應nginx/tengine

協議類型

scheme

用戶端請求使用的協議類型,例如:HTTP、HTTPS。

不涉及

  • 等於

  • 不等於

  • http

  • https

不涉及

$scheme

要求方法

method

用戶端請求使用的要求方法,例如:GET、PUT。

不涉及

  • 等於

  • 不等於

  • get

  • put

  • post

  • delete

  • head

不涉及

$request_method

URI(路徑)

uri

用戶端請求URL中的路徑,不含請求參數,例如:/favicon.ico

不涉及

  • 包含其中任意一個

  • 不包含其中任意一個

支援萬用字元?*, 例如:填寫 /*/my_path/*,支援輸入多個值。

  • 區分大小寫

  • 忽略大小寫

$raw_uri或$uri

檔案名稱

basename

用戶端請求的檔案的名稱,例如:name1。

不涉及

  • 包含其中任意一個

  • 不包含其中任意一個

支援萬用字元?*,支援輸入多個值。

  • 區分大小寫

  • 忽略大小寫

-

副檔名

extension

用戶端請求的檔案的尾碼名,從右向左識別,識別到第一個".",例如:.mp4

不涉及

  • 包含其中任意一個

  • 不包含其中任意一個

支援萬用字元?*,支援輸入多個值。

  • 區分大小寫

  • 忽略大小寫

-

Hostname

hostname

用戶端請求攜帶的hostname,匹配順序:請求URL中的host>要求標頭HOST中的host。

不涉及

  • 包含其中任意一個

  • 不包含其中任意一個

使用者請求的host,支援輸入多個值。

  • 區分大小寫

  • 忽略大小寫

$host或$http_host

用戶端IP

clientip

用戶端的IP。 支援IPv4(例如1.1.X.X)、IPv6(例如240e:95c:3004:2:3:0:0:XXX)、支援網段(例如20.209.XXX.XXX/31)。

  • 建聯IP

  • XFF IP

說明

建聯IP、XFF IP詳細說明,請參見IP地址校正模式

  • 包含其中任意一個

  • 不包含其中任意一個

支援填寫IPv6格式IP,例如:240e:XXX:3004:2:3:0:0:3f7,支援網段方式填寫,例如:120.209.XXX.XXX/31,支援輸入多個值。

不涉及

$remote_addr

用戶端IP版本

clientipVer

IPv4或IPv6。

  • 建聯IP

  • XFF IP

說明

建聯IP、XFF IP詳細說明,請參見IP地址校正模式

  • 等於

  • 不等於

  • v4

  • v6

不涉及

-

使用者網路電訊廠商

geolocation

用戶端IP歸屬的電訊廠商。

  • 建聯IP

  • XFF IP

說明

建聯IP、XFF IP詳細說明,請參見IP地址校正模式

  • 包含其中任意一個

  • 不包含其中任意一個

可以通過下拉式清單來選擇,可以輸入字元來過濾選項,支援輸入ID或名稱來模糊比對查詢,支援輸入多個值。

不涉及

$ip_isp_id

使用者IP地理位置

geolocation

用戶端IP所處的地理位置。

  • 建聯IP

  • XFF IP

說明

建聯IP、XFF IP詳細說明,請參見IP地址校正模式

  • 包含其中任意一個

  • 不包含其中任意一個

可以通過下拉式清單來選擇,可以輸入字元來過濾選項,支援輸入ID或名稱來模糊比對查詢,支援輸入多個值。

不涉及

$ip_country_id

請求參數

querystring

使用者請求URL中攜帶的請求參數。

輸入參數名稱。

  • 存在

  • 不存在

  • 包含其中任意一個

  • 不包含其中任意一個

  • 大於

  • 大於等於

  • 小於

  • 小於等於

支援萬用字元?*,支援輸入多個值。

  • 區分大小寫

  • 忽略大小寫

$arg_{name}

要求標頭

header

使用者請求中攜帶的要求標頭。

支援輸入參數名稱,也支援通過下拉式清單來選擇參數。

  • 存在

  • 不存在

  • 包含其中任意一個

  • 不包含其中任意一個

  • 大於

  • 大於等於

  • 小於

  • 小於等於

支援輸入多個值。

  • 區分大小寫

  • 忽略大小寫

$http_{name}

Cookie

cookie

請求攜帶的Cookie。

輸入Cookie名稱。

  • 存在

  • 不存在

  • 包含其中任意一個

  • 不包含其中任意一個

  • 大於

  • 大於等於

  • 小於

  • 小於等於

支援萬用字元?*,支援輸入多個值。

  • 區分大小寫

  • 忽略大小寫

$cookie_{name}

User-Agent

useragent

要求標頭裡的User-Agent。

不涉及

  • 包含其中任意一個

  • 不包含其中任意一個

可以選擇下拉式清單中的值,或者直接輸入UA值,例如:*Chrome/25*,支援萬用字元?*,支援輸入多個值(最多僅支援配置32個UA,超過這個數量後,配置的UA不生效)。

  • 區分大小寫

  • 忽略大小寫

$http_user_agent

Range分桶

range

將用戶端請求分桶,按百分比執行。

不涉及

  • 等於

  • 不等於

輸入百分比的數值。

不涉及

-

時間

time

用戶端請求發生的時間,時區為東八區(北京時間),例如:09:10~14:22。

不涉及

  • 包含其中任意一個

  • 不包含其中任意一個

直接輸入時間段,例如09:10~14:22 ,表示9點10分至14點22分。

不涉及

-

Nginx Var

ngxvar

當上方所有的變數均無法滿足需求時,支援使用Nginx變數來配置,支援的變數詳見Nginx官網:Nginx變數

可以通過下拉式清單來選擇或直接輸入變數名,支援$region:$isp這種拼接方式。

  • 存在

  • 不存在

  • 包含其中任意一個

  • 不包含其中任意一個

  • 大於

  • 大於等於

  • 小於

  • 小於等於

支援輸入多個值。

不涉及

${name}

IP地址校正模式

規則引擎功能的“IP地址校正模式”分為兩種,使用不同的“IP地址校正模式”會影響到CDN節點對用戶端IP的判斷:

  • 建聯 IP:該模式比對用戶端與CDN節點之間建連使用的IP,如果用戶端與CDN節點之間有經過Proxy 伺服器,那麼建聯IP=Proxy 伺服器IP。

  • XFF IP:該模式比對使用者請求中x-forwarded-for要求標頭攜帶的左邊第一個IP,不論用戶端與CDN節點之間是否有經過Proxy 伺服器,XFF IP都=用戶端真實IP。

選擇使用哪一種“IP地址校正模式”主要取決於使用者請求在經過CDN節點時,中間是否有經過Proxy 伺服器。

需注意,引用規則條件的功能在CDN節點上的生效位置也會影響到對“IP地址校正模式”的選擇(對於在L2節點上生效的回源配置相關功能而言,使用者請求經過的L1節點就相當於中間經過了Proxy 伺服器)。

樣本:假設用戶端真實IP為10.10.10.10,Proxy 伺服器IP為192.168.0.1

  • 沒有經過Proxy 伺服器:

    • 使用者請求中x-forwarded-for要求標頭值:10.10.10.10

    • 用戶端真實IP(即x-forwarded-for要求標頭攜帶的左邊第一個IP)=用戶端與CDN節點建連IP=10.10.10.10

  • 經過Proxy 伺服器:

    • 使用者請求中x-forwarded-for要求標頭值:10.10.10.10,192.168.0.1

    • 用戶端真實IP(即x-forwarded-for要求標頭攜帶的左邊第一個IP)=10.10.10.10

    • 用戶端與CDN節點建連IP=Proxy 伺服器IP=192.168.0.1

    • 用戶端真實IP(即x-forwarded-for要求標頭攜帶的左邊第一個IP)≠用戶端與CDN節點建連IP。

少數ISP在特定地區可能會分配私人IP地址給使用者端,導致CDN節點接收到的是使用者的私人IP地址。

說明

私人IP位址範圍有以下三個:

  • A類私人IP地址:10.0.0.0~10.255.255.255,子網路遮罩:10.0.0.0/8

  • B類私人IP地址:172.16.0.0~172.31.255.255,子網路遮罩:172.16.0.0/12

  • C類私人IP地址:192.168.0.0~192.168.255.255,子網路遮罩:192.168.0.0/16

匹配運算子(matchOperator)

名稱

網域名稱配置功能函數condition中對應的配置參數

含義

等於

matchOperator為equals。

變數完全等於匹配值或者完全不等於匹配值的時候,條件才成立。

不等於

matchOperator為equals,並且參數negate的值為true。

存在

matchOperator為exists。

變數存在或者不存在時,條件即成立。

不存在

matchOperator為exists,並且參數negate的值為true。

包含其中任意一個

matchOperator為contains。

變數包含(不包含)任意一個匹配值的時候,條件即成立。最多支援32個匹配值。

包含匹配的情況有兩種:

  • 精確匹配:直接輸入匹配對象,包含:a,必須=a才能匹配上。

  • 萬用字元匹配:可以加入*作為萬用字元,可以支援配置a**a*a*,可以對應abc、bca、bcabc。

不包含其中任意一個

matchOperator為contains,並且參數negate的值為true。

大於

matchOperator為gt。

>

小於

matchOperator為lt。

<

大於等於

matchOperator為ge。

>=

小於等於

matchOperator為le

<=

正則匹配

matchOperator為regex。

匹配值可以填寫Regex,實現對變數的正則匹配。

說明

通過控制台或者OpenAPI來配置的情況下,無法使用正則相關的匹配運算子(包括正則匹配和正則不匹配),但是可以查看已經存在的配置,如果要使用正則相關的匹配運算子,請提交工單申請,或者使用邊緣安全加速產品

正則不匹配

matchOperator為regex,並且參數negate的值為true。

萬用字元

萬用字元號

含義

?

表示匹配任意1個字元。

*

表示匹配任意多個字元。

當前支援引用規則條件的功能

功能分類

功能名稱

基本配置

條件來源站點

緩衝配置

緩衝到期時間

修改出站回應標頭

訪問URL改寫規則

自訂Cachekey

回源配置

修改出站要求標頭

修改入站回應標頭

重寫回源參數

指定來源站點回源HOST

存取控制

配置Referer黑/白名單

配置URL鑒權

配置IP黑/白名單

配置UA黑白名單

效能最佳化

忽略參數

視頻相關

配置Range回源

流量限制

單請求限速

操作步驟

  1. 登入CDN控制台

  2. 在左側導覽列,單擊域名管理

  3. 域名管理頁面,找到目標網域名稱,單擊操作列的管理

  4. 在指定網域名稱的左側導覽列,單擊規則引擎

  5. 單擊添加规则

  6. 添加规则頁面,設定规则名称規則內容

  7. 單擊提交,完成配置。