首页 > 解决方案 > Nginx 上游服务器在其中一个关闭时全部关闭

问题描述

我正在尝试使用 nginx 设置上游服务器。都使用 pm2 在端口 8080 上运行相同的 Node.js 应用程序。这里是default.conf主服务器的nginx

upstream backend {
    ip_hash;
    server localhost:8080;
    server sv1_ip_address;
    server sv2_ip_address;
}

server {
    listen 443 ssl;
    location / {
        proxy_pass http://backend;
        ...
    }
    ...
}

sv1and上sv2,我有default.conf如下相同的

server {
    listen 80 default_server;
    location / {
        proxy_pass http://localhost:8080;
        ...
    }
}

现在,当我尝试关闭sv1sv2pm2 kill用于 Node 或什至reboot)时,所有上游服务器都关闭了,并且在通过域名访问应用程序时收到 500 错误(?)。所以我认为那些辅助服务器上的 nginx 有问题,我upstream backend用这个替换了

upstream backend {
    ip_hash;
    server localhost:8080;
    server sv1_ip_address:8080;
    server sv2_ip_address:8080;
}

现在关闭或重新启动已正确处理(意味着 nginx 会将请求路由到其中一台活动服务器)。这是预期的行为,还是我在这里做错了什么?我不认为直接将请求路由到端口 8080 是一个好主意。

标签: node.jsnginx

解决方案


我不知道您为什么必须在服务器上安装nginx服务。sv1sv2

当您重新启动服务器时sv1sv2它应该首先启用nginx。重启完成后请检查service nginx status是否正在运行。

kill node的意思是应用程序已关闭,因此您遇到了500错误nginx


推荐阅读