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

目标:

在不同的文档根目录下使用多个独立的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); 

所以当我…

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

问题:

  1. 但是现在如果我想启动第二个节点服务器呢?
  2. 这是一个坏的方法吗?我在想这个错误的方法吗?
  3. 使用node.js和connect.vhost指令作为路由器而不是NGINX有什么优点/缺点?

  1. 永远使用来启动和停止节点应用程序。
  2. 你做得对! 这个方法对我来说已经很好用了。
  3. 连接虚拟主机优势:您不必安装和配置nginx。 整个堆栈是node.js.

    Nginx优点: Nginx是一个成熟稳定的Web服务器。 这是不太可能会崩溃或表现出奇怪的行为。 它也可以托管你的静态网站,PHP站点等

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

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

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

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

如果你有足够的内存和大量的CPU能力,这是在同一台服务器上运行多个节点应用程序的有效方法。 这也是在同一台机器上扩展单个节点应用程序的好方法,通过运行多个节点并使用upstream指令来利用多个内核(就像这里https://serverfault.com/questions/179247/can-nginx-循环到服务器列表不同端口 )