ロードバランサーの背後で実行されているWebサイトwww.mysite.comがあります。ロードバランサークラスターには2つのサーバーがあります。それぞれがVarnish3.0とApache/PHPを実行します(Varnishが負荷分散できることはわかっていますが、別のLB技術を優先しています)。
時々私はURLを1つか2つパージする必要があります...
私のVCLには、PURGEの信頼できるURLとして127.0.0.1があります。そして、標準のパージ構成:
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);
}
ここで、シェルスクリプトからURLを無効にします。
curl -X PURGE http://127.0.0.1/product-47267.html
動作しませんが、
curl -X PURGE http://www.mysite.com/product-47267.html
動作します。ここでの問題は、クラスター内の各ローカルマシンで無効にする必要があることです。ロードバランサーを介してリクエストを出し入れしないでください(どのマシンがPURGEを実行するかわからないため)。
これが理にかなっていることを願っています
LW