Cache

Varnish 中的主機列表

  • January 26, 2015

我正在執行一個具有多個不同網站的 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);
   }
}

請注意,您也可以使用正則表達式…不確定哪個是最好的…

引用自:https://serverfault.com/questions/343299