你能帮我确认一下varn中vcl_recv的默认行为吗?
default.vcl文件中的vcl_recv定义在应用程序设置中被注释掉。
我们在vcl文件中提供了vcl_recv的自定义版本,但未指定return(lookup)或lookup语句。但是,在尝试访问图像或静态内容时,缓存似乎是正确的。 varnish是否在内部实现了某种逻辑,以便在default.vcl< vcl_recv和用户定义的vcl_recv中定义的内容之外进行缓存?
由于
答案 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