我如何告诉Varnish显示自定义html错误页而不是默认的“大师冥想”讯息?
发布于 2011-03-29 12:49:16
清漆常见问题建议为此使用vcl_error (这就是我所做的):
这是错误页面的默认VCL:
sub vcl_error {
set obj.http.Content-Type = "text/html; charset=utf-8";
synthetic {"
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>"} obj.status " " obj.response {"</title>
</head>
<body>
<h1>Error "} obj.status " " obj.response {"</h1>
<p>"} obj.response {"</p>
<h3>Guru Meditation:</h3>
<p>XID: "} req.xid {"</p>
<address><a href="http://www.varnish-cache.org/">Varnish</a></address>
</body>
</html>
"};
return(deliver);
}
如果希望使用自定义版本,只需重写配置中的函数并替换synthetic
语句中的标记。
如果您希望对不同的错误代码有不同的标记,您也可以很容易地做到这一点:
sub vcl_error {
set obj.http.Content-Type = "text/html; charset=utf-8";
if (obj.status == 404) {
synthetic {"
<!-- Markup for the 404 page goes here -->
"};
} else if (obj.status == 500) {
synthetic {"
<!-- Markup for the 500 page goes here -->
"};
} else {
synthetic {"
<!-- Markup for a generic error page goes here -->
"};
}
}
发布于 2014-08-14 03:12:54
请注意,上面的答案是针对Varnish 3的。由于这个问题没有指定版本信息,所以当版本4也发生了变化时,包含这个答案似乎是一个合适的时间。
希望这将避免人们阅读上面的答案,并将vcl_error放入V4 VCL :)
用于清漆4.0的
https://serverfault.com/questions/248041
复制相似问题