【问题标题】:Setup Node server with multiple websites and have each site on its own thread设置具有多个网站的节点服务器,并将每个网站都放在自己的线程上
【发布时间】:2016-11-14 04:38:30
【问题描述】:

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

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

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

【问题讨论】:

  • 如果你不关心端口,那么你可以运行三个具有不同端口的节点应用实例。
  • 那么如何在服务器上启动节点 3 次呢?因为如果我启动节点,那么我只会得到一个应用程序。像“sudo nodejs app.js”

标签: node.js multithreading ubuntu-server


【解决方案1】:

您要完成的工作并不完全清楚。以下是几个场景:

  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 进程来接收所有三个域的请求,查看主机标头以查看请求实际指向的域,然后将该请求转发到相应的子进程。这类似于 node.js 中集群的工作方式,但每个子进程将是您不同的 Web 服务器中的每一个。就我个人而言,我会使用 NGINX 中的预构建功能为您执行此操作(如上面选项 2 中所述),但如果您不想运行 NGINX,您可以自己编写代码。

  4. 使用某种负载平衡器代替 NGINX,您的 ISP 可能已经需要将传入连接定向到正确的服务器进程。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 那么如何在服务器上启动节点 3 次呢?因为如果我启动节点,那么我只会得到一个应用程序。像“sudo nodejs app.js”
    猜你喜欢
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多