我很长一段时间都在尝试在我的一些网站上放置工作清漆(3.0.4)。 我从一个干净的配置文件(提供清漆,“/usr/share/doc/varnish/examples/default.vcl.gz”)开始。
嗯,它有效,但它似乎没有缓存任何东西(我添加了标题来查看它:https://www.varnish-cache.org/trac/wiki/VCLExampleHitMissHeader)。
所以我将这些行添加到我的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://pastebin.com/gmdym1sr
编辑:也许它有一些重要性,但图像是通过像“http:/ /domain.com/?t=Thb&f=picture.jpg”这样的链接调用的(PhotoShow画廊)
你有个主意吗?提前谢谢!
答案 0 :(得分:2)
您必须过滤掉图片上的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;
}
// ...
}
现在正是这样(图像缓存的空浏览器缓存):