之前在《用Varnish+Super Static Cache+Varnish HTTP Purge给WordPress疯狂加速》文中推荐的是Varnish HTTP Purge这个插件,但是据我这几个月测试下来,这玩意根本不会刷新varnish缓存,哪怕是varnish与web server相同机器都不行,本文做一纠正。

这个鸟事情纠缠很久了,趁着4天假期,打算搞一个尽可能ok的方案出来,结果不行,非常郁闷……

本来打算着手自己写一个插件了,但是人懒起来办法还挺多的,我查阅测试了所有的相关插件,终于发现了一个能用的,而且还跟我的环境很匹配,我这是多个varnish节点。

插件名:WPVM ,在插件--安装插件里面搜索一下就有了,安装,启用,然后按照下面的进行设置:

1,首先,确定你的varnish管理端口是多少,默认是6082,并且需要注意默认绑定是127.0.0.1,也就是说只有本机可连接,如果你像我一样有多个前端节点,或者你的web服务器和varnish服务器不在相同节点上,那么需要编辑 /etc/systemd/system/varnish.service 文件(或者你的系统里对应的配置文件),将管理端口绑定为0.0.0.0:6082,如图:

20160918204003

2,记下你的 /etc/varnish/secret 字符串,或者你系统中对应的文件路径

3,进入wordpress的设置--varnish里面,先看图:

2其中第一个框默认是只有一行的,这里依次填写你的varnish的ip、端口和secret内容,如果你有多个节点,点第二个框的+号,填写对应内容就行。

特别注意:第三个框必须勾选,这里不勾选的话是通过http协议发送purge头信息来清除缓存;勾选的话则通过varnish的管理端口来完成。必须勾选的原因是一旦遇到dns不稳定或者什么的原因,那会很蛋疼的,所以尽量找一个相对靠谱的方法。而且我没测试的是,如果插件只通过dns来清除,那么其他节点的内容就永远不靠谱了,而且一旦遇到dns不稳定,那就跪了。

然后点“Save Changes”保存设置就可以了,如果不确定是否生效,可用点下面的测试按钮试一下,我这里目前测试是非常棒的,每当更新的时候,3个节点都自动刷新了。

 

注意,还有至少10个插件支持varnish,但据我测试都不行,甚至还有些只支持varnish 2.x版本,现在都4.1了……

 

对了,还有一点,varnish的default.vcl里面的 acl aclPurge 这个函数需要定义好你的web服务器ip,否则是不允许刷新的

作者 听涛

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注