2017-05-16 5 views
0

Ich muss sowie /admin/foo/path (und admin/foo/p1/p2 usw.) entsprechen, und ich muss eine Variable verwenden, anstatt Proxy_Pass direkt zu verwenden, um Nginx Absturz zu vermeiden, wenn der Upstream-Server nicht verfügbar ist. Ich habe:Nginx Standort Pfad passendes Problem

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; 
} 

ich ein paar Möglichkeiten versucht haben, auch für /admin/foo einen separaten Ort mit (ohne reguläre Ausdrücke), aber nichts funktioniert.

Antwort

0

Ich habe diese Konfiguration getestet, es hat funktioniert.
Sowohl /admin/foo/ als auch /some/location/admin/foo/ sind proxy_pass zu http://admin-console/.

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

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

Danke - aber ich muss die $ Zielvariable und Resolver verwenden, wie in der Frage erwähnt. Andernfalls, wenn die Admin-Konsole beim Start von nginx ausfällt, stürzt nginx ab. Außerdem brauche ich/admin/foo (kein Schrägstrich) und/admin/foo/Pfad um zu arbeiten (nicht/einige/location/admin/foo). –