今回も Varnish VCL の説明でこちら の続きです。特に Varnish で使われている VCL 言語のうち VCL で使える変数について説明します。
VCL で使える変数
既に こちら で簡単な Varnish VCL で使える変数について説明しましたが、今回は網羅的に掲載していきます。結構
[Varnish ドキュメント]の日本語訳なだけになってしまっているかもしれません。
now
現在時刻
.host
バックエンドの(取れれば)ホスト名か IP アドレス
.post
バックエンドのポート番号
client
クライアントを意味する変数でこれ単体では使えない
client.ip
クライアントの IP アドレス
client.identity
クライアントの識別子
server
(Varnish が動いている)サーバを意味する変数でこれ単体では使えない
server.hostname
サーバのホスト名
server.identity
サーバの識別子
server.ip
サーバの IP アドレス
server.port
サーバのポート番号
req
リクエストを意味する変数でこれ単体では使えない
req.request
“GET” や “HEAD” 等のリクエストのタイプ(メソッド)
req.url
リクエスト URL
req.proto
クライアントが使っているリクエスト HTTP プロトコルのバージョン
req.backend
リクエストを処理するバックエンド
req.backend.healthy
リクエストを処理するバックエンドが稼働しているか否か
req.http.header
HTTP ヘッダ
req.hash_always_miss
true を設定すれば必ずキャッシュミスさせる
req.hash_ignore_busy
キャッシュ検索時にバックエンド側で待機状態であっても無視する
req.can_gzip
クライアントが gzip 圧縮を受け付けるか
req.restarts
リクエストが restart した回数。restart はバックエンドからのコンテンツ取得失敗時等に発生し、vcl_rect に毎回戻る
req.esi
false が設定されると ESI が使えなくなる。ESI は SSI を拡張した規格
req.esi_level
ESI のレベルを指定する
req.grace
grace モードを有効にする期間を指定する
req.xid
リクエストのユニークな ID
req.hash
取得したコンテンツ(キャッシュオブジェクト)の hash キー
bereq
バックエンドへのリクエストを意味する変数でこれ単体では使えない
bereq.request
バックエンドへのリクエストのタイプ(“GET” や “HEAD” 等)
bereq.url
バックエンドへのリクエストの URL
bereq.proto
バックエンドへのリクエストの HTTP プロトコルバージョン
bereq.http.header
バックエンドへのリクエストの HTTP ヘッダ
bereq.connect_timeout
バックエンドへのコネクションタイムアウト(秒)
bereq.first_byte_timeout
バックエンドから最初の byte を取得するまでのタイムアウト(秒)。pipe モードの時は使えない
bereq.between_bytes_timeout
バックエンドからそれぞれの byte を取得するまでのタイムアウト(秒)。pipe モードの時は使えない
beresp
バックエンドからのレスポンスを意味する変数でこれ単体では使えない
beresp.do_stream
キャッシュを検索せずにクライアントに直接バックエンドから取得したコンテンツを配送するかどうか。
beresp.do_esi
バックエンドからコンテンツを取得した後に ESI を処理するかどうか。デフォルトは false
beresp.do_gzip
バックエンドからコンテンツを取得した後に Gzip 圧縮するか。デフォルトは false
beresp.do_gunzip
バックエンドからコンテンツを取得した後に unzip 圧縮するか。デフォルトは false
beresp.proto
バックエンドへのリクエストに使われた HTTP プロトコルバージョン
beresp.status
サーバによって返される HTTP ステータスコード
beresp.response
サーバによって返される HTTP ステータスメッセージ
beresp.ttl
バックエンドから取得したコンテンツの生存期間(秒)
beresp.grace
grace モードを有効にする期間が設定可能
beresp.saintmode
saint モードを有効にする期間が設定可能
beresp.backend.name
コンテンツを取得したバックエンドの名称
beresp.backend.ip
コンテンツを取得したバックエンドの IP アドレス
beresp.backend.port
コンテンツを取得したバックエンドのポート番号
beresp.backend.storage
取得したコンテンツをストレージに強制的に保存する
obj
キャッシュに入ったオブジェクトを意味する変数でこれ単体では使えない
obj.proto
コンテンツ取得時の HTTP プロトコルバージョン
obj.status
コンテンツ取得時の HTTP ステータスコード
obj.response
コンテンツ取得時の HTTP ステータスメッセージ
obj.ttl
コンテンツの生存期間(秒)
obj.lastuse
コンテンツを使ってから経過した時間
obj.hits
コンテンツを使った(ヒットした)回数
obj.grace
コンテンツの grace モードの期間(秒)
obj.http.header
コンテンツの HTTP ヘッダ
resp
レスポンスを意味する変数でこれ単体では使えない
resp.proto
レスポンスの HTTP プロトコルバージョン
resp.status
レスポンスの HTTP ステータスコード
resp.response
レスポンスの HTTP ステータスメッセージ
resp.http.header
レスポンスの HTTP ヘッダ