node.js - 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;
...
}
...
}
在sv1
and上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 是一个好主意。
解决方案
我不知道您为什么必须在服务器上安装nginx
服务。sv1
sv2
当您重新启动服务器时sv1
,sv2
它应该首先启用nginx
。重启完成后请检查service nginx status
是否正在运行。
您kill node
的意思是应用程序已关闭,因此您遇到了500
错误nginx
推荐阅读
- lttng - 如何找出谁在注册 lttng 跟踪点探测?
- javascript - 在 nodeJS 上加载 html 页面直到键盘中断才会加载
- azure - 使用图形 api 对 Azure AD 用户进行身份验证
- r - 在 R 中创建具有特定列名和行名的卡方矩阵
- javascript - 人们分配变量后,Angular 6 / Typescript 属性为“未定义”
- javascript - 如何找到与替代文本和框模型相关的另一个 Safari 解决方法?
- python - 如何在张量流中矢量化索引操作
- haskell - 如何制作同参数化类型的异构类型的容器?
- angular - 如何从 API 获取员工信息?
- sql - Postgres 中的嵌套 sql 脚本和变量