使用NGINX代理的Muitliple Node.js服务器

时间:2013-02-21 02:58:47

标签: node.js nginx

目标:

在不同的doc根目录下使用muitiple live 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中的{p> /var/www/html/lolwut1/app.js并点击lolwut1.com我一切都很好。

问题:

  1. 但现在如果我想启动第二个节点服务器呢?
  2. 这是一种不好的方法吗?......我是否以错误的方式思考这个问题?
  3. What are the advantages/disadvantages of using node.js with a connect.vhost directive as a router rather than NGINX?

2 个答案:

答案 0 :(得分:3)

  1. 使用forever启动和停止节点应用。
  2. 你做对了!这种方法对我来说已经有好一段时间了。
  3. Connect vhost Advantage:您无需安装和配置nginx。整个堆栈是node.js。

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

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

答案 1 :(得分:1)

  

但现在如果我想启动第二个节点服务器呢?这是一个糟糕的方法吗?...

当您转到/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)来利用多个核心的好方法