我运行的 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);
}
}
答案1
首先:如果条件取决于要求.一切都将在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);
}
}
请注意,您也可以使用正则表达式...不确定哪个是最好的...