当 varnish 返回缓存时,它是否还会返回后端生成的 cookie,还是仅返回到前端的 css、图像和 html?我曾有用户告诉我他们一直收到错误的 cookie,所以我想,因为 cookie 是基于地理位置数据的,所以原因是 varnish 缓存。如果是这样,有没有办法阻止 varnish 返回 cookie 的任何缓存数据?
答案1
Varnish 的内置 VCL 行为会将Set-Cookie
源服务器发送的标头发送到客户端。这将允许客户端在浏览器中设置适当的 cookie。
但是,由于Set-Cookie
标头暗示了状态更改,因此 Varnish 不会将这些结果存储在缓存中,而是返回所谓的命中或未命中在接下来的 2 分钟内。
这意味着该对象的下一个请求将自动绕过缓存。如果任何后续后端响应不再包含标Set-Cookie
头,Varnish 将认为该响应可缓存。
看https://github.com/varnishcache/varnish-cache/blob/6.0/bin/varnishd/builtin.vcl#L157-L165对于定义此行为的内置 VCL。
除非您的 VCL 主动
vcl_backend_response
干预子程序中的逻辑,否则默认行为将始终有效,并且Set-Cookie
不会缓存包含标头的响应。
请分享您的 VCL 以查看是否是这种情况。