如何为 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()`
请注意,在这种特定情况下,我决定将子域连接在一起以构建资源名称,但您可能需要根据自己的情况进行调整。
希望对您有所帮助!
在我的 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()`
请注意,在这种特定情况下,我决定将子域连接在一起以构建资源名称,但您可能需要根据自己的情况进行调整。
希望对您有所帮助!