令牌校正影響CDN緩衝的解決方案
背景資訊
如果您已經接入DCDN並配置了緩衝規則,同時啟用了WAF令牌校正,但是WAF在令牌校正時會在URL中隨機插入參數,導致請求未能命中DCDN緩衝規則,直接存取後端來源站點。這會增加來源站點的負載和壓力,導致效能下降、回應時間延長,並增加潛在的安全風險。為瞭解決這一問題,您可以通過自訂CacheKey忽略這些參數,從而繼續利用DCDN緩衝,降低回源率。
前提條件
-
已開通Bot管理並開啟進階Bot防禦(動態令牌挑戰),具體操作,請參見開通Bot管理、建立網頁防爬情境化防護規則。
方案概覽
本文以使用DCDN為例,配置自訂CacheKey只需2步:
-
配置自訂CacheKey:忽略URL中的被插入的隨機參數,從而提高緩衝的命中率,降低回源率,減少請求的回應時間和頻寬消耗。
-
測實驗證:對配置進行全面測試,確保緩衝策略、WAF令牌校正和自訂CacheKey配置正確無誤並正常運行。
如果您使用的是阿里雲CDN,則其配置方法相同。
架構圖
步驟一:配置自訂CacheKey
1. 擷取令牌參數名
在配置自訂 CacheKey 之前,您需要通過瀏覽器訪問目標網站觸發令牌校正以擷取相關的參數名。
https://xxx/xxxdc.html?md5__1524=eqRxuD9iDtKCqAKD%3DD%2FD0i5twcbDRiYPx6moD
令牌校正插入的參數名稱針對不同網域名稱是隨機產生的,但某個網域名稱下所有請求插入的令牌參數名是固定的,其格式為XXX__隨機數字,其中XXX可以是下面任意一個單詞。
timestamp、md5、type、ipcity、decode、encode、time、refer。
2. 配置自訂CacheKey
-
登入DCDN控制台,在左側導覽列,單擊域名管理後,單擊目標網域名稱操作列的配置。
-
在指定網域名稱的左側導覽列,單擊緩衝配置,選擇自訂CacheKey頁簽,單擊配置。
說明支援對URI、請求參數、HTTP HEADER進行修改,同時支援自訂變數,從請求中提取需要的欄位。最終的Cachekey將由URI、請求參數、HTTP HEADER、自訂變數四部分組合而成。
-
在自訂Cachekey對話方塊中,參數操作選擇刪除,並輸入擷取的令牌參數名。其他配置詳情,請參見自訂Cachekey參數說明。
步驟二:測實驗證
對配置進行全面測試,確保緩衝策略、WAF令牌校正和自訂CacheKey配置正確無誤並正常運行。
瀏覽器開啟開發人員工具訪問網站,單擊Network,查看Response Headers資訊。如果存在X-Cache頭且值包含HIT關鍵字,則表明配置生效命中快取資料。
X-Cache表示是否命中緩衝,MISS表示不命中,HIT表示命中。
Response Headers
Accept-Ranges: bytes
Age: 7
Ali-Swift-Global-Savetime: 1730188630
Connection: keep-alive
Content-Length: 14
Content-Type: text/html; charset=UTF-8
Date: Tue, 29 Oct 2024 07:57:10 GMT
Eagleid: 7521a19d17301886372938421e
Etag: "e-625470f0c1bb7"
Last-Modified: Fri, 25 Oct 2024 06:16:25 GMT
Server: Tengine
Timing-Allow-Origin: *
Via: cache19.l2cn3137[58,57,200-0,M], cache11.l2cn3137[60,0], kunlun4.cn7737[0,0,200-0,H], kunlun9.cn7737[1,0]
X-Cache: HIT TCP_MEM_HIT dirn:-2:-2
X-Swift-Cachetime: 86400
X-Swift-Savetime: Tue, 29 Oct 2024 07:57:10 GMT