node.js - 如何在没有硬编码的情况下在 Expressjs 中设置虚拟主机?

标签 node.js express virtualhost

所以我知道这是可行的:

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/

相关文章:

javascript - 如何传递react.js数据来创建类似meteor.js或relay.js的容器

node.js - Visual Studio npm install 将 node_modules 保存到解决方案文件夹

node.js - Actions-on-Google : TypeError: assistant. getContextArgument 不是函数

node.js - 在 sailjs 上实现 https 服务器

python - Apache24 上的 DJango 部署不起作用

javascript - 链接到另一个 html 文件在本地主机上有效,但在我将其上传到服务器时却无效

node.js - 将 sequelize 模型实例传递给服务在 express.js 中不起作用

javascript - 同构获取不适用于外部请求?

laravel - 如何设置 Aliases 或 VirtualHost 在 Apache2 上运行 laravel 项目

apache - 如何配置 Apache 在同一个域中有两个 symfony 项目(不使用子域)?