eine sehr häufige try_files Linie, die auf Ihrem Zustand
ist angewendet werden kann
location/{
try_files $uri $uri/ /test/index.html;
}
Sie wahrscheinlich verstehen, der erste Teil, location /
Streichhölzer alle Standorte, es sei denn, es wird durch einen spezifischen Ort, wie location /test
zum Beispiel
Der zweite Teil (die try_files
) bedeutet, wenn Sie einen URI erhalten, der mit diesem Block übereinstimmt, versuchen Sie $uri
zuerst, zum Beispiel http://example.com/images/image.jpg
nginx wird versuchen, zu überprüfen, ob es eine Datei innerhalb /images
namens image.jpg
, wenn gefunden, wird es zuerst dienen.
Zweite Bedingung ist $uri/
was bedeutet, wenn Sie nicht die erste Bedingung $uri
versuchen gefunden, überprüfen Sie die URI als ein Verzeichnis, zum Beispiel http://example.com/images/
, ngixn wird zuerst, wenn eine Datei mit dem Namen images
existiert dann pflegt sie es finden, dann geht zweite Überprüfung $uri/
und sehen, ob es ein Verzeichnis namens images
existiert dann wird es versuchen, es zu dienen.
Exkurs: Wenn Sie nicht über autoindex on
Sie werden wahrscheinlich einen 403 verboten Fehler erhalten, weil Verzeichnisliste standardmäßig verboten ist.
EDIT: Ich habe vergessen zu erwähnen, dass, wenn Sie index
definiert haben, nginx werden versuchen, zu überprüfen, ob der Index in diesem Ordner, bevor existiert Verzeichnisliste zu versuchen.
Dritte Bedingung /test/index.html
wird eine Fallback-Option in Betracht gezogen, (Sie müssen mindestens 2 Optionen verwenden, ein und einen Sturz zurück), können Sie so viel verwenden, wie Sie können (nie vor einer Verengung lesen) sucht nginx im Ordner test
nach der Datei index.html
und bedient sie, falls sie existiert.
Wenn die dritte Bedingung auch fehlschlägt, wird nginx die 404-Fehlerseite bedienen.
Auch gibt es etwas namens Orte genannt, wie diese
location @error {
}
Sie es mit try_files
wie diese
try_files $uri $uri/ @error;
TIP anrufen: Wenn Sie nur 1 Bedingung, die Sie dienen wollen, müssen, wie zum Beispiel im Ordner images
möchten Sie nur entweder das Bild liefern oder 404 Fehler gehen, können Sie eine Zeile wie diese
012 schreiben
location /images {
try_files $uri =404;
}
was bedeutet, dass entweder die Datei dienen oder einen 404-Fehler dienen, nicht nur $uri
, indem sie es selbst ohne =404
, weil Sie eine Ersatzoption haben müssen verwenden können.
Sie können auch wählen, welche jemals Fehlercode Sie, wie zum Beispiel wollen:
location /images {
try_files $uri =403;
}
Diesen einen verbotenen Fehler zeigen, wenn das Bild nicht vorhanden ist, oder wenn Sie 500 verwenden wird es Server-Fehler zeigen, usw. ..
was meintest du mit dem schleppenden '/' in der 'try_files' Zeile? –
Das bedeutet, die Fallback-Option ist ein "/". Der Charakter direkt vor dem ";" in dieser Zeile. – Jonah
Nun, es muss eine Datei sein, keine URI, also benutze $ uri/oder benutze /index.html –