每服务器NodeJS配置

时间:2011-05-17 15:43:10

标签: node.js

我的第一台NodeJS服务器与应用程序的其余部分一起部署到客户端服务器。我有一些项目需要在特定于服务器的基础上进行配置,但我找不到任何简单的方法来处理这个问题。

在谷歌上搜索我发现了一些选择 - 使用内置支持的框架(太晚了),设置一个可以加载的配置文件(可以工作,但我不想担心为我们拥有的每个服务器保留一个配置文件,并将它们保留在git之外。

我很想让节点确定请求域是什么(dev.ourdomain vs www.ourdomain)并且只是做一个条件。听起来很简单,很容易,但我找不到任何方法来确定域数据。

3 个答案:

答案 0 :(得分:1)

正如@drachenstern所提到的,你可以使用request.headers.host,如:

# get the path portion of the URI without optional port
var domain=request.headers.host.replace(/\:\d+$/,''); 

但如果请求是使用IP地址而不是服务器名称进行的,则不会提供规范域。

更好的选择可能是使用服务器的主机名,如:

var domain=process.env[
  process.env['OS'] && process.env['OS'].match(/^Win/) ? 'HOSTNAME' : 'HOST'
];

答案 1 :(得分:0)

您可以考虑request.host是否包含您需要的数据。它很可能会。

答案 2 :(得分:0)

为什么不在init.js中对该信息进行硬编码并为每个服务器更改?您多久需要移动服务器才能执行此操作?就这样做

init.js

module.exports = { domain: "dev.ourdomain"};

main.js

var domain = require( "init.js" ).domain;

我假设您正在开发dev.ourdomain并将其转储到www.ourdomain上。只是忽略转储init.js,以便服务器的init版本仍然是^ _ ^这就是我所做的,它省去了用另一个模块为一个命令膨胀项目的需要。

希望这有助于遇到这种情况的其他人。