每个服务器的NodeJSconfiguration

我有我们的第一个NodeJS服务器被部署到客户端服务器以及应用程序的其余部分。 我有几个项目需要在服务器特定的基础上configuration,但我无法find任何简单的方法来处理这个问题。

在谷歌search我已经find了一些select – 使用内置支持(太晚)的框架,build立一个可以加载的configuration文件(将工作,但我不想担心保持一个configuration文件为我们有每个服务器,并保持这些混帐)。

我很想让节点确定请求域是什么(dev.ourdomain vs www.ourdomain),只是做一个条件。 这听起来很简单,它可能很容易,但我无法find任何方式来确定域数据。

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

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

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

更好的select可能是使用服务器的主机名,如下所示:

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

你可能会考虑如果request.host有你需要的数据。 这很可能会。

你为什么不把这些信息硬编码到一个init.js文件中,然后为每个服务器改变呢? 你多久需要移动服务器来执行此操作? 只要做到这一点

init.js

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

main.js

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

我假设你正在dev.ourdomain上开发它,并在www.ourdomain上倾销它。 只要忽略转储init.js,以便服务器的init版本保持^ _ ^这就是我所做的,它使我无需为了一个命令而使用另一个模块来扩展项目。

希望这可以帮助那些遇到这种情况的人。