2011-05-17 65 views
1

我有我們的第一個NodeJS服務器與應用程序的其餘部分一起部署到客戶端服務器。我有一些項目需要在服務器特定的基礎上進行配置,但我無法找到任何簡單的方法來處理此問題。每個服務器的NodeJS配置

在谷歌搜索中,我發現了一些選擇 - 使用支持內置(太晚)的框架,建立一個可以加載的配置文件(可以工作,但我不想擔心關於爲每臺服務器保留一個配置文件,並保留這些配置文件)。

我很想讓節點確定請求域是什麼(dev.ourdomain vs www.ourdomain),只是做一個條件。這聽起來很容易,它可能很容易,但我無法找到任何方式來確定域數據。

回答

1

正如@drachenstern提到的,你可以使用request.headers.host,如名稱。

一個更好的選擇可能是使用服務器的主機名,如:

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

我喜歡第二個選項。但現在更好使用require('os')'和'os.hostname()'我想。 http://nodejs.org/docs/v0.6.11/api/os.html – UpTheCreek 2013-02-28 07:29:55

0

你可能會考慮request.host是否有你需要的數據。它很可能會。使用IP地址

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

,但這不會提供規範域名,如果提出請求,而不是服務器的:

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版本仍然可用^ _ ^這就是我所做的,它使我無需爲另一個命令使用另一個模塊膨脹項目。

希望這可以幫助其他遇到這種情況的人。