如何将“上游尝试”添加到我发送到后端服务器的请求中

时间:2018-10-09 15:04:32

标签: nginx nginx-reverse-proxy nginx-config

我有一个nginx服务器,可以充当负载平衡器。

nginx配置为上游3次尝试: proxy_next_upstream_tries 3

我正在寻找一种将请求的当前尝试编号传递到后端服务器的方法-即第一,第二或最后一个。

我相信可以通过在标头中传递此数据来完成此操作,但是,如何在nginx中进行配置以及可以从何处获取此数据?

谢谢

1 个答案:

答案 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;
}