2012-02-09 2 views
17

私は同様の質問を見ることはできませんが、私が大量に捨てている場合は謝罪します。ワニスでパージ要求を送信するには

私たちのシステムではワニスキャッシュを実行していますが、編集時に個々のページをパージできるシステムをインストールしたい(かなり正常です)。私たちは、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で実験しましたが、やはり動作していないようです。ここで本当に基本的なものが欠けているのか、それとも基本的なサウンドなのでしょうか?私の実装はうんざりしていますか?

ありがとう、

答えて

30

あなたはHTTPリクエストを行う必要があります。

テストされていないが、(あなたが述べたようにカールを使用する場合)の線に沿って次のようになります。

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

PURGEは、GETやPOSTのようなHTTPリクエストですが、RFC 2616の日付を更新しますが、Squid、Varnish、Apache Traffic Serverなどのコンテンツキャッシュやプロキシで使用されます。 "PURGE curl_setopt"の簡単なgoogleが[この例]を投げた(http://www.rwahyudi.com/linux/purge-squid-cache-using-curl-without-squidclient/)。お楽しみください:) – TerryE

+1

両方のおかげで多くの!とても感謝しております! :) – flukeflume

+1

また、よりアドホックなアプローチやスクリプト主導のアプローチでは、 'curl -XPURGE" http://your.varnish.cache/url-to-purge "' –

3

ます。また、コマンドラインを使用してパージすることができます。コマンドsudo varnishadmを使用します。ワニスコマンドラインインターフェイスが開きます。必要に応じてコマンドを入力してページをパージすることができます。たとえば、ホームページをパージするには、次のようにしてください:

[email protected]:/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 
+1

を使用することもできます。いいえ、varnishadmからパージできませんあなたの例のように禁止するだけです。禁止とパージは、最終結果が似ていても同じ機能ではありません。 – Clarence

-1

多分、私は新しいバージョンですが、上記のものが私にとってはうまくいかなかったでしょう。これはやった:PURGE要求を送信するために

sub vcl_hit { 
    if (req.request == "PURGE") { 
    ban("req.url ~ "+req.url); 
    error 200 "Purged."; 
    } 
} 
2

、クイック汚いと効果的な方法を:

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)使い方は簡単です:

URL
./varnish_purge_url.sh URL 

をパージするURLです。

+0

ここに助けがありますか? :) http://stackoverflow.com/questions/35632607/is-the-http-verb-purge-idempotent –

関連する問題