即时添加域到NodeJS Express http服务器

时间:2014-12-24 06:41:18

标签: node.js express

我正在托管多个域,每个域使用Express vhost运行相同的节点应用程序。我使用http.createServer

启动它们
var app = express(); 
require('./app.js')(function(theApp) {

    app.use(express.vhost(domainName1, theApp));
    app.use(express.vhost(domainName2, theApp));
    app.use(express.vhost(domainName3, theApp));
    var d = domain.create();
    d.run(function(){
        http.createServer(app).listen(80);
    }); 
});

是否可以执行相同的操作,但能够在不必重新启动节点应用程序的情况下即时向服务器添加新域? IE伪代码:

  • 执行上述操作
  • 等待添加域数据库记录
  • 添加新的虚拟主机
  • 重新启动必要的事情

我想确保在添加新域时,现有域的用户尽可能少地停机(甚至没有)。

1 个答案:

答案 0 :(得分:1)

默认的Express行为是基于Host标头不区分。 vhost中间件添加了此行为。每当您发现想要支持的新域时,您可能会添加更多中间件......或者您可以首先在Host标题上区分

var app = express(); 
require('./app.js')(function(theApp) {
    app.use(theApp);
    var d = domain.create();
    d.run(function(){
        http.createServer(app).listen(80);
    }); 
});