设置具有多个网站的节点服务器,并让每个网站都有自己的线程

Setup Node server with multiple websites and have each site on its own thread

我有一台笔记本电脑,我正在 运行 节点上,一台 Ubuntu 服务器带有四核处理器。

此服务器上有 2-3 个站点的计划,我不是一个非常好的管理员,需要帮助才能使这个站点运行,所以我不想从头开始,运行 一个管理程序。有没有办法让节点托管 3 个站点,并让每个 运行 在处理器自己的线程上?我知道 Node 是单线程的,虽然我真的不需要为了性能而这样做(因为它只是为了开发),但我喜欢把它作为在 node 中做事的练习,这会很酷!数据库有第二台笔记本电脑,所以我不担心资源问题。

所以 Ubuntu 服务器的一个实例上的 3 个站点都在不同的线程上.....

如果您 运行 3 个不同的应用程序,即。站点然后它们将 运行ning 作为您服务器上的不同进程假设所有 运行 在不同的端口上,应该没有问题同时 运行ning 它们。当您提到适用于单个进程的单线程节点时,每个进程都有自己的事件循环 运行ning。

还不完全清楚您要完成的任务。这里有几个场景:

  1. 创建三个独立的 node.js 服务器,每个服务器侦听自己的端口,并且每个服务器都将 运行 设置自己的 node.js 进程,彼此独立。然后让每个客户端连接到适当的端口。

  2. 创建三个独立的 node.js 服务器,每个服务器侦听自己的端口,并且每个服务器都将 运行 设置自己的 node.js 进程,彼此独立。使用 NGINX 作为三个 Web 服务器前面的代理,您可以让 NGINX 将端口 80 上的所有请求从三个域中的每一个定向到适当的 node.js Web 服务器。以这种方式使用 NGINX,所有三个 Web 服务器都可以 运行 连接在默认端口 80(或 443)上,NGINX 会将它们分开并将它们定向到适当的 Web 服务器进程。

  3. 创建自己的主控node.js进程接收所有三个域的请求,查看主机header查看请求实际指向哪个域然后转发该请求到适当的 child 进程。这类似于集群在 node.js 中的工作方式,但每个 child 进程将是您的每个不同的 Web 服务器。就个人而言,我会使用 NGINX 中的 pre-built 功能来为您完成此操作(如上面选项 2 中所述),但如果您不想 运行 NGINX,您可以自己编写代码。

  4. 而不是 NGINX,使用您的 ISP 可能已经拥有的某种负载平衡器,将传入连接定向到正确的服务器进程。