如何为 nodejs+expressjs 应用程序添加子域?

How to add subdomain for a nodejs+expressjs application?

在我的 nodejs 应用程序中,我需要动态添加子域。我的应用程序包含书籍列表。如果用户登录到我的站点并转到其中一个图书的详细信息页面,url 应该更改,以便 url 应该包含书名作为子域。这应该发生在每个详细信息页面上。
谁能帮我在本地主机上做这个?

版本:
节点:v0.10.22
快递:4.12.1

有两个问题需要考虑:

  • 将来自任何子域的请求定向到您的服务器
  • 确定提供给请求的实际子域是什么,并做出相应的反应

对于第一部分,配置您的 nginx / 服务器的入口点应该足够简单。

对于第二部分,您需要能够在中间件中确定给定的子域。 Express.js actually has something for that,允许您编写一个中间件来处理:

// ... app creation and other middlewares

app.use(function(req, res, next) {
  var requestedSubdomain = req.subdomains.join('.');

  // Do something with it, e.g.:
  return database.getResourceWithName(requestedSubdomain, function(err, result) {
    if (err)
      return next(err);

    req.resource = result;
    // Now all subsequent middleware will have access to the resource via `req.resource`
    return next();
  });
});

// ... other middlewares and route definitions, then `app.listen()`

请注意,在这种特定情况下,我决定将子域连接在一起以构建资源名称,但您可能需要根据自己的情况进行调整。

希望对您有所帮助!