2014-09-21 59 views
2

我有一個基本的http服務器運行在多個域指向的服務器上。我需要找到請求的主機(請求來自的域)。從NodeJS請求獲取主機

require("http").createServer(function (req, res) { 
    console.log(req.headers.host);     
    res.end("Hello World!");      
}).listen(9000);         

req.headers.host的值是127.0.0.1:9000代替域名(example.com左右)。

如何從請求對象獲取域名?

節點服務器通過nginx代理。配置是這樣的:

server { 
    listen 80; 
    server_name ~.*; 
    location/{ 
     proxy_pass http://127.0.0.1:9000; 
    } 
} 
+0

節點服務器如何代理? nginx的? – 2014-09-21 07:45:26

+0

@JoachimIsaksson沒錯。 – 2014-09-21 07:46:44

+1

@JoachimIsaksson不要忘了添加一個答案。問題解決了。 :-) – 2014-09-21 07:49:40

回答

3

的問題是,在proxy_pass nginx的重寫主機頭到任何主機在你重寫引用。如果您想覆蓋該行爲,可以使用proxy_set_header手動覆蓋傳出 - 代理 - 請求的主機頭;

server { 
    listen 80; 
    server_name ~.*; 
    location/{ 
     proxy_pass http://127.0.0.1:9000; 
     proxy_set_header Host $http_host; 
    } 
} 

有些更詳細的解釋可用here