1. Regulärer Ausdrucksabgleich
2. Datei- und Verzeichnisabgleich
drei. Der letzte Parameter des Rewrite-Befehls ist das Flag-Tag, das
Verwenden Sie „last“ und „break“, um die URI neu zu schreiben, ohne die Adressleiste des Browsers zu ändern. Es gibt geringfügige Unterschiede zwischen den beiden. Wenn Sie die Alias-Direktive verwenden, müssen Sie den letzten Marker verwenden. Wenn Sie die Proxy_Pass-Direktive verwenden, müssen Sie den Break-Marker verwenden. Nach der Ausführung dieser Umschreiberegel initiiert das letzte Tag erneut eine Anforderung an das Server-Tag {......}, auf dem es sich befindet, und das Break-Tag beendet den Abgleich, nachdem der Abgleich dieser Regel abgeschlossen ist. Beispiel: Wenn wir umschreiben "/photo/([0-9]{2})([0-9]{2})([0-9]{2})" schreibe "/Pfad/zu/Foto/$1/$1$2/$1$2$3.png" neu; 4. Anweisungen zu NginxRewrite-Regeln 1. Unterbrechungsanweisung Nutzungsumgebung: Server, Standort, wenn 2. if-Anweisung Nutzungsumgebung: Server, Standort 3. Rückgabebelehrung Syntax: returncode Standort ~ .*\.(sh|bash)?$ { Rückgabe 403; } 4. Direktive umschreiben Syntax: wenn( $host ~* www\.(.*) ) { setze $host_without_www $1; schreibe ^(.*)$ http://$host_without_www$1permanent neu; } 5. Befehl festlegen Syntax: Variablenwert festlegen; set$varname "Hallo Welt"; 6. Uninitialized_variable_warn-Direktive Syntax: uninitialized_variable_warnon|off fünf. Beispiel für das Schreiben von Nginx-Rewrite-Regeln 1. Wenn die aufgerufene Datei oder das aufgerufene Verzeichnis nicht existiert, leiten Sie zu einer HTML-Datei weiter wenn( !-e $Anforderungsdateiname ) { umschreiben ^/(.*)$ index.htmllast; } 2. Verzeichnistausch /123456/xxxx ====> /xxxx?id=123456 schreibe ^/(\d+)/(.+)/ /$2?id=$1 last neu; 3. Wenn der Client den IE-Browser verwendet, leiten Sie ihn in das Verzeichnis /ie um wenn( $http_user_agent ~ MSIE) { umschreiben ^(.*)$ /ie/$1 break; } 4. Zugriff auf mehrere Verzeichnisse verbieten Standort ~ ^/(cron|templates)/ { alles leugnen; brechen; } 5. Verbieten Sie den Zugriff auf Dateien, die mit /data beginnen Standort ~ ^/Daten { alles leugnen; } 6. Verbieten Sie den Zugriff auf Dateien mit den Dateierweiterungen .sh, .flv, .mp3 Standort ~ .*\.(sh|flv|mp3)$ { Rückgabe 403; } 7. Legen Sie die Browser-Cache-Zeit für bestimmte Dateitypen fest Standort ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { läuft in 30 Tagen ab; } Standort ~ .*\.(js|css)$ { läuft in 1 Stunde ab; } 8. Ablaufzeit für favicon.ico und robots.txt festlegen Hier beträgt die Gültigkeitsdauer für favicon.ico 99 Tage, für robots.txt 7 Tage und es werden keine 404-Fehlerprotokolle aufgezeichnet. Standort ~(favicon.ico) { log_not_found aus; läuft in 99 Tagen ab; brechen; } Standort ~(robots.txt) { log_not_found aus; läuft am 7. Tag ab; brechen; } 9. Legen Sie die Ablaufzeit einer Datei fest; hier beträgt sie 600 Sekunden, und das Zugriffsprotokoll wird nicht aufgezeichnet Standort ^~ /html/scripts/loadhead_1.js { Zugriff_Abmeldung; Stammverzeichnis /opt/lampp/htdocs/web; läuft ab 600; brechen; } 10. Anti-Hotlinking von Dateien und Festlegen einer Ablaufzeit Return412 ist hier ein benutzerdefinierter HTTP-Statuscode. Der Standardwert ist 403, was praktisch ist, um die richtige Hotlink-Anforderung zu finden. neu schreiben ^/ http: //img.linuxidc.net/leech.gif; //Ein Anti-Leech-Bild anzeigen access_log off; //Keine Zugriffsprotokolle aufzeichnen, um den Druck zu verringern expires 3d //Browser-Cache aller Dateien für 3 Tage location ~*^.+\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ { valid_referers, keine blockiert *.linuxidc.com*.linuxidc.net localhost 208.97.167.194; wenn ($ungültiger_Referrer) { neu schreiben ^/upload/2022/web/leech.gif; Rückgabe 412; brechen; } Zugriff_Abmeldung; Stammverzeichnis /opt/lampp/htdocs/web; läuft in 3 Tagen ab; brechen; } 11. Erlauben Sie nur festen IP-Adressen den Zugriff auf die Website und fügen Sie ein Passwort hinzu Stammverzeichnis /opt/htdocs/www; erlauben Sie 208.97.167.194; 222.33.1.2 zulassen; erlauben Sie 231.152.49.4; alles leugnen; auth_basic "C1G_ADMIN"; auth_basic_user_file htpasswd; 12. Konvertieren Sie Dateien in mehreren Verzeichnissen in eine Datei, um den SEO-Effekt zu verbessern umschreiben^/job-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /job/$1/$2/jobshow_$3.html zuletzt; 13. Umleitung, wenn Dateien und Verzeichnisse nicht vorhanden sind: wenn (!-e $request_filename) { Proxy-Passwort http://127.0.0.1; } 14. Verweisen Sie einen Ordner im Stammverzeichnis auf das Verzeichnis der zweiten Ebene Beispielsweise verweist Wenn Sie „letzte“ in „permanent“ ändern, wird in der Adressleiste des Browsers umschreiben ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last; Das Problem mit dem obigen Beispiel ist, dass es beim Zugriff auf /shanghai nicht übereinstimmt umschreiben ^/([0-9a-z]+)job$ /area/$1/ last; umschreiben ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last; Auf diese Weise kann auch auf Wenn die echte Adresse von Dann füge ich den automatischen Sprung hinzu, aber es funktioniert nicht. wenn (-d $Anforderungsdateiname){ schreibe ^/(.*)([^/])$ http://$host/$1$2/permanent um; } Wenn man den Grund kennt, ist es leicht zu handhaben. Lassen Sie mich manuell springen. umschreiben ^/([0-9a-z]+)job$ /$1job/permanent; umschreiben ^/([0-9a-z]+)job/(.*)$ /area/$1/$2last; 15. Domänensprung Server{ hören Sie 80; Servername jump.linuxidc.com; index.html index.htm index.php; Wurzel /opt/lampp/htdocs/www; neu schreiben ^/ http://www.linuxidc.com/; Zugriff_Abmeldung; } 16. Multi-Domain-Weiterleitung Servername www.linuxidc.comwww.linuxidc.net; index.html index.htm index.php; Wurzel /opt/lampp/htdocs; wenn ($host ~ "linuxidc\.net") { neu schreiben ^(.*) http://www.linuxidc.com$1permanent; } 6. Globale Variablen von nginx arg_PARAMETER #Diese Variable enthält den Wert der Variablen PARAMETER in der GET-Anfrage, sofern vorhanden. args #Diese Variable ist gleich den Parametern in der Anforderungszeile (GET-Anforderung), wie zum Beispiel: foo=123&bar=blahblah; binary_remote_addr #Binäre Clientadresse. body_bytes_sent #Die Anzahl der als Antwort gesendeten Body-Bytes. Diese Daten sind auch dann korrekt, wenn die Verbindung verloren geht. content_length #Inhaltslängenfeld im Anforderungsheader. content_type #Content-Type-Feld im Anforderungsheader. cookie_COOKIE #Der Wert der Cookie-Variable COOKIE document_root #Der in der Root-Direktive der aktuellen Anfrage angegebene Wert. document_uri #Dasselbe wie uri. Host #Anforderungshost-Headerfeld, andernfalls der Servername. Hostname #Auf den Hostnamen der Maschine einstellen, wie von gethostname zurückgegeben http_HEADER is_args #Wenn ein args-Parameter vorhanden ist, ist diese Variable gleich "?", andernfalls ist sie gleich "", einem leeren Wert. http_user_agent #Client-Agent-Informationen http_cookie #Client-Cookie-Informationen limit_rate #Diese Variable kann die Verbindungsrate begrenzen. query_string #Gleich wie args. request_body_file #Der temporäre Dateiname der Client-Anforderungstextinformationen. request_method #Die vom Client angeforderte Aktion, normalerweise GET oder POST. remote_addr #Client-IP-Adresse. remote_port #Client-Port. remote_user #Der Benutzername, der vom Auth Basic-Modul verifiziert wurde. request_completion #Wenn die Anfrage abgeschlossen ist, auf OK setzen. Wenn die Anfrage nicht abgeschlossen ist oder wenn die Anfrage nicht die letzte in der Anfragekette ist, ist es leer. request_method #GET oder POST request_filename #Der Dateipfad der aktuellen Anfrage, generiert durch die Root- oder Alias-Direktive und die URI-Anfrage. request_uri #Die ursprüngliche URI mit den Anforderungsparametern ohne den Hostnamen, z. B.: „/foo/bar.php?arg=baz“. Kann nicht geändert werden. Schema #HTTP-Methode (wie http, https). server_protocol #Das in der Anfrage verwendete Protokoll, normalerweise HTTP/1.0 oder HTTP/1.1. server_addr #Serveradresse. Dieser Wert kann nach Abschluss eines Systemaufrufs ermittelt werden. server_name #Servername. server_port #Die Portnummer, über die die Anfrage beim Server eintrifft. 7. Korrespondenz zwischen Apache- und Nginx-Regeln Apaches RewriteCond entspricht Nginx' if Beispiel: Erlauben Sie dem angegebenen Domänennamen den Zugriff auf diese Site, und alle anderen Domänennamen werden auf www.jb51.net umgeleitet. Apache: RewriteCond %{HTTP_HOST} !^(.*?)\.aaa\.com$[NC] RewriteCond %{HTTP_HOST} !^localhost$ RewriteCond %{HTTP_HOST}!^192\.168\.0\.(.*?)$ RewriteRule ^/(.*)$ //www.jb51.net[R,L] Nginx-Filterbeispiel: wenn( $host ~* ^(.*)\.aaa\.com$ ) { setze $allowHost auf „1“; } wenn( $host ~* ^localhost ) { setze $allowHost auf „1“; } wenn( $host ~* ^192\.168\.1\.(.*?)$ ) { setze $allowHost auf „1“; } wenn( $allowHost !~ '1' ) { umschreiben ^/(.*)$ //www.jb51.netredirect ; } Zusammenfassen Backend-Entwicklung ist ein Beruf, der einem Full-Stack-Job am nächsten kommt. Wenn das Frontend nicht ausreicht, kann das Backend Seiten-JS darüber schreiben. Es spielt keine Rolle, ob Betrieb und Wartung erforderlich sind, das Backend kümmert sich um die Wartung des Servers. Kurz gesagt, ein gutes Backend ist in der Lage, alle Aspekte abzudecken. Dies ist das Ende dieses Artikels über die Implementierung von Nginx-Weiterleitungsabgleichsregeln. Weitere relevante Nginx-Weiterleitungsabgleichsregeln finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: jQuery implementiert den Fall der Schriftgrößenanpassung
>>: Detaillierte Schritte zur Installation von MySQL 8.0.18-winx64 unter Win10
1. Voraussetzungen Da ich es schon mehrmals insta...
In der SQL-ähnlichen Anweisung beispielsweise SEL...
Ein Port ändert sich In Version 3.2.0 beträgt der...
Vorwort Ich glaube, jeder weiß, dass Indizes geor...
In Nginx gibt es einige erweiterte Szenarien, in ...
Inhaltsverzeichnis 1. Isolationsstufe LESEN SIE U...
1. Gesamtarchitekturdiagramm Im Vergleich zu ande...
Was sind Routing und Routing-Tabellen in Linux? U...
Die Zeit vergeht wie im Flug und in nur sechs Tag...
<br />Worte sind das unvermeidliche Produkt ...
1 Herunterladen Die Adresse lautet: https://dev.m...
Dieses Axios-Paket wird in der Vue3-Demo verwende...
Problembeschreibung Wenn filter im body verwendet...
Methode 1: Bitte fügen Sie den folgenden Code nach...
Dieser Artikel beschreibt anhand eines Beispiels ...