Die Rewrite-Funktion von Nginx unterstützt regelmäßiges Matching-Rewriting, das die URL-Adresse vorübergehend oder dauerhaft an einen neuen Ort umleitet, ähnlich einer Umleitung. Diese Funktion ist nützlich, wenn größere Änderungen an der Website-Struktur vorgenommen werden. Beispielsweise wurden die MP3-Ressourcen der Website bisher über die URL www.site1.org/mp3 aufgerufen, jetzt wurde das MP3-Verzeichnis auf dem Server jedoch durch das Musikverzeichnis ersetzt. In diesem Fall lässt sich die Rewrite-Funktion problemlos implementieren. Zweitens können Sie die Anpassung von site1.org an www.site1.org erzwingen und umgekehrt. Diese Anweisung befindet sich im Modul ngx_http_rewrite_module. Dieser Artikel beschreibt hauptsächlich die Verwendung dieser Anweisung und gibt eine Demonstration. 1. Beschreibung der Befehlssyntax neu schreiben Syntax: Regex-Ersetzung neu schreiben [Flag]; Wenn der angegebene reguläre Ausdruck mit der Anforderungs-URI übereinstimmt, wird die URI wie in der Ersetzungszeichenfolge angegeben geändert. Mit dem Flag wird gesteuert, ob nach dem Abgleich mit der entsprechenden Umschreibregel weiterhin nachfolgende Umschreibregeln überprüft werden sollen. Der optionale Flag-Parameter kann einer der folgenden sein: zuletzt brechen umleiten dauerhaft Hinweis: Im Allgemeinen wird das Break-Flag verwendet, wenn „rewrite“ an einer bestimmten Stelle oder „rewrite“ im „if“-Kontext geschrieben wird. Weitere Anweisungen rewrite_log ein|aus Rückgabecode: 2. Demonstration der Umschreibfunktion basierend auf dem Standortkontext Lokale Umgebung# mehr /etc/redhat-release CentOS Linux Version 7.2.1511 (Core) # nginx -v Nginx-Version: nginx/1.12.2 Konfigurieren Sie nginx # vim /etc/nginx/conf.d/rewrite.conf Server { hören Sie 80; Servername site1.orag www.site1.org; Standort / { Stamm /www/site1.org; Index Index.html Index.htm; } } # mkdir -pv /www/site1.org/images # echo "Dies ist eine Testseite zum Umschreiben." >/www/site1.org/index.html # cp /usr/share/backgrounds/gnome/*.jpg /www/site1.org/images/ # vim /etc/hosts 192.168.1.175 site1.org 192.168.1.175 www.site1.org # curl http://www.site1.org Dies ist eine Testseite zum Umschreiben. # curl -Ich lade/2022/web/Waves hoch. HTTP/1.1 200 OK Server: nginx/1.12.2 Datum: Mi., 01. Nov. 2017 03:47:58 GMT Inhaltstyp: image/jpeg Inhaltslänge: 458818 Letzte Änderung: Mittwoch, 01. November 2017, 03:43:48 GMT Verbindung: Keep-Alive ETag: "59f942f4-70042" Akzeptierte Bereiche: Bytes Ändern Sie die Datei rewrite.conf und fügen Sie die Rewrite-Direktive location / { hinzu. Stamm /www/site1.org; Index Index.html Index.htm; schreibe ^/images/(.*)$ /imgs/$1 zuletzt um; } # systemctl nginx neu laden # curl -Ich lade/2022/web/Waves hoch. HTTP/1.1 404 Nicht gefunden Server: nginx/1.12.2 Datum: Mi., 01. Nov. 2017 04:02:38 GMT Inhaltstyp: text/html Inhaltslänge: 169 Verbindung: Keep-Alive # mkdir -pv /www/site1.org/imgs # mv /www/site1.org/images/Waves.jpg /www/site1.org/imgs/. # curl -Ich lade/2022/web/Waves hoch. HTTP/1.1 200 OK Server: nginx/1.12.2 Datum: Mi., 01. Nov. 2017 04:05:07 GMT Inhaltstyp: image/jpeg Inhaltslänge: 458818 Letzte Änderung: Mittwoch, 01. November 2017, 03:43:48 GMT Verbindung: Keep-Alive ETag: "59f942f4-70042" Akzeptierte Bereiche: Bytes # curl -I upload/2022/web/Waves. ##Diese Methode kann auf HTTP/1.1 200 OK zugreifen Server: nginx/1.12.2 Datum: Mi., 01. Nov. 2017 04:06:17 GMT Inhaltstyp: image/jpeg Inhaltslänge: 458818 Letzte Änderung: Mittwoch, 01. November 2017, 03:43:48 GMT Verbindung: Keep-Alive ETag: "59f942f4-70042" Akzeptierte Bereiche: Bytes Um den durch Rewrite verursachten HTTP 500-Fehler zu simulieren, ändern Sie die Datei rewrite.conf wie folgt: Standort / { Stamm /www/site1.org; Index Index.html Index.htm; schreibe ^/images/(.*)$ /imgs/$1 zuletzt um; schreibe ^/imgs/(.*)$ /images/$1 um; } # systemctl nginx neu starten # curl -Ich lade/2022/web/Waves hoch. HTTP/1.1 500 Interner Serverfehler Server: nginx/1.12.2 Datum: Mi., 01. Nov. 2017 05:23:16 GMT Inhaltstyp: text/html Inhaltslänge: 193 Verbindung: schließen # curl -Ich lade/2022/web/Waves hoch. HTTP/1.1 500 Interner Serverfehler Server: nginx/1.12.2 Datum: Mi., 01. Nov. 2017 05:23:28 GMT Inhaltstyp: text/html Inhaltslänge: 193 Verbindung: schließen Der obige Test zeigt, dass ein 500-Fehler durch eine Endlosschleife verursacht wird. Von Nginx bereitgestellte Referenzbeispiele: Server { ... ##Die Rewrite-Direktive befindet sich im Serverkontext. Rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last; ##Leiten Sie alle Dateianforderungen im /download-Verzeichnis, das das Medienverzeichnis enthält, nach donwload/any/mp3/any.mp3 um schreibe ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra zuletzt neu; ##Leiten Sie alle Dateianforderungen im /download-Verzeichnis, das das Audioverzeichnis enthält, nach donwload/any/mp3/any.mp3 um Rückgabe 403; ... } Standort /download/ { ##Die Rewrite-Direktive befindet sich im Standortkontext. Rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 break; ##Das letzte Flag sollte durch „break“ ersetzt werden, sonst gibt Nginx 10 Zyklen lang 500 Fehler zurück. Rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra break; Rückgabe 403; } 3. Demonstration der Umschreibfunktion basierend auf der if-Bedingung # vi /etc/nginx/conf.d/rewrite.conf Server { hören Sie 80; Servername site1.orag www.site1.org; wenn ($host != 'www.site1.org' ) { umschreiben ^/(.*)$ http://www.site1.org/$1 permanent; } Standort / { ##Autor: Leshami root /www/site1.org; ##Blog : http://blog.csdn.net/leshami Index Index.html Index.htm; schreibe ^/images/(.*)$ /imgs/$1 zuletzt um; schreibe ^/imgs/(.*)$ /images/$1 um; } } # systemctl nginx.service neu laden Lokaler Test (lokale Hostdatei ändern) # curl http://site1.org <html> ##Statuscode 301 zurückgeben <head><title>301 Permanent verschoben</title></head> <body bgcolor="weiß"> <center><h1>301 dauerhaft verschoben</h1></center> <hr><center>nginx/1.12.2</center> </body> </html> Testen Sie die Windows-Umgebung. Fügen Sie nach dem Ändern der Hostdatei des Windows-Computers den folgenden Eintrag hinzu: 192.168.1.175 centos7-router.com 192.168.1.175 www.centos7-router.com Öffnen Sie den Browser und rufen Sie http://site1.org über den Domänennamen auf. Es wird automatisch zu http://www.site1.org gesprungen (Demonstration ausgelassen). 4. http in https umschreiben Wenn die gesamte Site nicht https ist, müssen einige vertrauliche Daten über https übertragen werden, was auch durch Umschreiben erreicht werden kann Im folgenden Beispiel kann das Verzeichnis https://www.site1.org/user, vorausgesetzt, dass es vertrauliche Informationen enthält, wie folgt umgeschrieben werden Standort ^~ /Benutzer { umschreiben ^/ https://www.site1.org$request_uri?permanent; } Die gesamte Site ist https Server { hören Sie 80; Servername site1.orag www.site1.org; Zugriffsprotokoll /var/log/nginx/http-access.log; Fehlerprotokoll /var/log/nginx/http-error.log; umschreiben ^/ https://www.site1.org$request_uri; } Die obige Demonstration ist kurz 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:
|
>>: Implementierung des React-Konfigurations-Subroutings
Wenn wir das Dialogfeld „Ordnereigenschaften“ in W...
Meta-Tag-Funktion Der META-Tag ist ein Schlüsselt...
Manchmal möchten wir nicht, dass der Inhalt unser...
usemap ist ein Attribut des <img>-Tags, das ...
In CSS-Dateien müssen Sie manchmal einen Hintergru...
Inhaltsverzeichnis 1. Implementierungsprozess des...
In diesem Artikel wird der spezifische Code für d...
Es gibt viele Möglichkeiten, eine globale ID zu g...
Inhaltsverzeichnis Zyklus für für-in für-von währ...
1. Weltraumregeln Leerzeichen im HTML-Code werden...
Inhaltsverzeichnis 1. Problembeschreibung 2. Prob...
Unter Linux ist alles eine Datei (Verzeichnisse s...
Ergebnisse erzielen Implementierungscode html <...
1. Im Web unterstützte Bildformate: GIF: kann 256...
Problembeschreibung: Beim Einfügen chinesischer Z...