2012-10-28 54 views
7

我打算使用node.js来执行三个站点。我在这些网站中有一些常见的模板。我应该在单个node.js实例上运行全部三个站点吗?在node.js上运行多个站点

我知道'虚拟主机'中间件,它允许你在单个http服务器上运行多个域。有没有更好的选择来做到这一点?

我也有一些静态html模板,不知道如何处理这些在node.js?

最后我想知道这种设置的托管选项?

+0

您应该使用nginx的。看看这篇文章:http://stackoverflow.com/questions/5009324/node-js-nginx-and-now – Pardoner

回答

14

我自己只需要做同样的事情。你想要做的是使用某种反向代理。

我使用的一个是在这里:https://github.com/nodejitsu/node-http-proxy

只需安装代理程序包:npm install http-proxy

我要做的就是让代理端口80上的服务器上运行我设置了DNS了各个领域指向这台服务器。

每个应用程序运行在同一台服务器上(即时使用屏幕)。

例如:

MySiteApplication1 - 3001 
MySiteApplication2 - 3002 
MySiteApplication3 - 3003 

然后代理服务器的文件应该是这样的

var httpProxy = require('http-proxy'); 

var server = httpProxy.createServer({ 
    router: { 
    'mysite1.com': 'localhost:3001', 
    'mysite2.com': 'localhost:3002', 
    'mysite3.com': 'localhost:3003' 
    } 
}); 

server.listen 80 
+0

谢谢布伦丹,你在哪里托管你的节点应用程序? httpProxy如何在性能方面发挥作用?你有没有得到任何静态数据,如果是的话那你怎么处理这个问题?干杯 –

+1

我在我购买的VPS上托管它。所以像林德这样的东西很好。对于静态数据,你可能想使用像nginx这样的东西,但我没有遇到任何问题。你可以用'ab'来测试它:) – Menztrual

+1

这个答案已经过时了。 'node-http-proxy' [已删除](https://github.com/nodejitsu/node-http-proxy/issues/652)'router'选项,因为它“属于一个单独的模块”。 ['http-master'](https://github.com/encharm/http-master)似乎是对此的答案,并在内部使用'node-http-proxy'。 – Nateowami

相关问题