Cookies 清漆可在不稳定cookie时去除PHPSESSID

Cookies 清漆可在不稳定cookie时去除PHPSESSID,cookies,varnish,varnish-vcl,Cookies,Varnish,Varnish Vcl,很长一段时间以来,我一直试图在我的一些网站前涂上一层清漆(3.0.4)。 我从一个干净的配置文件开始(varnish附带的文件,“/usr/share/doc/varnish/examples/default.vcl.gz”) 好吧,它正在工作,但它似乎没有缓存任何东西(我添加了头以查看它:) 因此,我在我的sub_recv中添加了这些行: if (req.url ~ "\.(png|gif|jpg|jpeg|js|css|ico|pdf)$") { unset req.http.Co

很长一段时间以来,我一直试图在我的一些网站前涂上一层清漆(3.0.4)。 我从一个干净的配置文件开始(varnish附带的文件,“/usr/share/doc/varnish/examples/default.vcl.gz”)

好吧,它正在工作,但它似乎没有缓存任何东西(我添加了头以查看它:)

因此,我在我的sub_recv中添加了这些行:

if (req.url ~ "\.(png|gif|jpg|jpeg|js|css|ico|pdf)$") {     
unset req.http.Cookie;      
    }
当我写下这些行时,我的会话在加载一些图片后就停止了,varnishlog向我显示不同PHPSESSID的日志:

16 RxHeader     c Cookie: PHPSESSID=gkl02227ef1iq4joai0tsbi026
23 TxHeader     b Cookie: PHPSESSID=oomupd8tnvirpn8eamsertuih4
...
已在此处发布完整的default.vcl:

编辑:也许它有一些重要性,但调用图像时会使用类似“http://domain.com/?t=Thb&f=picture.jpg”(PhotoShow gallery)的链接


你有主意吗?提前谢谢

您必须通过图像过滤回Cookie到您的客户:

sub vcl_fetch {
  // ... Line .82 in your pastebin
  if (req.url ~ "\.(png|gif|jpg|jpeg|js|css|ico|pdf)$") {     
    unset beresp.http.set-cookie;      
  }
  // ...
}
现在发生的就是这样(图像缓存有一个空的浏览器缓存):

  • 要求到清漆,清漆去除饼干
  • 在不使用cookie的情况下将请求传递到后端
  • Backend full将填充请求并提供一个带有新值的设置Cookie头文件(在没有任何Cookie的情况下)
  • Varnish无法缓存对象,因为它有一个设置的Cookie头(粘贴箱上的第102行)
  • Varnish将图像与新cookie一起传递到浏览器
  • 浏览器将覆盖符合接收到的设置cookie头的PHPSESSID cookie

  • 它就像一个符咒!谢谢你的解释,我理解我的PHPSESSID(Tx和Rx)之间的区别。谢谢!