我有一个网站www.mysite.com在负载均衡器后面运行。负载均衡器群集中有两个服务器。每个运行Varnish 3.0和Apache / PHP(我知道清漆可以为我加载平衡 - 但我们偏爱不同的LB技术)。
每次我都需要清除一两个网址......
在我的VCL中,我将127.0.0.1作为PURGE的可信URL。还有一个标准的清除配置:
vcl_recv:
....
if (req.request == "PURGE") {
# Allow requests from trusted IPs to purge the cache
if (!client.ip ~ trusted) {
error 405 "Not allowed.";
}
return(lookup); # @see vcl_hit;
}
...
sub vcl_hit {
if (req.request == "PURGE") {
purge;
error 200 "Purged (via vcl_hit)";
}
if (!(obj.ttl > 0s)) {
return (pass);
}
return (deliver);
}
sub vcl_miss {
if (req.request == "PURGE"){
purge;
error 404 "Not in Cache";
}
return (fetch);
}
现在从一个shellcript我想使一个URL无效。
curl -X PURGE http://127.0.0.1/product-47267.html
不有效,但
curl -X PURGE http://www.mysite.com/product-47267.html
有效吗?这里的问题是 - 我需要在集群中的每台本地机器上无效 - 没有请求通过负载均衡器退出并返回(因为我不知道哪台机器将采取PURGE)。
希望这是有道理的
LW
答案 0 :(得分:3)
您需要连接到 localhost ,但Varnish仍然需要知道您想要破坏的主机。
我不确定但尝试以下内容:
curl -X PURGE -H "Host: www.mysite.com" http://127.0.0.1/product-47267.html