5

我正在使用vhostexpress/connect 中间件,我对应该如何使用它感到有点困惑。我希望将一组路由应用于具有子域的主机,另一组应用于没有子域的主机。

在我的 app.js 文件中,我有

var app = express.createServer();

app.use...(middlware)...
app.use(express.vhost('*.host', require('./domain_routing')("yes")));
app.use(express.vhost('host', require('./domain_routing')("no")));
app.use...(middlware)...

app.listen(8000);

然后在domain_routing.js

module.exports = function(subdomain){

  var app = express.createServer();

  require('./routes')(app, subdomain);

  return app;
}

然后在routes.js我计划运行路由集,这取决于传入的子域变量是"yes"还是"no".

我是在正确的轨道上还是这不是你使用这个中间件的方式?我对app创建两个服务器实例这一事实有点困惑(因为这就是网络上的示例似乎做事的方式)。我是否应该传入原始app服务器实例并只使用它而不是创建一个单独的服务器实例而不是子域路由器?

4

1 回答 1

2

是的,你在正确的轨道上。每个虚拟主机都应该有一个不同的服务器实例。无论是 ahttp.Server还是express app.

如果您通过了 original app,您发送到 vhost 的请求将被发送到原始应用程序。因此,除非虚拟主机具有原始服务器中未使用的路径,否则它将获得响应,就好像请求已发送到原始服务器一样。

从连接文档

connect()
  .use(connect.vhost('foo.com', fooApp))
  .use(connect.vhost('bar.com', barApp))
  .use(connect.vhost('*.com', mainApp))
于 2012-06-29T09:11:44.673 回答