2014-10-30 7 views
0

host1 : 7000 및 host2 : 7000에서 실행중인 두 개의 앱이 있습니다. 나는 mydomain.com/admin이 host1 : 7000/portal 및 mydomain.com/user to host2 : 7000/portal을 가리 키도록 nginx 역방향 프록시에 의해 두 호스트를 마주하고 있습니다.리디렉션을위한 nginx 다시 쓰기 규칙

내가이 host1로 리디렉션 mydomain.com/admin 얻을 수있는 다음과 같은 설정

listen  80; 
server_name mydomain.com *.mydomain.com; 

location ~ ^/admin/(.*)$ { 
    proxy_pass $scheme://<IP-ADDRESS>/$1; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-NginX-Proxy true; 
} 

작성했습니다 : 7000/포털하지만이 앱을 host1의에서 리디렉션하는 경우 : 7000/host1의에에 포털 : 상대 경로를 통한 7000/로그인, 브라우저에서 mydomain.com/login을 참조하십시오. mydomain/admin/login으로 두 번째 리디렉션을하려면 어떻게해야합니까?

답변

0

왜 사람들은 아무 이유없이 regexps '에 사용하고 그것으로 문제의 모든 종류가 있습니까? ...

location /admin/ { 
    proxy_pass http://host1:7000/; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-NginX-Proxy true; 
} 

이 자동으로 프록시 요청에서 /admin/를 제거하고 (재 지정에 사용되는) Location 헤더를 앞에 추가합니다 .

proxy_passproxy_redirect 문서를 참조하십시오.

+0

감사합니다. Alexey. JS 코드가 웹 루트의 두 포털에 대한 정적 자산을 참조하므로 리디렉션을 통해이 작업을 수행 할 수 없다는 것도 알아 냈습니다. URI에 접두사를 추가하는 앱이 필요합니다. – test123