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
Inhaltsverzeichnis Voraussetzungen Einrichten ein...
Vorwort: Wie erhält man die Koordinaten der aktue...
Der Syntaxstil der CSS-Stilregel ist die Grundein...
Inhaltsverzeichnis 1. setTimeout()-Timer 2. Stopp...
In diesem Tutorial erfahren Sie alles über die In...
Ich habe heute MySQL 8.0 aktualisiert. Das erste ...
Im Kopf eines Webdesigners muss viel Wissen im Zus...
Inhaltsverzeichnis Vorwort 1. Docker installieren...
Inhaltsverzeichnis 1. Einige Konzepte, die Sie vo...
Machen Sie sich eine Notiz, damit Sie später dara...
Vor einiger Zeit habe ich einen Blogbeitrag mit d...
Inhaltsverzeichnis Aktuelle Themen Lösungsprozess...
Vorwort Ich wollte vor kurzem CocosCreator lernen...
Als ich kürzlich an einem Projekt arbeitete, stel...
Wenn ich Vue lerne und immer Webpack-Anweisungen ...