Wie Nginx Regexp in der Lage
Web-Projekt haben statische Inhalte in das some /content/img Ordner.
Die url-Regel ist: /img/{md5}
aber die Lage in den Ordner: /content/img/{Die ersten beiden Ziffern}/
Beispiel
url: example.com/img/fe5afe0482195afff9390692a6cc23e1
location: /www/myproject/content/img/fe/fe5afe0482195afff9390692a6cc23e1
Dieser nginx location ist richtig, aber viele nicht die Sicherheit (das symbol Punkt ist nicht gut in regexp):
location ~ /img/(..)(.+)$ {
alias $project_home/content/img/$1/$1$2;
add_header Content-Type image/jpg;
}
Der nächste Ort ist mehr richtig, aber nicht arbeiten:
location ~ /img/([0-9a-f]\{2\})([0-9a-f]+)$ {
alias $project_home/content/img/$1/$1$2;
add_header Content-Type image/jpg;
}
Mir helfen, Fehler für mehr korrigieren nginx Lage.
Versuchen
/img/([0-9a-fA-F]{2})([0-9a-fA-F]+)$
(siehe demo).InformationsquelleAutor Alexandre Kalendarev | 2016-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Flucht vor den geschweiften Klammern in der Begrenzung der Quantoren notwendig ist in POSIX BRE-Muster und NGINX nicht verwenden, die regex Geschmack. Hier sollten Sie sich nicht entgehen die Begrenzung der Quantifizierer Klammern, aber Sie müssen sagen, NGINX, dass die Klammern als ein Teil der regex-Muster-string.
So, müssen Sie zu umschließen, das ganze Muster, die mit doppelten Anführungszeichen:
Verwenden
Hier ist ein regex-demo.
Beachten Sie, dass in der aktuellen Szenario, können Sie einfach wiederholen Sie die Teilmuster:
Können wir nicht handeln Hüte 😛 Wie geben Sie es als bounty 😀
HTTP/1.1 502 Bad Gateway
location ~ /img/([0-9a-fA-F]\{2\})([0-9a-fA-F]+)$ { echo $1; echo $2; }
Also, Sie wollen sagen, dass Sie nicht die Begrenzung der Quantifizierer in Ihrer Umgebung funktionieren? Dann, vielleicht, alles, was Sie tun können, ist, wiederholen Sie das Muster:
/img/([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F]+)$
InformationsquelleAutor Wiktor Stribiżew
Ich habe es funktioniert putting doppelte Anführungszeichen um den Speicherort Teil wie dieses:
den Grund, dass Nginx verwendet geschweifte Klammern zu definieren config-Blöcke, so dass es denkt, ist die Eröffnung einer Position blockieren.
Quelle
InformationsquelleAutor Ricardo