Cache
Varnish 中的主機列表
我正在執行一個具有多個不同網站的 VPS,並在前面使用 Varnish 進行記憶體。但是,某些網站不應被記憶體。我不想為每個網站制定單獨的規則,而是製定一個通用的“不要記憶體”列表,它與一些規則相關聯。可能的?
在下文中,我勾勒出我想要的內容:VCL 配置中不應記憶體的網站列表(ACL 語法)。
list cache_blacklist { "domain1.com"; "domain2.com"; } sub vcl_recv { if (req.http.host ~ cache_blacklist) { return(pass); } } sub vcl_fetch { if (req.http.host ~ cache_blacklist) { return(hit_for_pass); } }
第一件事:如果條件取決於請求,則不需要設置 vcl_fetch 規則。一切都將在 vcl_recv 中處理。
僅當條件取決於伺服器響應時才需要 vcl_fetch 規則。
HTTP 主機在請求中…您的 vcl_fetch 規則實際上是無用的。
現在您不需要告訴“哪些域不應被記憶體”兩次,只需在 vcl_recv 中使用一個條件,如下所示:
sub vcl_recv { if (req.http.host == "domain1.com" || req.http.host == "domain2.com") { return(pass); } }
請注意,您也可以使用正則表達式…不確定哪個是最好的…