Varnish 中的主机列表

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);
  }
}

答案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);
    }
}

请注意,您也可以使用正则表达式...不确定哪个是最好的...

相关内容