Nginx上游服务器中的其中一台关闭时,所有上游服务器均关闭

时间:2019-07-01 04:36:50

标签: node.js nginx

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

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

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

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

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

现在,当我尝试关闭sv1sv2(将pm2 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并不是一个好主意。

1 个答案:

答案 0 :(得分:0)

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

重新启动sv1的{​​{1}}服务器时,应首先启用sv2。重新启动完成后,请检查nginx是否正在运行。

service nginx status表示应用程序已关闭,因此您在kill node上遇到了500错误