2017-05-26 4 views
2

ich zur Zeit die folgenden Stelle Richtlinie zusammen mit den try_files für eine restfull-Anwendung:Nginx Standort Richtlinie mit regulärem Ausdruck Ordnernamen zu extrahieren und in try_files mit

location /branches/branchx/app/api/ { 
    try_files $uri $uri/ /branches/branchx/app/api/api.php$is_args$args; 
} 

Wo branchx der Name meiner Git ist Ast. Ich kann deshalb mehrere Zweige wie haben: branch1, branch2, etc ..

Und daher muss ich manuell eine Direktive für jeden Zweig erstellen, den ich erstellen werde.

Um dieses Problem zu vermeiden, suche ich nach Verwenden Sie einen regulären Ausdruck, um den Zweignamen zu extrahieren und es in meiner Try_files-Direktive zu verwenden. Ich hätte also ein dynamisches System, das von einer einzigen Standort-Direktive verwaltet wird, die sich um alle Zweige kümmert.

Alle Versuche, eine Regex bisher in den try_files zu verwenden, enden mit einem 405 oder 404 Fehler.

Mein letzter Versuch (basierend auf @ Richard Smith Antwort):

location ~ ^(/branches/[^/]+/app/api)/ { 
    try_files $uri $uri/ $1/api.php$is_args$args; 
} 

, die für passende uri eine 405 (nicht erlaubt) Antwort zurückgegeben.

Antwort

1

Wenn Sie einen regulären Ausdruck location verwenden, können Sie den Pfad zur gleichen Zeit erfassen. Zum Beispiel:

location ~ ^(/branches/[^/]+/app/api)/ { 
    try_files $uri $uri/ $1/api.php$is_args$args; 
} 

Wichtiger Hinweis: Wechsel von einem Präfix location zu einem regulären Ausdruck location die Auswertungsreihenfolge ändern. Regulärer Ausdruck location Blöcke werden der Reihe nach ausgewertet, so dass /branches/branchx/app/api/api.php diesem location Block entspricht, es sei denn, wird nach dem location ~ \.php$ Standortblock platziert. Details siehe this document.

+0

Es scheint nicht für mich zu arbeiten. Da ich noch einen Unterordner habe, den ich nicht in das Beispiel zur Vereinfachung gestellt habe: '/ branches1/app/api /' Ich habe dein Beispiel mit '~^(/ branches/[^ /] +/app/api)/'und die try_files mit' $ 1/app/api.php'. Irgendwelche Vorschläge? –

+0

Es gibt eine Reihe von Optionen, aber ohne das Problem zu sehen, ist es schwierig, konkrete Vorschläge zu machen. Sie sollten überlegen, Ihre Frage zu bearbeiten und Ihr Beispiel zu verbessern. –

+0

Das ist getan Ich habe die Frage geklärt. Bezüglich des Standorts habe ich gerade den 'app'-Unterordner hinzugefügt. –

Verwandte Themen