Die Konfigurationssyntax von Nginx ist flexibel und hochgradig kontrollierbar. Ab Version 0.7 wurde eine try_files-Direktive hinzugefügt. Zusammen mit dem benannten Speicherort kann sie die häufig verwendete Methode zum Umschreiben der Konfiguration teilweise ersetzen und die Analyseeffizienz verbessern. Beschreibung der try_files-Direktive Die Syntax der try_files-Direktive lautet: try_files Datei ... URI oder try_files Datei ... = Code Seine Funktion besteht darin, zu prüfen, ob die Dateien in der richtigen Reihenfolge vorhanden sind und die erste gefundene Datei oder den ersten gefundenen Ordner zurückzugeben (ein Schrägstrich am Ende zeigt einen Ordner an). Wenn nicht alle Dateien oder Ordner gefunden werden können, wird eine interne Umleitung zum letzten Parameter durchgeführt. Beachten Sie, dass nur der letzte Parameter eine interne Umleitung bewirken kann; die vorherigen Parameter legen lediglich die interne URI fest. Der letzte Parameter ist die Fallback-URI und muss vorhanden sein, da sonst ein interner 500-Fehler auftritt. Benannte Standorte können auch als letztes Argument verwendet werden. Im Gegensatz zur Rewrite-Direktive wird $args nicht automatisch beibehalten, wenn die Fallback-URI kein benannter Ort ist. Wenn Sie $args beibehalten möchten, müssen Sie dies explizit angeben. Versuchen Sie_Dateien $uri $uri/ /index.php?q=$uri&$args; Beispielanalyse Beispiel 1 try_files probiert die von Ihnen aufgelisteten Dateien aus und setzt die internen Dateizeiger. Zum Beispiel: Versuchen Sie, Dateien /app/cache/ $uri @fallback zu verwenden. Index: Index.php; Index.html; Es wird erkannt, ob $document_root/app/cache/index.php, $document_root/app/cache/index.html und $document_root$uri vorhanden sind. Wenn sie nicht vorhanden sind, wird intern auf @fallback umgeleitet (@ steht für einen vordefinierten Markup-Punkt in der Konfigurationsdatei). Sie können als letzten Parameter auch eine Datei oder einen Statuscode (=404) verwenden. Wenn der letzte Parameter eine Datei ist, muss die Datei vorhanden sein. Beispiel 2 Beispielsweise analysiert nginx keine PHP-Dateien und gibt Textcodes zurück try_files $uri /cache.php @fallback; Denn diese Anweisung legt die interne Datei so fest, dass sie auf $document_root/cache.php verweist und gibt sie zurück, es erfolgt jedoch keine interne Umleitung. Daher wird das Standortsegment nicht verarbeitet und der Text zurückgegeben. (Wenn Sie die Indexdirektive hinzufügen, kann PHP analysiert werden, da der Index eine interne Weiterleitung auslöst.) Beispiel 3 Zur Variable springen Server { hör zu 8000; Servername 192.168.119.100; Stamm-HTML; Index Index.html Index.php; Standort /abc { try_files /4.html /5.html @qwe; #Überprüfen Sie die Dateien 4.html und 5.html. Wenn sie vorhanden sind, werden sie normal angezeigt. Wenn nicht, suchen Sie nach dem @qwe-Wert} Standort @qwe umschreiben ^/(.*)$ http://www.baidu.com; #zur Baidu-Seite springen} Beispiel 4 Zur angegebenen Datei springen Server { hör zu 8000; Servername 192.168.119.100; Stamm-HTML; Index: Index.php; Index.html; Standort /abc { versuche_Dateien /4.html /5.html /6.html; } Beispiel 5 Leiten Sie die Anfrage an das Backend weiter vorgelagerter Tornado { Server 127.0.0.1:8001; } Server { Servername imike.me; Rückgabe 301 $scheme://www.imike.me$request_uri; } Server { hören Sie 80; Servername www.imike.me; Wurzel /var/www/www.imike.me/V0.3/www; Index Index.html Index.htm; versuche_dateien $uri @tornado; Standort @Tornado { Proxy_Pass_Header-Server; Proxy_set_header Host $http_host; Proxy_Set_Header X-Real-IP $Remote_Addr; proxy_set_header X-Schema $scheme; Proxy-Passwort http://tornado; } } Häufige Fehler Häufiger Fehler 1 try_files prüft der Reihe nach, ob die Dateien vorhanden sind und gibt die erste gefundene Datei zurück. Es sind mindestens zwei Parameter erforderlich, aber der letzte ist eine interne Umleitung, was bedeutet, dass er dieselbe Wirkung wie rewrite hat. Der vorherige Wert ist der Dateipfad relativ zu $document_root. Dies bedeutet, dass die Parameter unterschiedliche Bedeutungen haben und Sie sogar einen Statuscode (404) als letzten Parameter verwenden können. Wenn Sie nicht aufpassen, entsteht eine Endlosschleife, die einen 500-Fehler verursacht. Standort ~.*\.(gif|jpg|jpeg|png)$ { Stammverzeichnis /web/wwwroot; versuche_dateien /static/$uri $uri; } Die ursprüngliche Absicht besteht darin, beim Zugriff auf upload/2022/web/test.jpg zu prüfen, ob /web/wwwroot/static/test.jpg vorhanden ist. Wenn es nicht vorhanden ist, greifen Sie auf /web/wwwroot/test.jpg zu. Da der letzte Parameter jedoch eine interne Weiterleitung ist, wird nicht geprüft, ob /web/wwwroot/test.jpg vorhanden ist. Solange der erste Pfad nicht vorhanden ist, wird dieser Speicherort erneut aufgerufen und eine Endlosschleife verursacht. Das Ergebnis ist 500 Internal Server Error Standort ~.*\.(gif|jpg|jpeg|png)$ { Stammverzeichnis /web/wwwroot; versuche_dateien /static/$uri $uri 404; } Auf diese Weise wird zunächst geprüft, ob /web/wwwroot/static/test.jpg vorhanden ist. Wenn dies nicht der Fall ist, wird /web/wwwroot/test.jpg abgerufen. Wenn dies nicht der Fall ist, wird die Fehlermeldung „404 nicht gefunden“ zurückgegeben. Häufiger Fehler 2 Lösung für leere Nginx try_files $query_string Server { hören Sie 80; Servername localhost.dev; index.php index.html index.htm; Setzen Sie $root_path '/var/www/phalcon/public'; Wurzel $root_Pfad; Standort / { Versuchen Sie, Dateien $uri $uri/ /index.php zu versuchen. } Standort ~ \.php$ { versuche_dateien $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_params einschließen; } Standort ~* ^/(css|img|js|flv|swf|download)/(.+)$ { Wurzel $root_Pfad; } Standort ~ /\.ht { alles leugnen; } } Es wurde festgestellt, dass PHP keine $_GET-Informationen abrufen kann. versuche_dateien $uri $uri/ /index.php; Wechseln zu Versuchen Sie_Dateien $uri $uri/ /index.php?$query_string; Das Problem kann gelöst werden. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Lösung für das Datenasymmetrieproblem zwischen MySQL und Elasticsearch
>>: So verwenden Sie CocosCreator zum Erstellen eines Schießspiels
Inhaltsverzeichnis 1. Was ist virtueller Dom? 2. ...
Vorwort Ich glaube, dass jeder beim Erlernen von ...
Anti-Shake: Verhindert, dass wiederholte Klicks E...
Wenn Sie unter Linux eine Anwendung herunterladen...
Inhaltsverzeichnis Optimierung des Vite-Projektau...
Inhaltsverzeichnis 1. Seitenlayout 2. Bild-Upload...
Detaillierte Erklärung des Docker-Tags Die Verwen...
Count(*) oder Count(1) oder Count([column]) sind ...
In diesem Artikel wird der spezifische Code von j...
In diesem Artikelbeispiel wird der spezifische JS...
Inhaltsverzeichnis 1. Finde den Spiegel 2. Laden ...
Inhaltsverzeichnis 1. Einleitung 2. Konfiguration...
Inhaltsverzeichnis Zusammenfassen <Vorlage>...
Inhaltsverzeichnis Status Quo Lösung Weitere Lösu...
Ich möchte Ihnen von einem aktuellen Fall erzähle...