【问题标题】:setting up upstream with nginx and node?使用 nginx 和节点设置上游?
【发布时间】:2012-11-23 04:08:38
【问题描述】:

我在 aws 上有三个实例。一个用于前端服务器的nginx,以及两个后端nodejs实例。

我正在尝试将 nginx 服务器设置为这些 node.js 实例的上游:

upstream node_servers {
        server private_ip:8124 weight=10 max_fails=3; // node server 1 private_ip:port
        server private_ip:8124 weight=10 max_fails=3; // node server 2 private_ip:port
}
server {
    listen  private_ip:80;     // nginx server private ip:port
    root /home/ubuntu/project/;
    server_name public_ip.eu-west-1.compute.amazonaws.com;  // nginx public DNS
    location / {

                try_files $uri $uri/ /index.html;
                proxy_pass http://node_servers/;

     }
}

在我的节点 1 服务器上,节点 2 服务器实例 app.js 代码:

app.listen(8124, "127.0.0.1");
console.log("listening on 8124");

我去nginx服务器公共域名,并没有真正发生任何事情,它只是永远加载发送请求.....

【问题讨论】:

  • 您需要定位您的问题:您应该登录到您的前端服务器并尝试 curl 节点实例:curl http://IP:8124,这应该会返回一些内容。如果不检查您的 iptables 或尝试像 80 或 8080 这样的标准 http 端口。如果您得到回报,那么您可以先尝试上游到一台服务器。还要检查你的 nginx 日志,看看那里是否有任何有用的东西。
  • curl: (52) 来自服务器的空回复,这是我得到的?
  • 你试过设置节点端口为80吗?您的防火墙是否阻止请求?您的节点服务器是否仍绑定到 localhost (127.0.0.1)?

标签: node.js nginx load-balancing reverse-proxy


【解决方案1】:

在您的节点代码中,您正在侦听 127.0.0.1 上的环回接口(仅来自本地主机的请求):

app.listen(8124, "127.0.0.1");

您必须监听您的特定私有 IP 或 0.0.0.0:

app.listen(8124, "0.0.0.0");

【讨论】:

  • 您也可以将其设置为监听私有地址,以便只接受来自 nginx 或本地地址的连接
猜你喜欢
  • 2016-08-11
  • 2016-06-27
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 2018-10-11
  • 2015-05-18
  • 2018-06-28
相关资源
最近更新 更多