我在Digital Ocean Ubuntu VM上运行一个独立的清漆实例,基本上运行正常。该设置用于加载一个旧的wordpress服务器,该服务器位于其他任何地方。这很有效,但我很难清除内容。在谈论清除时,我的意思是使URL的缓存无效,以强制清漆从后端获取一个新版本(只是为了确保我看到一些关于清除/禁止的烦恼)。
我已经设置了一个用于清除的ACL,据我所知,使用varnishlog可以接受清除 - 一方面来自WordPress博客(W3TC处理清除)以及我试图清除的本地控制台与curl -X PURGE http://url.to.purge
问题是我仍然在浏览器中获取旧版本的URL,而不管我在本地做什么。
这就是我在vcl_recv中处理清除的方法:
if (req.method == "PURGE") {
if (!client.ip ~ purge) {
return(synth(405,"Not allowed."));
}
return (purge);
}
我每次清除都会得到VCL_error(200,Purged),所以我猜它可能没问题。
看起来我还在做错事。在给服务清漆重新启动后,完整的缓存刷新并且页面也刷新 - 直到那时清漆保留了所有时间 - 无论我有多少清洗。
我的清漆版本是4.0.3。
有什么想法吗?
谢谢,
谢
答案 0 :(得分:0)
在带有vcl 4.1的Varnish 6上获得了相同的行为。 解决此问题的唯一方法是显式定义sub vcl_purge,如下所示:
sub vcl_purge {
set req.method = "GET";
set req.http.X-Purger = "Purged";
return (restart);
}
找不到原因,这可能不是您想要的原因,因为清除后,它将从后端获取内容,而无需等待客户端请求。 但是仍然没有找到其他方法,这对我来说已经足够了。