256bitの殺人メニュー

インフラエンジニアだったソリューションアーキテクトなくわののブログ。こちらのBlogは個人の意見となっていて会社とは全く関係ありません。お約束です。[twitter:@kuwa_tw]めんどくさがりが重い腰を上げて何かをアウトプットすることにどれほどの意味があるのかを試してみたいブログでもある。

Varnishの設定ファイル和訳(適当版)

VCL面白いけど。
あんまりにもドキュメントが無いので和訳してみた。

 ○バックエンドサーバの設定
 backend.host
  バックエンドサーバのホスト名 or IPアドレス
 
 backend.port
  バックエンドサーバのポート番号
 
 backend.dnsttl
  バックエンドサーバDNSのTTL
 
 backend.timeout
 backend.bandwidth
  とかも設定できるのかな?今は実装されて無いみたいなんだけど。
 ○クライアント情報の取得など
 client.ip
  クライアントのIPアドレス
 
 req.request
  リクエストメソッドのタイプ(例, "GET", "HEAD")
 
 req.url
  リクエストURL
 
 req.proto
  クライアントのHTTPプロトコルバージョン
 
 req.backend
  どのバックエンドを使用するか。(Varnishでは条件によって複数のバックエンドを使用可能)
 
 req.http.header
  "header"に対応したリクエストヘッダがあれば真(例、req.http.Expect、req.http.Authenticate、req.http.Cookie)
 
 resp.http.header
  "header"に対応したレスポンスヘッダがあれば真(例、resp.http.Set-Cookie)
 ○オブジェクト情報での条件付け
 obj.valid
  オブジェクトの取得が成功した場合に真
 
 obj.cacheable
  オブジェクトがキャッシュ可能だった場合に真
  rfc2616.cを見る限りは、HTTPステータスコードが
  case 200: /* OK */        case 203: /* Non-Authoritative Information */
  case 300: /* Multiple Choices */
  case 301: /* Moved Permanently */
  case 302: /* XXX */
  case 410: /* Gone */
  case 404: /* Not Found */
  の場合はキャッシュされる模様。
 
 obj.ttl
  オブジェクト生存時間の設定

参考資料:
どさにっきさん
Stickies--さん
varnish_tech.pdf*1
man vcl(7)
man varnishd(1)
後はソース。

*1:vcl_hogeの関係について分かりやすい