我有一个nginx服务器,可以充当负载平衡器。
nginx配置为上游3次尝试:
proxy_next_upstream_tries 3
我正在寻找一种将请求的当前尝试编号传递到后端服务器的方法-即第一,第二或最后一个。
我相信可以通过在标头中传递此数据来完成此操作,但是,如何在nginx中进行配置以及可以从何处获取此数据?
谢谢
答案 0 :(得分:0)
我将此问题发送给Nginx支持人员,他们向我提供了以下解释:
只要您将proxy_next_upstream机制用于 重试,您无法执行的操作。要求 发送到下一台服务器的服务器与一台完全相同 发送到第一台服务器nginx尝试-或者更确切地说,这是 相同的请求,创建一次,然后发送到其他上游 服务器根据需要。 如果您想知道后端是否正在处理第一个 请求或它在发生错误后仍可处理重试请求 选项是关闭proxy_next_upstream,而是 使用error_page指令重试502/504错误的请求。
有关如何使用的示例,请参见http://nginx.org/r/error_page 错误页面。
所以,我按照他们的建议做了:
proxy_intercept_errors on;
location / {
proxy_pass http://example.com;
proxy_set_header NlbRetriesCount 0;
error_page 502 404 @fallback;
}
location @fallback {
proxy_pass http://example.com;
proxy_set_header NlbRetriesCount 1;
}