2014-09-21 6 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? –

+0

@JoachimIsaksson 정확 하 게. –

+1

@JoachimIsaksson 답변을 추가하는 것을 잊지 마십시오. 문제가 해결되었습니다. :-) –

답변

3

문제는의 nginx에 proxy_pass이 호스트가 귀하의 재 작성에 참조 무엇에 호스트 헤더를 다시 쓰는 것입니다. 해당 동작을 재정의하려면 proxy_set_header을 사용하여 보내는 프록시 요청의 호스트 헤더를 수동으로 무시할 수 있습니다.

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

좀 더 자세한 설명은 here입니다.

관련 문제