似たような質問は表示されませんが、お詫び申し上げます。
私たちはシステムでワニスキャッシュを実行していますが、ページが編集されたときに(かなり正常に)個別のページを削除できるシステムをインストールしたいと考えています。私たちは、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を試してみましたが、やはり機能していないようです。ここに本当に基本的なものが欠けているのですか、それとも基本的なサウンドですか?つまり、実装にバグがありますか?
どうもありがとう、
行ってHTTPリクエストを行う必要があります。
テストされていませんが、(あなたが述べたようにカールを使用したい場合)のラインに沿っている必要があります:
$curl = curl_init("http://your.varnish.cache/url-to-purge");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PURGE");
curl_exec($curl);
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です。
コマンドラインを使用してパージすることもできます。コマンド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