varnish vcl_recv默认行为

时间:2015-04-15 17:33:12

标签: varnish varnish-vcl

你能帮我确认一下varn中vcl_recv的默认行为吗?

default.vcl文件中的

vcl_recv定义在应用程序设置中被注释掉。

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

由于

1 个答案:

答案 0 :(得分:0)

<强>解释

当您定义自定义VCL(在这种情况下为vcl_recv)时,Varnish会自动将默认VCL附加到您的身上。

请记住,如果您在VCL中执行返回(查找)/传递/等操作,则在执行该行后将不会执行varnish默认VCL。

来自Varnish docs

  

它在任何用户指定的VCL之后执行,并且始终存在。你不能删除它。

  

考虑复制你自己的VCL中的所有逻辑,或者让Varnish进入默认的VCL。

示例

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

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

<强>附加

确保清漆工作的好工具:Here