vcl_synth
Varnish 内でコンテンツを生成するために使用
エラーメッセージはここで作成可能
code:vcl
sub vcl_synth {
set resp.http.Content-Type = "text/html; charset=utf-8";
set resp.http.Retry-After = "5";
synthetic(
{"<!DOCTYPE html>
<html>
<head>
<title>"} + resp.status + " " + resp.reason + {"</title> </head> <body> <h1>Error "} + resp.status + " " + resp.reason + {"</h1> <p>"} + resp.reason + {"</p> <h3>Guru Meditation:</h3> <p>XID: "} + req.xid + {"</p> <hr> <p>Varnish cache server</p> </body> </html>
}
);
return (deliver);
}
パーソナライズされたエラーメッセージなどの合成応答を作成することが可能
呼び出し
return (synth(statuc_code, "reason"))
ここで定義されたオブジェクトはキャッシュされない
リダイレクト設定
www 付きを www なしにリダイレクト
code:vcl
sub vcl_recv {
if (req.http.host == "www.example.com") {
return (synth(750, "Permanently moved"));
}
}
sub vcl_synth {
if (resp.status == 750) {
set resp.http.location = req.http.location;
set resp.status = 301;
return (deliver);
}
}