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
Frage Durch Klicken auf ein Steuerelement wird ei...
Keil Da auf dem Computer eine relativ alte MySQL-...
Werfen wir einen Blick auf das Problem des VScode...
Vorwort Nach der Bereitstellung des Servers besuc...
Ein einfaches MySQL-Vollsicherungsskript, das die...
Dieser Artikel beschreibt verschiedene Möglichkei...
Der Dateiserver ist einer der am häufigsten verwe...
Artikelstruktur 1. Vorbereitung 2. Installieren S...
Der häufigste Fehler vieler Website-Designer ist,...
Bei den vorherigen Artikeln handelte es sich um m...
1. Lassen Sie uns zunächst das relevante Wissen z...
In diesem Artikel wird der spezifische Code von j...
1. Laden Sie MySQL von der offiziellen Website he...
Kapitel 1: Einführung in Keepalived Der Zweck des...
<br /> Englisches Original: http://desktoppu...