規則相關的功能在以下三個特性上存在差異。本文將對這三個特性的概念進行詳細說明,並明確每個規則相關功能的特性差異。
規則配置和全域配置的生效優先順序
同一個功能下添加的規則配置的生效優先順序指的是規則匹配的執行順序。每一條規則配置在添加完成以後,都會有一個規則列表的序號,規則配置將會按序號從小到大的順序來匹配。
每個規則相關的功能都包含規則配置和全域配置,所有規則配置的生效優先順序都高於全域配置,一個功能同時添加了規則配置和全域配置的情況下,如果使用者請求匹配上規則條件,則規則配置會優先執行,如果沒有匹配到規則條件,則最後會執行全域配置(如果全域配置為空白,則會按照ESA節點上的預設設定來執行)。
序號 | 配置 | 規則條件 |
1 | 規則配置1 | 條件A(不匹配) |
2 | 規則配置2 | 條件B |
3 | 規則配置3 | 條件C |
全域配置 | 無 | |
執行順序 | 規則配置的執行順序為:序號1 > 序號2 > 序號3 > 全域配置。 | |
規則功能的可重新進入性
功能模組的可重新進入性指的是某個指令是否可以安全地在多個階段、多次調用,並且每次調用的行為是獨立的、疊加的、互不影響的。
可重新進入的功能
在一個請求的處理過程中,可重新進入的功能可以被多次調用,並且每次調用的行為是獨立的、疊加的、互不影響的,例如:修改出站要求標頭功能是可重新進入功能,同一個用戶端請求如果匹配上多個規則條件,則對應的每個規則配置都會執行。
樣本1:修改出站要求標頭
假如一個使用者請求同時匹配條件B和條件C,那麼配置2和配置3都會執行,全域配置也會執行,但是因為全域配置沒有設定執行動作,因此沒有影響,最終執行結果是使用者請求將會被加上以下2個要求標頭:
animal: cat
fruit: apple
序號 | 規則配置 | 規則條件 | 功能配置 | 是否執行 |
1 | 規則配置1 | 條件A(不匹配) | 新增一個要求標頭,要求標頭名稱為food,要求標頭值為rice。 | 否 |
2 | 規則配置2 | 條件B | 新增一個要求標頭,要求標頭名稱為animal,要求標頭值為cat。 | 是 |
3 | 規則配置3 | 條件C | 新增一個要求標頭,要求標頭名稱為fruit,要求標頭值為apple。 | 是 |
全域配置 | 無 | 無 | 是 | |
不可重新進入的功能
在一個請求的處理過程中,不可重新進入的功能只能被調用一次,調用結束以後就跳出對應的功能模組。同一個用戶端請求如果匹配上多個規則條件,則只有第一個匹配上的規則配置會執行。
樣本2:重寫URL
假如一個使用者請求同時符合條件B和條件C,那麼僅配置2會執行,由於規則配置2序號靠前,先匹配上了條件B,執行結果是使用者請求URL的路徑被改寫為/animal:
原始請求:http://example.com/test
重寫後的請求:http://example.com/animal
序號 | 規則配置 | 規則條件 | 功能配置 | 是否執行 |
1 | 規則配置1 | 條件A(不匹配) | 將使用者請求URL的路徑被改寫為/food。 | 否 |
2 | 規則配置2 | 條件B | 將使用者請求URL的路徑被改寫為/animal。 | 是 |
3 | 規則配置3 | 條件C | 將使用者請求URL的路徑被改寫為/fruit。 | 否 |
全域配置 | 無 | 無 | 否 | |
規則配置的生效顆粒度
規則配置的生效顆粒度包含功能維度和子功能維度。
功能維度
規則作用於整個功能模組,配置按整個功能模組生效。
使用者請求匹配上某個規則條件時,如果某個子功能模組的配置為空白,則該子功能模組將按照未添加配置來執行。
樣本1:SSL/TLS規則(不可重新進入功能,並且規則配置按功能維度生效)
假設使用者請求同時符合條件 B 和條件 C,由於規則配置2序號靠前,先匹配上了條件B,則僅執行配置 2,其中 TLS 加密套件為空白的部分按預設設定生效。
序號 | 規則配置 | 規則條件 | SSL/TLS加密 | TLS加密套件與協議版本配置 | OCSP Stapling | HTTP/2 | HTTP/3(QUIC) | 是否執行 |
1 | 規則配置1 | 條件A(不匹配) | 開啟 | - | 關閉 | 關閉 | 關閉 | 否 |
2 | 規則配置2 | 條件B | 開啟 | - | 關閉 | 關閉 | 關閉 | 是 |
3 | 規則配置3 | 條件C | 開啟 | - | 開啟 | 開啟 | 開啟 | 否 |
全域配置 | 無 | 關閉 | - | 關閉 | 開啟 | 開啟 | 否 | |
子功能維度
規則作用於子功能模組,配置按子功能模組生效。
使用者請求匹配上某個規則條件時,如果某個子功能模組的配置為空白,則該子功能模組將繼續往下匹配規則條件,直到命中規則條件的同時,子功能模組的配置不為空白。
樣本2:緩衝規則(不可重新進入功能,並且規則配置按子功能維度生效)
以下為緩衝規則配置樣本。假設使用者請求同時符合條件 B、C 和 D,按照序號從小到大匹配則各子功能,未配置項按全域預設設定執行。
序號 | 配置 | 規則條件 | 緩衝資格 | 瀏覽器緩衝到期時間 | 邊緣緩衝到期時間 | 自訂CacheKey | 連接埠緩衝 | 響應到期緩衝 | 緩衝保持 |
1 | 規則配置1 | 條件A(不匹配) | 符合緩衝條件 | - | 優先遵循來源站點緩衝策略(如果存在),否則不緩衝 | - | - | 關閉 | - |
2 | 規則配置2 | 條件B | 符合緩衝條件 | - | 優先遵循來源站點緩衝策略(如果存在),否則不緩衝 | - | - | 關閉 | - |
3 | 規則配置3 | 條件C | 繞過緩衝 | 不緩衝 | - | - | - | - | - |
4 | 規則配置4 | 條件D | 符合緩衝條件 | - | 忽略來源站點緩衝策略,使用自訂緩衝TTL=1小時 | 忽略查詢字串 | - | 關閉 | - |
5 | 規則配置5 | 條件E | 符合緩衝條件 | - | - | - | - | 關閉 | - |
全域配置 | 無 | - | - | - | - | 預設關閉 | - | 預設關閉 | |
最終生效配置 | 符合緩衝條件 | 不緩衝 | 優先遵循來源站點緩衝策略(如果存在),否則不緩衝 | 忽略查詢字串 | 關閉 | 關閉 | 關閉 | ||
不同功能特性差異表
功能分類 | 規則功能名稱 | 規則功能的可重新進入性 | 規則配置的生效顆粒度 | 規則配置的生效優先順序 |
SSL/TLS | 不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 | |
不可重新進入 | 子功能 | 按照規則列表的序號,序號越小,優先順序越高。 | ||
轉換規則 | 不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 | |
可重新進入 | 子功能 | 按照規則列表的序號,序號越小,優先順序越高。 | ||
可重新進入 | 子功能 | 按照規則列表的序號,序號越小,優先順序越高。 | ||
重新導向 | 不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 | |
緩衝 | 不可重新進入 | 子功能 | 按照規則列表的序號,序號越小,優先順序越高。 | |
內容最佳化 | 不可重新進入 | 子功能 | 按照規則列表的序號,序號越小,優先順序越高。 | |
不可重新進入 | 子功能 | 按照規則列表的序號,序號越小,優先順序越高。 | ||
不可重新進入 | 子功能 | 按照規則列表的序號,序號越小,優先順序越高。 | ||
網路最佳化 | 不可重新進入 | 子功能 | 按照規則列表的序號,序號越小,優先順序越高。 | |
回源 | 不可重新進入 | 子功能 | 按照規則列表的序號,序號越小,優先順序越高。 | |
組態管理 | 不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 | |
流量 | 不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 | |
不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 需要注意是否設定了結束動作:
| ||
安全防護 | 不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 | |
不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 | ||
不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 | ||
不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 | ||
不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 | ||
不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 | ||
不可重新進入 | 功能 | 按照規則列表的序號,序號越小,優先順序越高。 |