让 nginx 检测代理应用程序调用的监听端口

让 nginx 检测代理应用程序调用的监听端口

我有一个应用程序,我正在向其传递来自 nginx 的代理请求。有时我希望重新启动该应用程序,这需要一些时间,并且我希望用户看不到此重新启动。为此,我正在考虑在不同的端口上运行该应用程序的第二个实例,启动后我将禁用第一个实例。一段时间后,我想重新启动第二个实例,因此我将在第一个端口上启动新实例。

我希望 nginx 检测哪个代理端口正在监听,并使用这个端口。如果请求开始失败,我希望 nginx 开始使用另一个端口。我该怎么做?

我注意到上游有一些备份指令,但它似乎假设有一个主服务器。我不想有主服务器 - 我想要这个或那个。

答案1

尝试这个:

http {
    upstream backend {
        server app1;
        server app2 backup;
     }
}
server {
    location / {
        proxy_pass http://backend;
    }
}

除非 app1 不可用,否则它将始终连接到 app1。您可以先更新 app2,然后再更新 app1,这样应用程序将始终可用。

相关内容