PM2和Nginx:502 Bad Gateway

时间:2016-05-24 10:24:40

标签: node.js ubuntu nginx pm2

我一直在尝试在一个全新的DO Droplet上部署我的Node项目,但我遇到了PM2的一些问题。

我的步骤如下:

  1. 节点安装在Droplet映像(Ubuntu,Node v4.4.4)
  2. 全球安装PM2
  3. 将Nginx设置为反向代理127.0.0.1:3000
  4. 克隆我的项目并执行npm install
  5. 我得到的是Nginx抱怨502 Bad Gateway。

    如果我查看Nginx error.log,我会得到这个:

      连接时

    connect()失败(111:拒绝连接)   上游,客户: client.ip ,服务器: my.server ,请求:   “GET / HTTP / 1.1”,上游:“http://127.0.0.1:3000/”,主持人:   “的 my.server

    PM2没什么可说的。 pm2 log 中没有任何内容,状态为在线

    我尝试跳过PM2,只是做了npm启动,效果很好。我也试过设置一个虚拟的hello world应用程序,并将其与PM2一起使用 - 它也有用。

    所以这就是我现在的位置:

    • 我的项目+ PM2:不起作用。
    • 我没有PM2的项目:有效。
    • Hello World app + PM2:有效。

    我不确定从哪里开始..我可以跳过PM2并使用节点,但我确实想要PM2的功能。

    有什么想法吗?

4 个答案:

答案 0 :(得分:9)

我只需要使用 bin / www 而不是 app.js 启动PM2。快速发电机和一切...

答案 1 :(得分:0)

Nginx有一个名为proxy_read_timeout的指令,默认值为60秒。它确定nginx将等待多长时间以获取对请求的响应。在nginx中。 conf文件,将proxy_read_timeout设置为120秒解决了我们的问题。

答案 2 :(得分:-1)

如果使用pm2 priority_queue参数,可能会出现问题。它可以检测更新日志并保持服务器重启。

答案 3 :(得分:-1)

这是节点安装的一些问题。删除node_modules文件夹,再次使用npm安装,使用pm2启动项目。

pm2 杀死

rm -rf node_modules

npm 我

pm2 启动 bin/www