nginx:在 http 200 响应上使用自定义标头集尝试下一个上游

nginx:在 http 200 响应上使用自定义标头集尝试下一个上游

我有一个运行良好的 nginx 设置。我正在使用上游块在两台服务器之间进行负载平衡。即使这些服务器无法处理请求,它们也会给出 HTTP 200 响应,但它们会设置自定义 http 标头,如下所示:

X-Response-Status: Failed

当响应为 OK 时,他们会给出:

X-Response-Status: OK

当第一个上游服务器给出“X-Response-Status: Failed”时,是否可以配置 nginx 来尝试下一个上游服务器?

我的意思是像 nginx 配置中那样:

proxy_next_upstream error timeout http_* ($sent_http_x_response_status="Failed")

谢谢!

更新1:

我必须让上游服务器即使出现错误也给出 HTTP 200,因为 http 正文中有一个二进制形式的错误消息。

如果上游服务器都无法满足请求,我必须将此二进制错误传递给客户端。

答案1

没有选项可以proxy_next_upstream实现您描述的行为。

HTTP 200如果您的应用程序无法实际处理请求,则不应返回。让应用程序返回更合适的错误,例如500503

相关内容