【问题标题】:Remapping Nginx 502/504 error from proxy_pass into 408 error将 Nginx 502/504 错误从 proxy_pass 重新映射为 408 错误
【发布时间】:2012-12-01 03:25:59
【问题描述】:

我想将 Nginx 无法与代理成功通信时产生的 502 和 504 错误重新映射为 408 错误。

需要明确的是,当 Nginx 返回 502/504 并且没有正文时,它应该返回 408 并且仍然没有正文。

我尝试添加此指令,但它显然破坏了响应标头:

error_page              502 =408;
error_page              504 =408;

知道如何重新映射 Nginx 错误代码吗?

【问题讨论】:

    标签: http proxy nginx


    【解决方案1】:

    http://nginx.org/r/error_page

    语法:error_page code ... [=[response]] uri;

    您忘记指定uri 参数(您的=408 参数已被解释为uri)。

    更新:

    location / {
        error_page 502 504 =408 @empty;
    }
    
    location @empty {
        return 200 '';
    }
    

    【讨论】:

    • 奇怪的是 Nginx 接受解析没有 uri 部分的配置。反正我没有要重定向的页面,我只是想重新映射一个错误代码,所以我猜error_page不是正确的方式?
    • Nginx 无法知道 =408 是否是 URI,因为 code 参数是可选的。您必须指定有错误的页面,即使该页面为空。我已经更新了我的答案。
    【解决方案2】:

    Is it possible to change the HTTP status code returned when proxy_pass gateway is down in nginx? 获得灵感,这组指令似乎有效:

    location = / {
      return 200;
    }
    
    location ~ ^[a-z/0-9@A-Z]*$ {
      error_page              502 504 =408 /;
    
      (proxy configuration goes here)
    }
    

    但 uri 的其他值没有。

    【讨论】:

      猜你喜欢
      • 2014-12-14
      • 2017-01-04
      • 2023-04-03
      • 2019-09-01
      • 2016-07-23
      • 1970-01-01
      • 2016-01-19
      • 2011-05-14
      • 2019-06-05
      相关资源
      最近更新 更多