Varnishは標準でvarnishadmコマンドとtelnetによる管理が実装されていますが、VCLを少し記述するとHTTPで操作することもできます。認証がかけられないという問題はありますが、IPアドレスによる制限は可能ですし、Webアプリに組み込むのであればHTTPのほうが楽な気がします。
今回はWebアプリで使う頻度が高いであろうpurgeをHTTPから実行してみます。
VCLの記述
methodがPURGEのリクエストが送られてきた場合にはreq.urlをパスの正規表現と解釈してpurgeを行うように記述します。また、以下の例ではHostヘッダで対象とするVirtualHostを指定できるようにしています。
コマンドラインからの呼び出し
Rubyからの呼び出し(Net::HTTP)
Rubyからの呼び出し(EventMachine)
EventMachineのほかにEM-HTTP-Requestを使っています。
参考