我正在尝试使用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;
...
}
...
}
在sv1
和sv2
上,我有如下相同的default.conf
server {
listen 80 default_server;
location / {
proxy_pass http://localhost:8080;
...
}
}
现在,当我尝试关闭sv1
或sv2
(将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并不是一个好主意。
答案 0 :(得分:0)
我不知道您为什么必须在nginx
和sv1
服务器上安装sv2
服务。
重新启动sv1
的{{1}}服务器时,应首先启用sv2
。重新启动完成后,请检查nginx
是否正在运行。
您service nginx status
表示应用程序已关闭,因此您在kill node
上遇到了500
错误