【问题标题】:Varnish emergency backend or serve static error清漆紧急后端或服务静态错误
【发布时间】:2017-07-03 09:41:58
【问题描述】:
我的想法是在主后端配置 Varnish-cache 失败(例如 HTTP 503),首先尝试另一个后端,如果失败,提供静态错误消息。
可以这样配置吗?附:我不希望清漆与紧急后端一起使用,除非主服务器真的失败了。紧急后端的数据总是有点过时。
我正在使用 Varnish 4,计划很快迁移到 5.X。后端是 Java 或 PHP 应用程序。
【问题讨论】:
标签:
caching
load-balancing
varnish
varnish-vcl
varnish-4
【解决方案1】:
当然可以,您应该更改您的 vcl_backend_response 代码,使用 bereq.retries 和 return(retry) 调整它:
sub vcl_backend_response {
if ( beresp.status == 503 && bereq.retries == 0 ) {
set bereq.http.Host = "myNewHost";
return(retry);
}
if ( beresp.status == 503 && bereq.retries > 0 ) {
return (synth(503, "Oh noes!"));
}
}