如何在Express.js或Connect.js中配置多个子域?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (39)

我习惯于使用httpd(Apache),它提供了一种配置映射到目录的子域的方法。我如何在Connect.js/Express.js中做同样的事情?我看到我唯一拥有的是我不知道如何使用配置子域的路由。我有像m.mysite.com,sync.mysite.com这样的子域名

提问于
用户回答回答于

或者你也可以使用vhost

然后,在他们自己的目录中创建几个站点并导出快速应用程序,例如。/path/to/m/index.js

var app = express()
/* whatever configuration code */
exports.app = app
// There is no need for .listen()

然后使用以下应用处理所有请求:

var vhost = require('vhost');

express()
.use(vhost('m.mysite.com', require('/path/to/m').app))
.use(vhost('sync.mysite.com', require('/path/to/sync').app))
.listen(80)

需要注意的是/path/to/m/path/to/sync可以是绝对的路径(如上面写)或相对路径。

用户回答回答于

可以将一个子域添加到请求中,然后在随后的next()调用中检查它。

app.get('*', function(req, res, next){ 
  if(req.headers.host == 'some.sub.domain.com')  //if it's a sub-domain
    req.url = '/mysubdomain' + req.url;  //append some text yourself
  next(); 
});

// This will mean that all get requests that come from the subdomain will get 
// /subdomain appended to them, so then you can have routes like this 
app.get('/blogposts', function(){ 
  // for non-subdomain 
});

app.get('/mysubdomain/blogposts', function(){ 
   // for subdomain 
});

扫码关注云+社区

领取腾讯云代金券