我正在运行一个VPS与多个不同的网站,并在前面的清漆进行caching。 但是,有些网站不应该被caching。 我不想为每个网站制定单独的规则,而是制定一个通用的“不要caching”的列表,这个列表与一些规则相关。 可能?
在下面,我草拟了我想要的:VCLconfiguration中不应该被caching的网站列表(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规则实际上是无用的。
现在你不需要告诉“不应该caching哪些域”两次,只需要像这样在vcl_recv中使用单个条件:
sub vcl_recv { if (req.http.host == "domain1.com" || req.http.host == "domain2.com") { return(pass); } }
请注意,您也可以使用正则expression式…不知道哪个是最好的…