Zunächst möchte ich feststellen, dass ich relativ neu zu nginx bin, ich weiß im Grunde nur, was ich in der letzten Woche gelernt habe.Nginx dynamische Standortpfadkonfiguration
Das heißt, ich habe derzeit ein Nginx-Server mit einer Standardkonfiguration:
server {
listen 80;
server_name site.com;
root /var/www/site.com/;
index index.php;
location/{
try_files $uri $uri/ /index.php;
}
location /microsite/first {
try_files $uri $uri/ /microsite/first/;
}
location /microsite/second {
try_files $uri $uri/ /microsite/second/;
}
...
}
Dies funktioniert gut, obwohl für jeden Micro ich zu den bestehenden hinzufügen, erfordert es, dass ein neuer Standort sein hinzugefügt unter Bezugnahme auf den Pfad der neuen Microsite.
Meine Frage ist: ist es möglich, die location
Parameter in einer Art und Weise dynamisch eingestellt werden, dass es fängt und Referenzen, was Unterverzeichnis innerhalb des Verzeichnisses Micro/ existiert?
z.B. etwas entlang der Linie der Rewrite-Regel rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last;
(von der nginx Website genommen), aber die auf die location
Parameter, wie:
location ~ ^/microsite/(.*)$ {
try_files $uri $uri/ /microsite/$1/;
}
In dem die $1
die Unterverzeichnisnamen in (.*)
weitergegeben fangen würde? (Ich habe versucht, diese Schnipsel, die ich (ein weiteres auf die Antwort gebaut beziehe) Nginx dynamic location configuration Frage, obwohl es nicht funktioniert) Ich bin kein Experte Regex
Auch ich es ein bisschen gezwickt haben in die Vergangenheit, aber es war vor einer Weile und ich erinnere mich nicht an die genaue Terminologie, so dass das vielleicht ein Teil des Problems sein könnte ?!
Wie auch immer, alle Hilfe wird geschätzt.
Vielen Dank im Voraus!
Vielen Dank für Ihren Vorschlag, aber es hat nicht funktioniert. Ich habe versucht den 'location' Block genau wie du es geschrieben hast, aber beim Versuch, auf die Seite zuzugreifen, öffnet er einfach das 'save file'-Fenster (das Herunterladen der * index.php * Datei, die wir natürlich nicht wollen). – mformigo
Es muss nach Ihrem 'location ~ \ .php $' Block platziert werden. In [dieses Dokument] (http://nginx.org/en/docs/http/request_processing.html) finden Sie Informationen dazu, wie 'nginx' eine Anfrage verarbeitet. Vielleicht möchten Sie das letzte Element explizit mit 'index.php' verknüpfen, indem Sie' $ 1/index.php' verwenden. –
Hey Richard, Entschuldigung für die Abwesenheit, aber ich habe mich in ein anderes Projekt verwickelt und bin gerade auf dieses Problem zurückgekommen.und ich möchte Ihnen nur für Ihre ausgezeichnete Hilfe danken =) Ihr Vorschlag hat den Trick gemacht. obwohl für das, was ich aus der _nginx_ Dokumentation in Bezug auf "Standort" Blöcke priorisierung verstanden habe, obwohl der Pfad desto präziser als der "Standort" konfiguriert war, desto höher ist seine Priorität als Server-Regel !! obwohl dieser Block hat den '~' Charakter vor, so .. wie auch immer, ich habe es nach dem 'location ~ \ .php $' Block, wie Sie erwähnt, und es hat gut funktioniert, also danke nochmal = D Prost !! – mformigo