添加原点关闭时重试之间的延迟(Nginx,502)

添加原点关闭时重试之间的延迟(Nginx,502),nginx,proxy,delay,Nginx,Proxy,Delay,差不多是瓷砖。在nginx后面有一个节点应用程序,当我重新启动该应用程序时,我希望nginx延迟响应,并重试执行请求几次,中间有一些延迟。我发现的所有东西都只会立即重试N次,但当应用程序停止重新启动时,这显然是没有用的,这是我的用例。有什么办法吗?我甚至不在乎它有多黑/如果是,我只需要一个解决方案,即不启动应用程序的第二个实例,并在第二个实例启动时杀死第一个实例 谢谢 您可以添加与多个上游相同的服务器,并配置代理下一个上游,代理下一个上游和代理下一个上游选项 但是,我建议您使用支持优雅的重新加载

差不多是瓷砖。在nginx后面有一个节点应用程序,当我重新启动该应用程序时,我希望nginx延迟响应,并重试执行请求几次,中间有一些延迟。我发现的所有东西都只会立即重试N次,但当应用程序停止重新启动时,这显然是没有用的,这是我的用例。有什么办法吗?我甚至不在乎它有多黑/如果是,我只需要一个解决方案,即不启动应用程序的第二个实例,并在第二个实例启动时杀死第一个实例


谢谢

您可以添加与多个上游相同的服务器,并配置
代理下一个上游
代理下一个上游
代理下一个上游
选项


但是,我建议您使用支持优雅的重新加载/重新启动的流程管理器,如
pm2
。如果你在集群模式下为你的nodejs服务器使用多个CPU,它们是相关的。

发布你目前使用的配置我已经用了这种方法,问题是nginx完全忽略了我在应用程序关闭时为它设置的任何延迟,因此端口没有使用,它只是立即尝试我定义的所有上行。我现在的做法是,我创建了第二个节点应用程序,它充当反向代理和指数退避,并将其设置为第二个上游。这样,当应用程序本身关闭时,“备份”应用程序将尝试请求它,直到其返回,然后返回结果。我不确定这是愚蠢还是天才,但它正是我想要的\_(ツ)_/¯
    upstream node_servers {
        server 127.0.0.1:12005;
        server 127.0.0.1:12005;
    }

    ...

    proxy_next_upstream http_502;
    proxy_next_upstream_timeout 60;
    proxy_next_upstream_tries 3;