2016-06-27 9 views
0

Ich habe einige Software mit Microservice-Philosophie gebaut. Einer von ihnen - die auf example.com/ gehostet wurde nutzlos, so möchte ich den Benutzer umgeleitet werden zu example.com/dir/, wo ein anderer Dienst gehostet wird. Die beliebteste Lösung auf StackOverflow ist den folgenden Code in der Konfigurationsdatei zu verwenden:Permanente Weiterleitung von example.com/ nach https://www.example.com/dir/

location =/{ 
    return 301 $scheme://$http_host/dir/; 
} 

oder

location =/{ 
    return 301 https://$http_host/dir/; 
} 

Beide scheitern auf meinem Server - der Server gibt 503 - to many computations. Der Stacktrace zeigt, dass es keine Regel-Endlos-Regel gibt, daher könnte dieser Code von load-balancer zurückgegeben werden.

Gibt es eine andere gut funktionierende Lösung für dieses Problem? StackOverflow und ServerFault wurden gerade für die letzten 3 Tage von mir sorgfältig gesucht und jede Lösung funktionierte.

Antwort

0

Nachdem mit meinen Kollegen forschen zusammen es aufgetreten ist, dass nicht nur return 301 url; succesfuly Benutzer umleitet. Obwohl die Dokumentation zu vermeiden, sagt mit rewrite was gearbeitet hat, ist:

server { 
    ... 
    rewrite ^/$ https://$http_host/dir/ permantent; 
    ... 
} 

Die permantent Erklärung für die als eine regelmäßige Umleitung zuständig ist.

Wichtig: In nginx ^ ist der Anfang eines regulären Ausdrucks und der incomming String und $ Zeichen ist ein normales regex Zeichen, das für theEndOfString steht. Also Regex ^/$ bedeutet Übereinstimmung URL entspricht /.

Credits:

Hoffentlich wird dies ein Wochenende Zeit und Geld sparen.

-2

Das Zeichen = ist ungültig.

location/{ 
    return 301 https://$http_host/dir/; 
} 

Aber das wird in einer Umleitung Schleife beenden, so genauer sein:

location ~ ^[/]?$ { 
    return 301 https://$http_host/dir/; 
} 
+0

Es ist nicht - das '=' Zeichen bedeutet, dass die Übereinstimmung genau sein muss. Google-Dokumentation – xenteros

+0

Ich stehe korrigiert. –

+0

Nein. Deine Regex würde/dir/auch entsprechen. Jede URL würde umgeleitet werden. Ihre Antwort wird von einem anderen ähnlichen Thema kopiert. – xenteros