清洗Varnish 3.0.3集群

时间:2012-11-13 19:33:47

标签: cluster-computing varnish

我有一个网站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

1 个答案:

答案 0 :(得分:3)

您需要连接到 localhost ,但Varnish仍然需要知道您想要破坏的主机

我不确定但尝试以下内容:

curl -X PURGE -H "Host: www.mysite.com" http://127.0.0.1/product-47267.html