我们在Plone的前面使用Varnish.在Plone发生故障或内部错误的情况下,我们希望显示一个用户友好的静态HTML页面,其中包含一些CSS样式+图像.("服务器正在更新页面")
如何配置Varnish来做到这一点?
bwi*_*ght 19
另一种简单的方法是使用清漆附带的std vmod.这是我的首选方法,因为我希望在配置之外输入错误消息,以防您想要为不同的状态代码提供多个响应.
import std;
sub vcl_error {
set obj.http.Content-Type = "text/html; charset=utf-8";
synthetic std.fileread("/path/to/file.html");
return (deliver);
}
Run Code Online (Sandbox Code Playgroud)
Rig*_*ala 15
您可以自定义在vlc_error上提供的合成页面.default.vcl配置文件已经显示了如何执行此操作,通过提供着名的"Guru Meditation"错误页面(啊,那些精彩的Amiga日).
示例定制:
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>Sorry, server under maintainance - My Website"</title>
<style src="css/style.css"></style>
</head>
<body>
<h1>The server is being updated</h1>
<p>Please check back later. Meanwhile, here's a picture of a rabbit with a pancake on its head:</p>
<img src="img/wabbit.jpg" alt="awwwww!" />
</body>
</html>
"};
return (deliver);
}
Run Code Online (Sandbox Code Playgroud)
目前,使用 Varnish 4 执行此操作没有太多帮助。
这是我最终得到的结果:
sub vcl_backend_error {
set beresp.http.Content-Type = "text/html; charset=utf-8";
synthetic(std.fileread("/var/www/errors/500.html"));
return (deliver);
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅升级到 4.0 文档。