node.js - 特定于域的路由 - Nodejs
问题描述
我正在构建我的第一个大型/复杂 nodejs (express) 应用程序。它的特别之处在于我想在不同的域上提供应用程序。但根据域的不同,它应该显示略有不同的内容和样式。假设我有这三个域:
carapp.com
卡车应用程序.com
自行车应用程序.com
我使用 nginx 作为反向代理,它为静态文件提供服务。现在我需要帮助找出向每个域添加唯一路由的最佳方法。我考虑过添加这样的中间件:
app.use(function(req, res, next){
if(req.headers.host === 'carapp.com'){
app.use(indexRoutes1);
}
if(req.headers.host === 'truckapp.com'){
app.use(indexRoutes2);
}
if(req.headers.host === 'bikeapp.com'){
app.use(indexRoutes3);
}
next();
});
但我不知道这是否是正确的方法。希望有人能给我一些好的建议吗?
解决方案
您的实施正是我所建议的。使用主机标头与标头的预期用途相匹配Host
:https ://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23
您可能会考虑默认为三个页面之一,以防Host
标题丢失或与三个页面之一不匹配,例如,如果有人使用 IP 进行连接。
推荐阅读
- javascript - 将用户输入从输入字段获取到通过 for 循环创建表格单元格的 js 表格中
- java - 为什么不能在没有赋值的情况下使用三元运算符(左侧的变量)?
- asp.net - 将数据发送到视图并显示
- java - 有一种方法可以将 % (sql) 放入 java 中。像这样“从员工中选择名字,其中名字像'A%e'”
- c - 用 realloc 增加二维数组的行?
- qt - QML ComboBox 项目不显示正确的文本
- javascript - 使用 int 和 float 的数字原型
- c - ## 宏预处理器使用
- regex - Git diff:仅显示不匹配模式的更改
- python - 获取 Jupyter notebook 以实时显示 matplotlib 图形