2012-04-07 8 views
4

初めてワニスを使用しています。私はそれがどのように動作するかについてのかなりの時間を費やしましたが、私はキャッシュを選択的にパージする方法を理解することができません。varnish vclでキャッシュを選択的にパージする

などが、私はaccount=123キャッシュを消去する必要があり、この

/?account=123&url=google.com 

/?account=123&url=stackoverflow.com 

のような別のようなURLを持っていると言います。

私だけ

にパージを発行することを把握することができます/?アカウント= 123 & URL = stackoverflow.com

URLだけがPURGE方法で着信URLと一致するキャッシュを消去します。

何か助けていただければ幸いです。

答えて

4

だから、これはどのような作品です。ワニス3では、選択的パージは禁止と呼ばれています。だから、私たちは同様の問題に直面し、HTTPリクエストを使用してコンテンツをパージするための別のX-パージ-正規表現-URLリクエストヘッダを使用して終了

ban("obj.http.x-url ~ " + req.url); 
1

HTTP PURGEを使用すると、特定のURLをパージできます。

regexpを使用してパージするには、管理ポートをニスするためにtelnet接続を使用するか、コマンドラインツールvarnishadmを使用する必要があります。

通常、あなたはパージコマンドを使用してパージを行うことができますワニスサーバーに接続した後、Telnetを使用して

telnet localhost 6082 

によってそうすることができます

purge req.url ~ /?account=123 

は、上記の「すべてのURLのマッチングをパージしますか/? account = 123 "

HTTP PURGEリクエストのように特定のページをパージする場合は、チルダ(〜)の代わりに二重等号を使用する必要があります

purge req.url == /?account=123 

また、あなたのドメインの

purge req.http.host == yourdomain.com 

または特定のページで、ドメイン全体を消去することができます

purge req.http.host == yourdomain.com && req.url ~ /?account=123 
3

を使用する必要があります。我々はban_url()は、HTTPホストを気にしませんのでご注意くださいcurl -H "X-Purge-Regex-URL: True" --head "http://my.host.addr/?account=123"

を使用してコンテンツを削除できあなたのケースでは

acl purge { 
    "localhost"; 
    "10.1.1.0"/28; 
} 

sub vcl_recv { 
    if (req.http.X-Purge-Regex-URL) { 
    if (!client.ip ~ purge) { 
     error 405 "Not allowed."; 
    } 
    ban_url(req.url); 
    error 200 "Banned URL"; 
    } 
} 

は、ここではこれを実現するために使用しているVCLです。一致するすべてのURLをすべてのホストから削除します。これが欲しいものでない場合は、req.http.hostreq.urlを使用してコンテンツを禁止するのにban()を使用する必要があります。

0

私はニスの専門家だが、これは私のために働いていたものです:私はerror 200 "Banner URL"コメントアウトこと

acl purge { 
    "localhost"; 
    "10.1.1.0"; 
} 

sub vcl_recv { 
    if (req.http.X-Purge-Regex-URL) { 
    if (!client.ip ~ purge) { 
     error 405 "Not allowed."; 
    } 
    ban_url(req.url); 
    #error 200 "Banned URL"; 
    } 
} 

は注意、 - 私の中で私の場合は、問題を引き起こしました。

関連する問題