2016-08-19 2 views
0

localhost 하위 도메인에서 nginx proxy_pass 리디렉션에 문제가 있습니다. 도메인이 "domain.com"이고 * .localhost : 9000에 * .domain.com의 모든 요청을 리디렉션하고 싶습니다. 그런 다음 노드는 * .localhost : 9000에 대한 모든 요청을 우수한 특급 애플리케이션으로 처리합니다. 의 nginx의 conf에Nginx 프록시 하위 도메인, 노드 vhost

나는 다음하려고하면 extranet.domain.com에

server { 
    server_name extranet.domain.com; 
    listen 80; 
    location/{ 
     proxy_pass http://extranet.localhost:9000; 
    } 
} 

요청이 아니라 좋은 빠른 웹 애플리케이션에 리디렉션됩니다. 이와

: 로컬 호스트에서 실행

server { 
    server_name ~^(.*?)\.domain\.com$; 
    listen 80; 
    location/{ 
     proxy_pass http://localhost:9000/$1; 
    } 
} 

익스프레스 응용 프로그램 : 9000 핸들 요청/mysubdomainname, 정규식이 좋은 것을 implie.

그러나 내가하려고하면

server { 
    server_name ~^(.*?)\.domain\.com$; 
    listen 80; 
    location/{ 
     proxy_pass http://$1.localhost:9000; 
    } 
} 

.domain.com에 HTTP 코드를 반환 * 모든 요청 (502) 왜 http://localhost:9000/ $ 1; http : //$1.localhost : 9000이 아닌 작동합니다. ? (모든 하위 도메인은/etc/hosts에 설정 됨)

미리 감사드립니다. 나는 완전히 잃어 버렸다!

답변

2

호스트 이름을 런타임에 알 수없는 경우 nginx는 own resolver을 사용해야합니다. 운영체제에서 제공하는 리졸버와는 달리, /etc/hosts 파일은 사용하지 않습니다.

+0

감사합니다. 그래서 내가 원하는 것을 수행하는 유일한 방법은 서버를 추가하는 것입니다. 서버 { server_name : subdomain1.domain.com; 듣기 : 80; 위치/{ proxy_pass http : //subdomain1.localhost : 9000; } } 각 하위 도메인에 대해 ? – Dafuck

+0

또는 자체 로컬 DNS 서버를 구성하십시오. – VBart

관련 문제