使用varnishadm清除单个URL的清漆缓存


12

WordPress网站上正在使用Varnish。

我想清除单个URL而不是整个域的Varnish。

使用此命令,我可以为整个域重新启动Varnish:

varnishadm -T :6082 -S /etc/varnish/secret 'ban req.http.host ~ \"http://www.foo.com\" && req.url ~ \"^/\"'

但是我只想为单个URL清除清漆。

例如: www.foo.com/url_to_be_purged

我已经尝试过使用单个URL替换之前的命令:

varnishadm -T :6082 -S /etc/varnish/secret 'ban req.http.host ~ \"http://www.foo.com/url_to_be_purged\" && req.url ~ \"^/\"'

但这没有用,URL仍然是HITVarnish中的。

关于如何实现此目标的任何想法?

更新

按照ghloogh的建议,我尝试了以下命令:

varnishadm -T :6082 -S /etc/varnish/secret ban "req.http.host == http://www.foo.com && req.url == http://www.foo.com/url_to_be_purged"

我也尝试过这种变化:

varnishadm -T :6082 -S /etc/varnish/secret ban "req.http.host == http://www.foo.com && req.url == /url_to_be_purged"

但是我仍然HIT在URL中得到一个并且数据没有更新


1
伙计,停止在主机名中使用方案(http://或https://或ftp://或其他):)您的命令应为:varnishadm -T:6082 -S / etc / varnish / secret ban“ req.http .host == www.foo.com && req.url == / url_to_be_purged“
ghloogh 2013年

Answers:


20

您无需为主机名指定方案,并且可以使用严格匹配代替正则表达式:

varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban "req.http.host == example.com && req.url == /some/url/"

1
另一个答案的引号错误。> varnishadm -T 127.0.0.1:6082 -S / etc / varnish / secret“禁止req.url == / url_to_be_purged”
Jim Holmes,

0

您可以尝试以下方法:

sudo varnishadm -S /etc/varnish/secret  -T 127.0.0.1:6082 "ban req.url ~ \"http://example.com/testimage.png$\""

为我工作。


2
除了添加sudo其他答案外,它什么也没有添加。作为评论,可能会更好。
Esa Jokinen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.