使用PM2将节点作为服务运行 - 连接被拒绝

时间:2016-07-09 02:02:30

标签: node.js ubuntu nginx digital-ocean pm2

我正在关注在数字海洋Ubuntu发行版上设置节点项目的this教程。 systemctl status pm2显示该服务在线:

App name │ id │ mode │ pid   │ status  │ restart │ uptime │ memory      │ watching
server   │ 1  │ fork │ 19999 │ online  │ 0       │ 0s     │ 21.219 MB   │ disabled │

但是当我尝试导航到域时,我收到连接拒绝错误。如果我用npm start运行它,应用程序在端口5000上启动正常。我安装了Nginx并配置如下:

server {
    listen 80;

    server_name <mysite.com>;

    location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

}

节点版本为v6.3.0,pm2版本为1.1.3。

1 个答案:

答案 0 :(得分:1)

我经历过类似的事情:


  1. 使用nodenode dist/app.js一起运行,可以按预期访问TCP服务器:
$ nc -vz 1.1.1.1 5000
> Connection to 1.1.1.1 port 5000 [tcp/commplex-main] succeeded!

(注意:不是真实的IP地址^^^)

  1. 使用pm2pm2 restart dist/app.js运行时,TCP服务器拒绝了连接:
$ nc -vz 1.1.1.1 5000
> nc: connectx to 1.1.1.1 port 5000 (tcp) failed: Connection refused

检查.env后,我意识到我不小心将服务器主机IP保留在开发本地主机127.0.0.1上,而不是将其更改为公用接口0.0.0.0

切换到公用接口0.0.0.0后,它们的行为与连接成功相同。

也许最好不要使用该路由,而最好使用https://www.digitalocean.com/community/tutorials/how-to-develop-a-node-js-tcp-server-application-using-pm2-and-nginx-on-ubuntu-16-04#step-4-%E2%80%94-set-up-nginx-as-a-reverse-proxy-server

将Nginx配置为stream的TCP的反向代理服务器。