Varnish
添加 3 個新 cookie 後確定是否需要更改清漆配置
# Keep all these cookie if (req.http.Cookie) { set req.http.Cookie = ";" + req.http.Cookie; set req.http.Cookie = regsuball(req.http.Cookie, "; +", ";"); set req.http.Cookie = regsuball(req.http.Cookie, ";(location|usertype|viewed-products)=", "; \1="); set req.http.Cookie = regsuball(req.http.Cookie, ";[^ ][^;]*", ""); set req.http.Cookie = regsuball(req.http.Cookie, "^[; ]+|[; ]+$", ""); if (req.http.Cookie == "") { unset req.http.Cookie; } }
我有這個清漆配置,我添加了 3 個新的 cookie,所以我需要改變什麼嗎?據我了解,即使我添加了 3 個新 cookie,用於確定您將從 varnish 接收哪些記憶體值的唯一 cookie 僅由您保留在配置中的那些確定,因此它們將由位置確定、使用者類型和查看的產品。由於我們只有 2 個位置、3 個使用者類型和 3 個產品,因此我們不能有超過 3 3 2 18 個不同的記憶體值。我對麼?
沒錯,添加記憶體不需要的新 cookie 不會影響您的 VCL 配置。
清漆日誌輸出
如有疑問,請使用
varnishlog
. 這是一個可用於監控 cookie 行為的命令:varnishlog -g request -i ReqUrl -I ReqUnset:Cookie -I ReqHeader:Cookie
此命令將僅顯示請求的 URL 以及設置和取消設置 cookie 值的各種日誌行。
想像一下將以下 HTTP 請求發送到您的 Varnish 伺服器:
curl -H "Cookie: foo=bar; location=test" http://localhost
此請求向 Varnish 發送 2 個 cookie:
foo
應該刪除的未知cookielocation
應該保留的cookie這是日誌記錄輸出:
* << Request >> 132325 - ReqURL / - ReqHeader Cookie: foo=bar; location=test - ReqUnset Cookie: foo=bar; location=test - ReqHeader Cookie: ;foo=bar; location=test - ReqUnset Cookie: ;foo=bar; location=test - ReqHeader Cookie: ;foo=bar;location=test - ReqUnset Cookie: ;foo=bar;location=test - ReqHeader Cookie: ;foo=bar; location=test - ReqUnset Cookie: ;foo=bar; location=test - ReqHeader Cookie: ; location=test - ReqUnset Cookie: ; location=test - ReqHeader Cookie: location=test
如您所見,
foo
cookie 被很好地剝離,而location
cookie 被保留。控制記憶體變化
我看到您正在嘗試控制記憶體變化的數量,這是有道理的。
問題是惡意請求可能會創建不需要的記憶體變體。
如果每個 cookie 的值數量有限,我建議將它們包含在您的記憶體變體邏輯中。
您是否為此使用
vcl_hash
邏輯中的 cookie 值?或者你用Vary: Cookie
它嗎?