将proxy_pass中的Nginx 502/504错误重新映射到408错误

时间:2012-12-01 03:25:59

标签: http proxy nginx

我想重新映射Nginx生成的502和504错误,因为它无法成功地与代理进行408错误通信。

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

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

error_page              502 =408;
error_page              504 =408;

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

2 个答案:

答案 0 :(得分:1)

http://nginx.org/r/error_page

  

语法:error_page代码... [= [回复]] uri ;

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

<强> UPD:

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

location @empty {
    return 200 '';
}

答案 1 :(得分:1)

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的其他值并没有。