2017-05-16 119 views
0

我需要匹配/admin/foo以及/admin/foo/path(和admin/foo/p1/p2等),我需要使用變量而不是直接使用proxy_pass,以避免nginx崩潰,如果上游服務器不可用。我有: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; 
} 

我已經嘗試了一些辦法,包括具有用於/admin/foo單獨的位置(無正則表達式),但沒有什麼工作。

回答

0

我測試過這個配置,它工作。
/admin/foo//some/location/admin/foo/都是proxy_pass到http://admin-console/

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

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

謝謝 - 但我需要使用$目標變量和解析器,如問題中所述。否則,如果管理控制檯在nginx啓動時關閉,nginx會崩潰。另外,我需要/ admin/foo(沒有斜槓)和/ admin/foo/path來工作(不是/ some/location/admin/foo)。 –