node.js - 部署的 node.js 应用程序未显示在默认 IP 地址上,而 nginx 默认页面工作正常

标签 node.js linux nginx heroku centos7

我是第一次将我的 node.js 应用程序部署到商业 VPS。我之前已经通过 Heroku 部署了该应用程序,但整个过程与这次的体验大不相同。我已经通读并尝试了一些我从谷歌获得的 VPS 部署文章,但其中大部分已经过时或提供的条件不完全相同。我以某种方式下载了我的 nodejs 应用程序和 nginx,并在我的 VPS 上运行,但我仍然看不到应用程序的默认页面,而 nginx 默认页面可从 VPS 默认 IP 地址访问。

我的设置:

  • 操作系统:CentOS7
  • VPS:Vultr
  • Node.js(也从服务器端更新到 8.9.4)
  • Express/Nginx(均已安装并更新至最新稳定版本)
  • 该应用已经在本地 PC 和 heroku 上进行了测试,运行良好。

我可以从控制台和 pm2 监视器状态看到我的应用程序正在运行,它们都是绿色的。但是,我无法从 IP 地址和端口看到应用程序正在运行。

我从 Node.js 应用程序设置的端口

http.listen(process.env.PORT || 3000, function(){
  console.log("server is up at " + this.address().port)
})

我使用了与 Heroku 相同的端口设置(因为 Heroku 不支持任意端口设置)。该应用程序似乎正在端口 3000 上运行。

[root@myserver]ip a 结果:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
    inet ***.***.***.***/*** brd XXX.XXX.XXX.XXX scope global dynamic eth0
       valid_lft 78778sec preferred_lft 78778sec
    inet6 XXXX::XXXX:XXX:XXXX:XXXX/XX scope link
       valid_lft forever preferred_lft forever

我使用了上面用 ***.***.***.*** 屏蔽的 IP 地址(有和没有端口 3000),它显示nginx 默认页面,但 nodejs 应用程序未显示。我试图修改我的 nginx.conf 但建议因页面而异,我不知道该怎么做。有人说我应该添加 http://localhost:PORT; 作为位置括号内的代理传递,而其他人说我应该添加 http://APP_PRIVATE_IP_ADDRESS:PORT;。甚至我应该编辑的 nginx.conf 的位置也因文章而异。我从目录中发现了一些与建议不同的 nginx.conf,但它们甚至没有 locations{} 括号。我不知道该选哪一个,而且很难恢复这个决定,因为它很容易被破坏。

最佳答案

我已经从 /var/nginx/conf.d/ 中的 default.conf 中删除了默认的 .html 文件规范,并填写了 localhost:[my应用程序的监听端口]。它终于显示了我的 Node.js 应用程序耶!重点是带有 location 部分的 conf 文件只有一个,在部署纯 html 以外的应用程序时不要忘记删除默认 html 设置。如果没有其他默认内容,nginx 似乎会自动检测正在监听请求的应用程序。

关于node.js - 部署的 node.js 应用程序未显示在默认 IP 地址上,而 nginx 默认页面工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49065946/

相关文章:

c++ - 跨平台 svn 管理(Makefiles & Visual Studio)

node.js - Node opc-ua - 我如何发现服务器中的变量?

javascript - TypeError : admin. firestore(...).collection(...).doc(...).collection(...).doc(...).get.then 不是函数

javascript - 可以将 promise 添加到数组并基于单个操作解决它们吗?

node.js - NodeJS 的 Kdb+ 驱动程序

linux - 我应该怎么做才能创建 Linux 可安装 I2C EEPROM 设备?

linux - 删除第 1 列和第 2 列中具有相同字符串的行

node.js - Node Express 虚拟主机 VS NGINX 服务器上的多 Node 应用程序

node.js - 将 Socket.io 对象存储在持久化数据库或 redis 中

nginx - 重写 - 将服务器 IP 转发到域 url nginx