我使用 nginx 作为反向代理,如果上游服务器没有响应,我希望它等待几秒钟并重试请求。这样我就可以重新启动我的上游服务器,而不是用户看到 502 bad gateway,他们的浏览器只挂了几秒钟(重新启动过程需要 3 或 4 秒)。我尝试了几件事,我把它放在我的服务器块中:
proxy_connect_timeout 60;
proxy_send_timeout 15;
proxy_read_timeout 20;
Run Code Online (Sandbox Code Playgroud)
但它似乎没有做任何事情。我还尝试将其添加到上游块:
server 127.0.0.1:3001 fail_timeout=10s;
Run Code Online (Sandbox Code Playgroud)
再次,不是我想要的。
这可能吗?我错过了什么?
您尝试的指令的用途与您希望的不同。阅读他们的文档。
指令upstream文档彻底解释了上游块的工作原理:
如果在与服务器通信期间发生错误,请求将被传递到下一个服务器,依此类推,直到尝试所有正常运行的服务器。如果无法从任何服务器获得成功响应,客户端将收到与最后一个服务器通信的结果。
一切都在那里说。
但是,您可以通过拦截后端返回的错误代码来处理它proxy_intercept_errors,然后将其发送$request_uri到代表原始客户端处理它的特殊脚本。
基线是:您需要一些代码/应用程序逻辑来重试客户端(或前端)。
| 归档时间: |
|
| 查看次数: |
15943 次 |
| 最近记录: |