2012-06-20 8 views
11

HTTPを使用してワニスの要素をパージします。このhttpコールは、ワニス自体の背後にあるバックエンドサーバーからトリガーされるため、バックエンドサーバーはHTTP以外のアクセス権を持ちません。HTTPとREGEXを使用したワニスパージ

私はそのように私は

curl -X PURGE http://www.example.com/image/123/photo-100-150.jpg 

のために正常に動作に従って、ACLで以下のパージルールを実装しているが、私は正規表現

curl -X PURGE http://www.example.com/image/123/*.jpg 

を使用してHTTP経由でURLをパージすることができるようにしたいです新しい画像がアップロードされると、この画像の縮尺変更されたすべてのバージョンをクリアします。方法はありますか?

答えて

9

これを試してみてください。

vcl_recv { 
    if (req.request == "PURGE") { 
      if (!client.ip ~purge){ 
        error 405 "Not allowed"; 
      } 
    ban("req.http.host == " +req.http.host+" && req.url ~ "+req.url); 
    error 200 "Ban added"; 

    } 
0

あります。

VCLでは、「man vcl」に記載されている禁止方法を使用します。着信要求に対してフィルタを作成します。これを毎秒2回以上の速度で使用する場合は、Googleに "ban luker friendly"を推奨し、それに応じて式を書き換えてください。

未テストコード:ニス3.0とアップした場合

sub vcl_recv { 
     if (req.method == "PURGERE" and client.ip ~ admin_network) { 
      ban("req.http.host == " + req.http.host + " && req.url == " + req.url); 
     } 
0
acl purge { 
"127.0.0.1"; 
} 

sub vcl_recv { 
    if (req.request == "PURGE") { 
     if (!client.ip ~ purge) { 
      error 405 "IP:" + client.ip + " Not allowed."; 
     } 
     ban("req.http.host == " + req.http.host + " && req.url ~ " + req.url); 
     error 200 "host:" + req.http.host + " url:" + req.url + " Ban added"; 
    } 
} 
4

まず、あなたのVCLにパージャースタンザを追加し、パージを使用できるユーザーのホワイトリストを定義します。

acl purge { 
"127.0.0.1"; 
"10.22.0.0"/16; 
} 


sub vcl_recv { 


if (req.http.X-Purge-Regex) { 
     if (!client.ip ~ purge) { 
      error 405 "Varnish says nope, not allowed."; 
     } 
     ban_url(req.http.X-Purge-Regex); 
     error 200 "The URL has been Banned."; 
} 

ワニスは、ヘッダーX-Purge-Regexの値を使用して禁止を作成します。

それではあなたはこのようなものを禁止することができます。

curl -v -X PURGE -H 'X-Purge-Regex: ^/assets/*.css' varnishserver:6081 

または

curl -v -X PURGE -H 'X-Purge-Regex: ^/images/*' varnishserver:6081 

varnishserverは、あなたのワニスサーバのアドレスです。

+0

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

関連する問題