2

ロードバランサーの背後で実行されている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

4

1 に答える 1

3

ローカルホストに接続する必要がありますが、Varnishはパージするホストを知る必要があります。

よくわかりませんが、次のようなものを試してください。

curl -X PURGE -H "Host: www.mysite.com" http://127.0.0.1/product-47267.html
于 2012-11-13T20:47:41.160 に答える