【问题标题】:How to add the 'upstream try' to the request which I send to the backend server如何将“上游尝试”添加到我发送到后端服务器的请求中
【发布时间】:2018-10-15 14:47:12
【问题描述】:

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

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

我正在寻找一种方法将此请求的当前尝试次数传递给后端服务器 - 即第一次、第二次或最后一次。

我相信可以通过在标头中传递这些数据来完成,但是,如何在 nginx 中配置它以及从哪里获取这些数据?

谢谢

【问题讨论】:

  • AFAIK,Nginx 不提供此类信息。

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


【解决方案1】:

我将此问题发送给 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;
}

【讨论】:

    猜你喜欢
    • 2022-01-20
    • 2015-09-23
    • 1970-01-01
    • 2021-09-08
    • 2016-04-10
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多