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

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

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 仍然是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

您不需要为主机名指定方案,并且可以使用严格匹配而不是正则表达式:

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$\""

对我有用。

相关内容