如何将多个域路由到多个节点应用程序?

时间:2013-04-30 15:15:14

标签: apache node.js nginx

我已经习惯了典型的灯网络托管环境,您只需点击cpanel中的几个按钮,您的域就会被分区并映射到htdocs中的文件夹。我一直在使用node.js,做同样的事情似乎并不那么简单。如果我有多个节点应用程序并且我想将domain1.com:80和domain2.com:80各自路由到它自己的节点应用程序和端口,我该如何去做呢?我从哪里开始?

3 个答案:

答案 0 :(得分:2)

这通常使用nginx完成。 Nginx是一个反向代理,是你放在infront node.js的一个软件。

server {
    listen      80;
    server_name www.domain1.com;
    root /var/www/domain1;

    location / {
        proxy_pass http://localhost:1337; # this is where your node.js app_domain1 is listening
    }
}

server {
    listen       80;
    server_name www.domain2.com;
    root /var/www/domain2;

    location / {
        proxy_pass http://localhost:1338; # this is where your node.js app_domain2 is listening
    }
}

从这里开始:Nginx Different Domains on Same IP

答案 1 :(得分:1)

我不建议apache做这些,nginx更适合nodejs。

您可以在端口3000和3001上运行应用程序,

然后代理它到mydomain1:80,mydomain2:80。

要使mydomain1和mydomain2更接近端口80,这些都是关于DNS而不是apache。

没有办法在同一个端口上运行apache / nginx和你的节点httpserver。我会得到一个错误。

P.S。我不确定你能做这些@tipical lamp webhost

希望有所帮助

答案 2 :(得分:1)

如果您使用Express,则可以在Node中设置虚拟域。

用于启动服务器的代码看起来像这样。

var sys = require('sys'),
  express = require('express');

var app = express.createServer();

app.configure(function() {
  app.use(express.vhost('subdomain1.local', require('./subdomain1/app').app));
  app.use(express.vhost('subdomain2.local', require('./subdomain2/app').app));
  app.listen(3000);
});

然后,您将在每个子域中导出app

var app = express.createServer();
exports.app = app;

这是一篇帖子,详细了解vhost in Express.js