Varnish 正在 Wordpress 网站中使用。
我想清除单个 URL 的 Varnish,而不是整个域的 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 仍然是HIT
Varnish。
关于如何实现这一目标,我有什么想法吗?
更新
根据 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
您不需要为主机名指定方案,并且可以使用严格匹配而不是正则表达式:
varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban "req.http.host == example.com && req.url == /some/url/"
答案2
您可以尝试以下操作:
sudo varnishadm -S /etc/varnish/secret -T 127.0.0.1:6082 "ban req.url ~ \"http://example.com/testimage.png$\""
对我有用。