5
我在独角兽前使用Nginx。当应用程序处于高负载状态并且所有独角兽工作人员都忙时,nginx将返回502响应,说明网关配置错误。我对这种行为很满意,但在这种情况下,我希望nginx能够返回一个503响应代码(服务器忙,稍后再试),这是一个更合适的响应。更改Nginx在上游独角兽繁忙时返回的状态码
我看到了这样的回答: Is it possible to change the HTTP status code returned when proxy_pass gateway is down in nginx?
介绍如何重写一些状态代码从上游代理返回:
location/{
proxy_pass http://backend;
proxy_intercept_errors on;
error_page 502 503 504 =503 @proxyisdown; # always reply with 503
}
location @proxyisdown {
add_header Retry-After 500;
index my_pretty_error_page.html;
}
但也有2个问题与此:
- 上游应用程序有时会返回502应该保留的有效情况的响应代码
- 我不确定上游代理实际上是否返回了这个错误的状态码,更有可能nginx不能将该项放在(tcp?)缓冲区,然后nginx返回误导性的状态码。
有没有什么办法可以控制nginx在这种情况下返回的状态码,使它成为503而不是502?
如果您不想拦截来自代理的错误,为什么要在'; proxy_intercept_errors'上设置';';为什么你认为“nginx返回误导性的状态码”? – VBart
代码示例如果来自我的问题中引用的问题,而不是我的代码。 我认为nginx返回一个误导性的状态代码,因为当上游web服务器没有任何额外容量时返回502。服务器没有配置错误,它只是很忙,应该是503. – Macdiesel
如果服务器没有正确响应,nginx如何知道服务器正忙? – VBart