我有一个运行良好的 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
如果您的应用程序无法实际处理请求,则不应返回。让应用程序返回更合适的错误,例如500
或503
。