【问题标题】:Do I need a different server to run node.js我需要不同的服务器来运行 node.js
【发布时间】:2018-11-13 14:17:22
【问题描述】:

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

什么是我实现这一目标的最佳方式,因为我只是在兜圈子。还有一种方法可以让我在我的 PC 上设置一个服务器,并事先一起运行和测试这两个服务器,以便我了解需要什么并让它工作,因为它会阻止我订购我不需要的服务器。

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

【问题讨论】:

  • 您的问题确实令人困惑,所以我建议您花一些时间了解 Node 是什么,然后您就可以回答自己的问题或对其进行编辑:nodejs.org/en/about
  • 我知道 node.js 是什么,我只是在寻求有关如何让 2 尽可能一起运行的建议,因为我无法获得有关托管站点和运行节点应用程序的任何答案背景
  • 我有一个共享托管服务和一个安装了 node.js 的基于云的托管服务器 - 在这个设置中。您可能需要从不同的子域为它们提供服务,或者将 Nginx 作为反向代理从单个域为它们提供服务。 Node 是应用程序服务器,在提供静态文件方面效率低下,最好与 Nginx 左右配合使用。无论如何,仅使用 Node 就可以做到这一点。如果您不知道如何做,那么您需要学习 Node 和 Express 以供初学者使用。

标签: node.js server


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    您可以使用 NGINX 作为您的前端 Web 服务器并将请求代理到您的后端节点服务。

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

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

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

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

    location / {
      proxy_pass http://lucyservice;
    }
    

    您的 Node 服务可以在进程管理器中运行,例如 forever / pm2 等。您可以在集群中运行多个 Node 服务,具体取决于您的机器有多少处理器等。

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

    【讨论】:

    • 谢谢,这就是我正在寻找的那种帮助,你会推荐在 PC 上使用什么软件来测试所有这些,然后再转移到服务器上?谢谢
    • 您可以在本地机器上进行复制 - 只需设置 Nginx,我会永远推荐它,因为它很容易(npm install -g forever)。现在您可以在后台运行您的 Node 进程并使用 Nginx 进行操作,直到您根据需要进行设置。
    猜你喜欢
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 2019-06-11
    • 2017-05-26
    • 1970-01-01
    相关资源
    最近更新 更多