web-dev-qa-db-ja.com

ニスでパージ要求を送信する方法

似たような質問は表示されませんが、お詫び申し上げます。

私たちはシステムでワニスキャッシュを実行していますが、ページが編集されたときに(かなり正常に)個別のページを削除できるシステムをインストールしたいと考えています。私たちは、HTTPヘッダーを使用して機能させることを試みています。したがって、VCLは次のように設定されます。

acl purge {
      "localhost";
#### Our server IP #####
}

sub vcl_recv {
    if (req.request == "PURGE") {
            if (!client.ip ~ purge) {
                    error 405 "Not allowed.";
            }
            return (lookup);
    }
}

sub vcl_hit {
    if (req.request == "PURGE") {
            purge;
    }
 }

sub vcl_miss {
        if (req.request == "PURGE") {
                 purge;
        }
}

しかし、私は実際にhttpパージ要求を送信する方法にこだわっています。 PHPをウェブサイトに使用しているので、以下を使用してみました:

header("PL: PURGE / HTTP/1.0");
header("Host: url to purge");

しかし、これは何もしないようです(そして、varnishlogは何もパージしているようには見えません)。

私もcURLを試してみましたが、やはり機能していないようです。ここに本当に基本的なものが欠けているのですか、それとも基本的なサウンドですか?つまり、実装にバグがありますか?

どうもありがとう、

21
flukeflume

行ってHTTPリクエストを行う必要があります。

テストされていませんが、(あなたが述べたようにカールを使用したい場合)のラインに沿っている必要があります:

$curl = curl_init("http://your.varnish.cache/url-to-purge");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PURGE");
curl_exec($curl);
36
Jeremy Roman

PURGEリクエストを送信するための迅速で汚れた効果的な方法:

curl -v -k -X PURGE URL

次のように、実際にそのステートメントを使用して小さなスクリプトを作成できます。

1)例VIでエディターを開く

 vi varnish_purge_url.sh

2)次のテキストを入力します。

#!/bin/sh

curl -v -k -X PURGE $1

(最初と最後の行の間に空白行を残すことを忘れないでください)。

3)ファイルを保存して終了します。次に、適切な属性を設定して、シェルからそれを実行します。

chmod 750 varnish_purge_url.sh

4)上記のスクリプトを作成して使用するときは、rootになる必要があります。 Ubuntuを使用している場合は、必要に応じてコマンドの前にSudoを追加してください。

5)使い方は簡単です:

./varnish_purge_url.sh URL

ここで、URLはパージするURLです。

3
Dario Fumagalli

コマンドラインを使用してパージすることもできます。コマンドSudo varnishadmを使用します。これにより、Varnishコマンドラインインターフェイスが開きます。必要に応じて、コマンドを入力してページを削除できます。たとえば、ホームページを削除するには、次のようにします。

root@staging:/etc/varnish# Sudo varnishadm
200        
-----------------------------
Varnish Cache CLI 1.0
-----------------------------
Linux,3.5.0-28-generic,x86_64,-sfile,-smalloc,-hcritbit

Type 'help' for command list.
Type 'quit' to close CLI session.

varnish> ban.url ^/$
200  
3
nish