所以我知道这是可行的:
app.use(express.vhost('sub.xyz.com', subdomainApp));
app.use(express.vhost('xyz.com', mainApp));
但是当我尝试在 express.vhost 中动态设置主机部分时,它根本不起作用。 (我需要动态设置它,以避免在生产和开发之间移动时更改硬编码域。)
我试过下面的代码,但我不知道为什么它不起作用:
app.use(function(req, res){ return express.vhost('xyz.'+req.host, subdomainApp); });
app.use(function(req, res){ return express.vhost(req.host, mainApp); });
那么我如何将“请求主机”动态传递给 express.vhost?
最佳答案
我不完全了解您的实现细节,但我建议并且我认为这是最常见的做法是在环境变量中设置这些配置参数。
所以你会的。
app.use(express.vhost('xyz' + process.env.APP_HOST, subdomainApp));
因此您可以在生产/开发环境中使用不同的环境变量。
使用命令行设置环境变量
export APP_HOST=wahtever
或者在执行 Node 命令之前追加
APP_HOST=whatever node server.js
或将它们添加到您的 *.bash_profile* 或适用于您的操作系统的等效文件
关于node.js - 如何在没有硬编码的情况下在 Expressjs 中设置虚拟主机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19513618/