error-handling - 如何自定义 503 错误 - varnish 4

标签 error-handling varnish varnish-vcl http-status-code-503

如何自定义 Varnish 4 的“503 后端获取失败”?

当其他错误通过合成阶段时,我正在自定义它们:

sub vcl_synth {
    if (resp.status == 750) {
        set resp.http.location = "http://mobile.cronica.com.ar/";
        set resp.status = 302;
        set resp.http.Action = "Redirect";  
        return(deliver);
    }
    if (resp.status == 751) {
        set resp.status = 301;
        set resp.http.location = "http://www." + req.http.host + req.url;
        set resp.http.Action = "Redirect";
        return(deliver);
    }
    else {
         synthetic( {"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>"} + resp.status + " " + resp.reason + {"</title>
    <link href='http://fonts.googleapis.com/css?family=Oswald:400,700' rel='stylesheet' type='text/css'>

  </head>
  <body style="background-color:#444; font-family: 'Oswald', sans-serif;">
    <h1 style="color:#DD8363;">Error "} + resp.status + " " + {"</h1>
    <p style="color:#5F88C4; ">"} + resp.reason + {"</p>
    <h3 style="color:white;">CEPI Says</h3>
    <p style="color:#bdb76b;">XID: "} + req.xid + {"</p>
    <p style="color:#bdb76b;">Edge-Server: "} + server.hostname + {"</p>
    <hr>
    <p style="color:#65b042;">2.0</p>
  </body>
</html>
"} ); 
        return(deliver);
    }

}

但 503 错误似乎可以避免这种情况。

最佳答案

根据Varnish Processing States backend_error() 之后的控制应该传递给 vcl_synth(),但实际上您看到的错误页面是在 backend_error() of builtin.vcl 中无条件传递的。 。您可以在那里自定义您的网页,也可以添加 sub vcl_backend_error { return(retry); } 在你的 vcl 中强制跳转到 vcl_synth(),这将是 resp.status = 503

关于error-handling - 如何自定义 503 错误 - varnish 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28193671/

相关文章:

php - 获取触发 "Failed calling MyClass::jsonSerialize()"异常的异常

java - 为什么这个数组显示错误消息(Eclipse)

javascript - Node.js 捕获生成后引发的 ENOMEM 错误

varnish - 在Varnish 4中 'synthetic'设置了哪个变量?

varnish - 测试 Varnish 缓存规则

wordpress - Varnish 不缓存wordpress网站。尝试了博客中存在的一些解决方案。没什么对我有用

php - 获取FFMPEG返回的错误

apache - 配置后 Varnish 失败

apache - 带有大量 POST 上传和我的 apache + varnish + plone 设置的错误网关

caching - 如何访问 Varnish 管理区域?