更换清漆4 503错误

我怎样才能改变清503错误?
我如何定制它?
我使用清漆v 4

现在工作

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>Under Maintenance</title> </head> <body> <h1>Under Maintenance</h1> <p></p> <hr> </body> </html> "} ); return (deliver); } 

在Varnish 4中有两种错误。一种是后端获取错误。 vcl_backend_error处理这种错误。 另一个是在VCL中产生的错误。 vcl_synth处理这种错误。

在你的情况下,你正在自定义vcl_error子例程,这不是后端错误。

您可以从以下default.vcl中区分这两种错误。

 vcl 4.0; backend default { .host = "127.0.0.1"; .port = "8080"; } sub vcl_recv { if (req.url ~ "^/404") { return (synth(999, "make 404 error explicitly")); } } sub vcl_backend_response { } sub vcl_deliver { } sub vcl_backend_error { set beresp.http.Content-Type = "text/html; charset=utf-8"; synthetic( {"errors due to backend fetch"} ); return (deliver); } sub vcl_synth { if (resp.status == 999) { set resp.status = 404; set resp.http.Content-Type = "text/plain; charset=utf-8"; synthetic({"errors due to vcl"}); return (deliver); } return (deliver); } 

确认错误消息

 $ curl http://localhost:6081/ # If the backend server is not running, "503 Backend fetch failed" error occurs errors due to backend fetch $ curl http://localhost:6081/404/foo errors due to vcl 

我想提出一个替代…请在下面find一个示例default.vcl文件

 vcl 4.0; import std; backend default { .host = "127.0.0.1"; .port = "8080"; } sub vcl_backend_response { if (beresp.status == 503 && bereq.retries < 5 ) { return(retry); } } sub vcl_backend_error { if (beresp.status == 503 && bereq.retries == 5) { synthetic(std.fileread("/etc/varnish/error503.html")); return(deliver); } } sub vcl_synth { if (resp.status == 503) { synthetic(std.fileread("/etc/varnish/error503.html")); return(deliver); } } sub vcl_deliver { if (resp.status == 503) { return(restart); } } 

然后你可以保存你的自定义HTML在error503.html