Varnish vcl_recv的默认行为

标签 varnish varnish-vcl

您能否帮助我确认Varnish中vcl_recv的默认行为?

default.vcl文件中包含的vcl_recv定义在应用程序设置中被注释掉。

我们在vcl文件中提供了vcl_recv的自定义版本,而没有指定return(lookup)或lookup语句。但是,在尝试访问图像或静态内容时,缓存似乎是正确的。 Varnish 内部是否实现某种逻辑以在default.vcl的vcl_recv和用户定义的vcl_recv定义的内容之上进行缓存?

谢谢

最佳答案

说明

当您定义自定义 VCL(在本例中为 vcl_recv)时,Varnish 会自动将默认 VCL 附加到您的 VCL 中。

请记住,如果您在 VCL 中执行诸如 return(lookup)/pass/etc 之类的操作,则在执行该行后将不会执行 varnish 默认 VCL。

Varnish docs:

It is executed right after any user-specified VCL, and is always present. You can not remove it.



和:

Consider either replicating all the logic in your own VCL, or letting Varnish fall through to the default VCL.



示例
sub vcl_recv {
      if (req.http.host ~ "dev") {
             return(pass);
      }
}

这不会将任何在其主机中具有“dev”的请求保存在缓存中。但它仍然会在缓存中保存其他任何内容。

额外:

确定 Varnish 是否有效的好工具:Here

关于 Varnish vcl_recv的默认行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29656953/

相关文章:

symfony - 如何使缓存标记与 FOSHttpCacheBundle 和 Varnish 一起使用?

regex - Varnish :在替换字符串中使用来自正则表达式的匹配

apache2 - N个过期对象的数量很高。为什么? -(里面是我的varnishstat和default.vcl)

symfony - 如何缓存复杂的计算临时数据

django - 如何配置Nginx> Varnish> uWSGI设置

varnish - 对于 Varnish 级别的特定文件的所有请求,如何返回 500 响应?

caching - 如何配置 Varnish 来缓存范围请求?

c - Varnish 4 + Pounds - 绕过特定 IP 地址的缓存

Varnish 正则表达式或 if (bereq.url ~ "

wordpress - Varnish 未启动语法错误