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/

相关文章:

Varnish 版本显示为 "retired"

varnish - 如何在 Varnish 中调试VCL?

caching - Varnish 仅缓存特定的URL路径

php - 错误 503 后端获取失败

Varnish 504网关超时

Varnish 返回(获取/交付)与分块编码

nginx - 在多个站点上使用Nginx设置Varnish

varnish - 多个 url 清除 Varnish 问题

redirect - Varnish 重定向基于浏览器语言设置

list - 在 VCL(Varnish 配置语言)中定义列表