Answers:
您尝试的指令意味着与您希望的不同。阅读他们的文档。
该upstream
指令的文档详细地介绍了上游块是如何工作的:
如果在与服务器通信期间发生错误,请求将被传递到下一个服务器,依此类推,直到将尝试所有正常运行的服务器。如果无法从任何服务器获得成功的响应,则客户端将接收与最后一个服务器的通信结果。
一切都在那里说。
但是,您可以通过拦截它来处理从后端返回的错误代码proxy_intercept_errors
,然后将其发送$request_uri
到代表原始客户端处理它的特殊脚本。
基线是:您需要一些代码/应用程序逻辑来重试客户端(或前端端)。
正如另一个答案所述,没有内置的方法让nginx这样做。一种可能的解决方案是使用由当前服务器组成的负载平衡设置,以及为所有请求执行以下操作的备份服务器:
此服务器将标记为“backup”标志,以便仅在所有其他服务器脱机(HTTP负载平衡>服务器权重)时尝试使用。