2017-05-16 284 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)。 –