2012-09-17 2 views
2

나는 내부 애플리케이션 서버 (장고 +의 gunicorn) 개인 포트에 Nginx에 리버스 프록시 뒤에 실행 (예를 들어, 포트 5000에서 수신 대기합니다.)이Nginx의 내부 앱 서버 URL에 프록시 도메인 이름을 프록시하는 방법은 무엇입니까?

여러 장고에 매핑, 응용 프로그램 서버에 설치되어있는 프로그램이

별도의 기본 경로. 예 : domain1.com/app2domain2.com 콘텐츠를 제공하기위한 /app1 콘텐츠를 제공

/app1 
/app2 

.

나는 내부 응용 프로그램 서버로 전달 경로를 유지하면서 자동으로, 관련 백엔드 응용 프로그램에 특정 호스트에 대한 프록시 들어오는 요청을 반대하고 싶습니다

:

http://domain1.com/foo --> /app1/foo 
http://domain1.com/bar/bletch --> /app1/bar/bletch 

http://domain2.com/alpha/bravo --> /app2/alpha/bravo 

내가 가정을 당신은 내가 노력하고있어 말할 수 간단한 '가상 호스팅'구성을 설정했지만 공유 백엔드 어플리케이션 서버 인스턴스를 사용하고 싶습니다.

요점 : 방문자의 브라우저가 리디렉션 된 URL 구조를 보지 못하도록하고 싶습니다. 따라서 클라이언트 브라우저가 http://domain1.com/foo에 도달하면 올바른 콘텐츠가 제공되지만 브라우저는 리디렉션을 볼 수 없습니다.

저는 Nginx (아직 배우기)에 대한 기본적인 작업을 수행했으며,이 목표를 달성하기위한 안전하고 효율적인 방법을 보여주는 Nginx 구성의 예를 찾고 있습니다.

답변

1

this answer에 따르면 여기에 원하는대로 작동하는 구성이 있습니다. app1를 들어

http://localhost:8000/app1_path에서 실행중인 각 hostname-> 응용 프로그램/경로 쌍에 대해 원하는대로

upstream app1 { 
    server 127.0.0.1:8000 fail_timeout=0; 
} 
server { 
    listen 80; 
    server_name example.com 
    access_log /var/log/nginx/example.com.access.log; 
    error_log /var/log/nginx/example.com.error.log; 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header Host $http_host; 
     rewrite ^(.*)$ /app1_path$1 break; 
     proxy_pass http://app1; 
    } 
} 

그래서, 하나는이 패턴을 여러 번 반복 할 수있다.