【问题标题】:how do I route multiple domains to multiple node applications?如何将多个域路由到多个节点应用程序?
【发布时间】:2013-04-24 13:47:03
【问题描述】:

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

【问题讨论】:

标签: apache node.js nginx


【解决方案1】:

这通常使用 nginx 完成。 Nginx 是一个反向代理,一个你放在 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

【讨论】:

    【解决方案2】:

    我不推荐 apache 做这些,nginx 更适合 nodejs。

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

    然后将其代理到 mydomain1:80 和 mydomain2:80。

    要让 mydomain1 和 mydomain2 脱离端口 80,这些都是关于 DNS 而不是 apache。

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

    附言我不确定你能不能做到这些@tipical lamp webhost

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      如果您使用 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 的信息。

      【讨论】:

      • 好消息,但我想我会坚持使用 nginx
      猜你喜欢
      • 2020-10-29
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 2018-12-26
      相关资源
      最近更新 更多