清漆紧急后端或服务静态错误

Varnish emergency backend or serve static error

我的想法是在主后端失败时配置 Varnish-cache(例如 HTTP 503),首先尝试另一个后端,如果失败,则提供静态错误消息。

这样配置可以吗? P.S。我不希望 varnish 与紧急后端一起工作,除非主服务器真的失败了。应急后台总是有点过时的数据。

我正在使用 Varnish 4,计划很快转移到 5.X。后端是 Java 或 PHP 个应用程序。

当然可以,您应该更改 vcl_backend_response 代码,用 bereq.retriesreturn(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!"));
        }

}