如何开发支持多租户的node.js应用程序

时间:2011-12-16 15:41:16

标签: node.js

我要求我使用相同的端口号为多个站点(主机名)提供服务。

这些网站共享相同的代码文件,但区别在于它们具有不同的网站配置和文件上传文件夹。

基本上它只是一个可以托管各种域的cms,通常每个域都有自己的主题和配置,当然还有数据库连接。

有没有人可以就此给我一些指示?非常感谢 许多。

3 个答案:

答案 0 :(得分:2)

var subdomains = require('express-subdomains')
    , express = require('express')
    , app = Express.createServer()

// example: api.example.com/user -> '/api/user'

subdomains
  .use('api')
  .use('other.vanity.domain')

app.use(subdomains.middleware)

app.get('/api/user' function (req, res, next) {
  // ..
})

app.listen()

https://github.com/tblobaum/express-subdomains

答案 1 :(得分:1)

每个站点都应该有自己的进程和端口,您应该根据主机名代理请求。

您可以使用node-http-proxybouncy将每个站点代理到其特定端口。另一种选择是使用Express的虚拟主机功能:https://github.com/visionmedia/express/blob/master/examples/vhost/app.js

答案 2 :(得分:1)

您可以从单个HTTP服务器代码库轻松支持多个域(请参阅virtual hosting),您只需在处理程序中实现逻辑以检查请求主机(例如,在Host HTTP标头中并根据其价值有条件地行事。然后,您可以将任意数量的DNS名称指向您的服务器,并对它们采取不同的行为。

以下是一个例子:

http.createServer(function (request, response) {
  var host = request.headers['Host'];
  if (host == 'domain1.com') {
    // Execute logic based on that host.
  } else if (host == 'domain2.com') {
    // Execute other logic...
  }
}).listen(8080);