Beispiel für die reguläre Umschreibmethode für Nginx Rewrite (Matching)

Beispiel für die reguläre Umschreibmethode für Nginx Rewrite (Matching)

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];
Standard: -
Kontext: Server, Standort, wenn

Wenn der angegebene reguläre Ausdruck mit der Anforderungs-URI übereinstimmt, wird die URI wie in der Ersetzungszeichenfolge angegeben geändert.
Die Umschreibeanweisungen werden sequenziell in der Reihenfolge ausgeführt, in der sie in der Konfigurationsdatei erscheinen. Mit einem Flag kann die weitere Verarbeitung einer Anweisung beendet werden.
Wenn die Ersetzungszeichenfolge mit „http://“, „https://“ oder „$scheme“ beginnt, wird die Verarbeitung abgebrochen und eine Umleitung an den Client zurückgegeben.

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
Sobald die Anforderung mit der aktuellen Regel übereinstimmt und umgeschrieben wird, wird die Überprüfung anderer nachfolgender Umschreiberegeln sofort beendet und die Anforderung unter Verwendung der umgeschriebenen Regel erneut initiiert.

brechen
Sobald die aktuelle Regel übereinstimmt und den Inhalt neu schreibt, werden die nachfolgenden Umschreibregeln sofort gestoppt und nginx führt weiterhin nachfolgende Vorgänge aus.

umleiten
Wenn die Ersetzungszeichenfolge nicht mit „http://“, „https://“ oder „$scheme“ beginnt, wird sie verwendet und gibt eine temporäre 302-Umleitung zurück.

dauerhaft
Gibt eine permanente 301-Weiterleitung zurück;

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
Ob der Neuschreibvorgang im Fehlerprotokoll aufgezeichnet werden soll; die Standardeinstellung ist „Hinweisebene“, die Standardeinstellung ist „Aus“.

Rückgabecode:
Wird verwendet, um die Umschreiberegel zu beenden und einen Statuscode an den Client zurückzugeben. Zu den verfügbaren Statuscodes gehören 204, 400, 402–406, 500–504 usw.

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:
  • Detaillierte Erklärung des Rewrite-Moduls von Nginx
  • Prinzip und Anwendungsbeispiele des URL-Umschreibmechanismus von Nginx
  • Detaillierte Erklärung der Standort- und Umschreibenutzung in nginx
  • So leiten Sie eine URL mit Nginx Rewrite um
  • Detaillierte Erläuterung des Nginx-Umschreibens und der Lokalisierung gemäß URL-Parametern
  • Nginx umschreiben, Grundlagen umschreiben und Beispiele teilen
  • Einführung in die Nginx-Rewrite-Regeln und -Verwendung sowie Fertigkeitsbeispiele
  • Nginx: Pseudostatische Konfigurationsparameter und Anwendungsbeispiele neu schreiben
  • Analyse der Nutzungsszenarien für die Nginx-Umschreibfunktion

<<:  Beispiele für Dateneinschränkungen basierend auf einer MySQL-Datenbank und Einführung in fünf Integritätseinschränkungen

>>:  Implementierung des React-Konfigurations-Subroutings

Artikel empfehlen

So erhalten/berechnen Sie den Offset eines Seitenelements mit JavaScript

Frage Durch Klicken auf ein Steuerelement wird ei...

Ausführliches Tutorial zu Installations- und Upgradeproblemen bei MySQL 5.7.30

Keil Da auf dem Computer eine relativ alte MySQL-...

Vollständige MySQL-Sicherung und schnelle Wiederherstellungsmethoden

Ein einfaches MySQL-Vollsicherungsskript, das die...

Detaillierte Schritte zum Erstellen eines Dateiservers in Windows Server 2012

Der Dateiserver ist einer der am häufigsten verwe...

Installations-JDK-Tutorialanalyse für Linux-System (Centos6.5 und höher)

Artikelstruktur 1. Vorbereitung 2. Installieren S...

Bringen Sie Ihnen bei, wie Sie ein React+Antd-Projekt von Grund auf erstellen

Bei den vorherigen Artikeln handelte es sich um m...

Proxy_pass-Methode in mehreren if in Nginx-Standorten

1. Lassen Sie uns zunächst das relevante Wissen z...

js implementiert zufälligen Namensaufruf

In diesem Artikel wird der spezifische Code von j...

Das Raster ist Ihr Layoutplan für die Seite

<br /> Englisches Original: http://desktoppu...