2017-05-16 2 views
0

/admin/foo/path (및 admin/foo/p1/p2 등)은 물론 /admin/foo과 일치해야하며 업스트림 서버를 사용할 수없는 경우 nginx 충돌을 피하기 위해 직접 proxy_pass를 사용하는 대신 변수를 사용해야합니다. 나는 (정규식 제외) /admin/foo에 대해 별도의 위치를 ​​가진를 포함하여 몇 가지 방법을 시도했습니다nginx 위치 경로 일치 문제

location ~ /admin/foo/(.*) { 
    auth_basic   "Admin console"; 
    auth_basic_user_file /etc/nginx/.htpasswd; 
    resolver 127.0.0.11 valid=0s; 
    set $target http://admin-console:80/$1; 
    proxy_pass $target; 
} 

,하지만 아무것도 작동하지 않습니다 : 내가있다.

답변

0

이 구성을 테스트 한 결과 작동했습니다.
/admin/foo//some/location/admin/foo/은 모두 http://admin-console/의 proxy_pass입니다.

upstream admin-console { 
    server admin-console:80; 
} 

server { 
    location ~ /admin/foo/(.*) { 
     proxy_redirect  off; 
     proxy_pass   http://admin-console/$1; 
    } 
} 
+0

감사합니다.하지만 질문에 언급 된대로 $ target 변수와 리졸버를 사용해야합니다. 그렇지 않으면 nginx가 시작될 때 admin-console이 다운되면 nginx가 중단됩니다. 또한/admin/foo (슬래시 없음) 및/admin/foo/경로 (/ some/location/admin/foo 아님)가 필요합니다. –