1

目标:

在不同的文档根目录下使用相互独立的多个实时 node.js 服务器。

使用 NGINX

server {
    server_name .lolwut1.com;
    root /var/www/html/lolwut1;
    # proxy pass to nodejs
    location / {
        proxy_pass    http://127.0.0.1:5001/;
    }
}

server {
    server_name .lolwut2.com;
    root /var/www/html/lolwut2;
    # proxy pass to nodejs
    location / {
        proxy_pass    http://127.0.0.1:5002/;
    }
}

/var/www/html/lolwut1/app.js

var http = require('http');
var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("lolwut1\n");
});
server.listen(5001);

/var/www/html/lolwut2/app.js

var http = require('http');
var server = http.createServer(function (request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.end("lolwut2\n");
});
server.listen(5002);

所以当我...

node app.js/var/www/html/lolwut1/app.js和打lolwut1.com我都很好。

问题:

  1. 但是现在如果我想启动第二个节点服务器怎么办?
  2. 这是一种不好的方法吗?...我想错了吗?
  3. 将带有connect.vhost指令的 node.js 用作路由器而不是 NGINX 的优点/缺点是什么?
4

2 回答 2

3
  1. 永远使用来启动和停止您的节点应用程序。
  2. 你做对了!这种方法对我来说很有效。
  3. 连接vhost 优点:不必安装和配置nginx。整个堆栈是 node.js。

    Nginx 优势: Nginx 是成熟稳定的 Web 服务器。它不太可能崩溃或表现出奇怪的行为。它还可以托管您的静态站点、PHP 站点等。

    如果是我,除非我需要 Nginx 的某些特定功能,否则我会选择 Connect vhost 或node-http-proxy以获得 all-node.js 堆栈。

于 2013-02-21T03:53:01.027 回答
1

但是现在如果我想启动第二个节点服务器怎么办?这是一个不好的方法吗?...

当您 cd 到/var/www/html/lolwut2/并运行时node app.js,这应该会在端口 5002 上启动第二个服务器,并且 lolwut2.com 应该可以工作。

我在想这个错误的方式吗?

如果您有足够的内存和充足的 CPU 功率,那么这是在同一台服务器上运行多个节点应用程序的有效方法。upstream这也是在同一台机器上扩展单个节点应用程序以通过运行多个节点并使用指令来利用多个内核的好方法(如这里https://serverfault.com/questions/179247/can-nginx-round -robin-to-a-server-list-on-different-ports )

于 2013-02-21T03:53:19.823 回答