我是否需要其他服务器来运行node.js

时间:2018-11-13 14:17:23

标签: node.js server

很抱歉,如果这个论坛上的问题不对,但是我只是被困住了,需要一些建议。我有一个共享的托管服务和一个安装了node.js的基于云的托管服务器。我想正常托管我的网站,但我也想使用node.js添加实时聊天和位置跟踪。我对在几个地方阅读的内容感到困惑,因为node.js本身是一台服务器,但并非旨在托管网站?所以我必须运行2台不同的服务器?一个用于网站,另一个用于运行node.js?当我使用运行的node.js脚本设置云时,我将无法再访问网页。

对我来说,实现此目标的最佳方法是什么,因为我只是在转转。还有一种方法可以让我在PC上设置服务器,然后事先一起运行和测试这两个服务器,这样我就能知道需要什么并使它工作,因为这将阻止我订购不需要的服务器。

非常感谢您的帮助或建议。

2 个答案:

答案 0 :(得分:0)

Node可以使用Express之类的框架来服务于网页,但如果与另一个Web服务器程序(Apache等)在同一端口上运行,则可能导致冲突。一种解决方案是在端口80上通过Web服务器为您的网页提供服务(对于HTTPS,则为443),然后在另一个端口上运行节点服务器,以便来回发送信息。

答案 1 :(得分:0)

您可以通过多种方法来实现这一目标,但这是一种流行的方法。

您可以将NGINX用作您的前端Web服务器,并将请求代理到您的后端Node服务。

例如,在NGINX中,您将按以下方式配置上游服务:

upstream lucyservice {
  server 127.0.0.1:8000;
  keepalive 64;
}

上面看到的8000仅是一个示例,您可能在其他端口上运行Node服务。

进一步在配置中(在服务器配置部分中),您将请求代理到服务,如下所示:

location / {
  proxy_pass http://lucyservice;
}

您是Node服务,可以像永远/ pm2等进程管理器中运行。您可以在群集中运行多个Node服务,具体取决于您的计算机具有多少处理器等。

回顾一下,您的前端Web服务器将处理端口80(HTTP)和或443(HTTPS)上的所有流量,这会将请求代理到运行在您定义的任何端口上的Node服务。如果需要,所有这些都可以在一台服务器上或多台服务器上进行。