Globale Nginx-Variablen Es gibt viele globale Variablen in Nginx, die über den Variablennamen $ verwendet werden können. Hier sind einige häufig verwendete globale Variablen:
Nginx-Standort Standort Die Standortdirektive wird verwendet, um basierend auf der vom Benutzer angeforderten URI verschiedene Anwendungen auszuführen. Das heißt, der Abgleich erfolgt entsprechend der vom Benutzer angeforderten Website-Adresse URL und bei erfolgreichem Abgleich werden entsprechende Vorgänge ausgeführt. Grammatik
Regelpriorität = höher als^~ höher als~* gleich~ höher als/ Beispiel 1 Standort = "/12.jpg" { ... } wie: www.syushin.com/12.jpg stimmt überein. www.syushin.com/abc/12.jpg stimmt nicht mit dem Standort überein. ^~ "/abc/" { ... } wie: www.syushin.com/abc/123.html stimmt mit www.syushin.com/a/abc/123.jpg überein, stimmt aber nicht mit location ~ "png" { ... } überein. wie: www.syushin.com/aaa/bbb/ccc/123.png entspricht www.syushin.com/aaa/png/123.html entspricht location ~* "png" { ... } wie: www.syushin.com/aaa/bbb/ccc/123.PNG entspricht www.syushin.com/aaa/png/123.html entspricht dem Standort /admin/ { ... } wie: www.syushin.com/admin/aaa/1.php stimmt überein www.syushin.com/123/admin/1.php stimmt nicht überein Beachten: Einige Angaben zur Standortunterstützung stimmen nicht überein!~ Beispiel: location !~ 'png'{ ... } Das ist falsch, der Standort wird nicht unterstützt!~ Wenn eine solche Anforderung besteht, kann sie durch „if“ (Standortpriorität ist geringer als „if“) implementiert werden, beispielsweise: „if ($uri !~ 'png') { ... }“ Zugriffskontrolle Im Zeitalter von Web 2.0 sind viele Websites benutzerzentriert und ermöglichen Benutzern, Inhalte auf dem Server zu veröffentlichen. Da die Upload-Funktion den Benutzern offen steht, bestehen große Sicherheitsrisiken, beispielsweise durch das Hochladen von Trojaner-Programmen durch Hacker usw. Daher ist es notwendig, eine Zugriffskontrolle zu konfigurieren. verweigern und zulassen Es lässt sich leicht wörtlich als Ablehnung und Erlaubnis verstehen. Die Deny- und Allow-Direktiven von Nginx werden durch das Modul ngx_http_access_module bereitgestellt, das standardmäßig in die Nginx-Installation integriert ist. Grammatik Syntax: Es bedeutet, den Zugriff auf eine bestimmte IP oder ein IP-Segment zu erlauben/verweigern. Wenn unix: angegeben ist, wird der Socket-Zugriff erlaubt. Hinweis: Diese Funktion wurde in Unix 1.5.1 neu hinzugefügt. In nginx werden Zulassungs- und Verweigerungsregeln nacheinander ausgeführt. Beispiel 1: Standort / { erlaube 192.168.0.0/24; 127.0.0.1 zulassen; alles leugnen; } Hinweis: Dieser Konfigurationswert lässt Anfragen aus dem Netzwerksegment 192.168.0.0/24 und 127.0.0.1 zu und lehnt alle anderen Quell-IP-Adressen ab. Beispiel 2: Standort ~ "Administrator" { erlauben Sie 192.168.30.7; leugne alles } Hinweis: Die aufgerufene URI enthält Administratoranforderungen und nur Anforderungen von der IP 192.168.30.7 sind zulässig. Standortbasierte Zutrittskontrolle Im Alltag wird die Zugangskontrolle grundsätzlich standortbezogen konfiguriert. Nehmen wir ein direktes Beispiel. Beispiel 1: Standort /Blog/ { alles leugnen; } Hinweis: Für das Verzeichnis /blog/ ist jeglicher Zugriff verboten. Die Option „deny all“ kann hier so geändert werden, dass sie 403; zurückgibt. Beispiel 2 Ort ~ ".bak|\.ht" { Rückgabe 403; } Hinweis: Wenn die aufgerufene URI .bak oder .ht enthält, wird direkt der Statuscode 403 zurückgegeben. Beispiel für einen Testlink:
Wenn die vom Benutzer eingegebene URL eine der oben genannten ist, wird 403 zurückgegeben. Beispiel 3 Ort ~ (Daten|Cache|Temp|Bild|Anhang).*\.php$ { alles leugnen; } Hinweis: Auf alle angeforderten URIs, die Daten, Cache, temporäre Dateien, Bilder oder Anhänge enthalten und mit .php enden, ist der Zugriff verboten. Beispiel für einen Testlink:
$document_uri-basierte Zugriffskontrolle Wie bereits erwähnt, bezeichnet die integrierte Variable $document_uri die URI, die in der aktuellen Anfrage keine Anweisungen enthält. Beispielsweise lautet der $document_uri von www.123.com/1.php?a=1&b=2 1.php und enthält nicht die folgenden Parameter. Wir können für diese Variable eine Zugriffskontrolle durchführen. Beispiel 1 wenn ($document_uri ~ "/admin/") { Rückgabe 403; } Hinweis: Wenn die angeforderte URI /admin/ enthält, wird direkt 403 zurückgegeben. Hinweis: „allow“ und „deny“ werden in der „if“-Struktur nicht unterstützt. Testlink: 1. www.xxxxx.com/123/admin/1.html Übereinstimmungen Beispiel 2 wenn ($document_uri = /admin.php) { Rückgabe 403; } Hinweis: Wenn die angeforderte URI /admin.php ist, wird ein 403-Statuscode zurückgegeben. Testlink: 1. www.xxxxx.com/admin.php # Übereinstimmungen Beispiel 3 wenn ($document_uri ~ '/data/|/cache/.*\.php$') { Rückgabe 403; } Hinweis: Wenn die angeforderte URI das Daten- oder Cache-Verzeichnis enthält und PHP ist, wird ein 403-Statuscode zurückgegeben. Testlink: 1. www.xxxxx.com/data/123.php # Übereinstimmungen $request_uri-basierte Zugriffskontrolle $request_uri hat mehr Anforderungsparameter als $docuemnt_uri. Es steuert hauptsächlich die Parameter in der angeforderten URI. Beispiel wenn ($request_uri ~ "gid=\d{9,12}") { Rückgabe 403; } Hinweis: \d{9,12} ist ein regulärer Ausdruck, der 9 bis 12 Zahlen bedeutet. Beispielsweise erfüllt gid=1234567890 die Symbolanforderung. Testlink: 1. www.xxxxx.com/index.php?gid=1234567890&pid=111 Übereinstimmungen Hintergrundwissen: Es gab eine Website eines Kunden, die von CC angegriffen wurde. Die andere Partei hat zu viele Anfragen wie diese initiiert: /read-123405150-1-1.html Zugriffskontrolle basierend auf $http_user_agent (Anti-Crawler) User_agent kann einfach als Browserkennung verstanden werden. Einige Spider-Crawler können auch durch user_agent identifiziert werden. Wenn Sie die Zugriffsprotokolle beobachten, werden Sie feststellen, dass einige Suchmaschinen-Spider Ihre Website sehr häufig besuchen, was nicht benutzerfreundlich ist. Um den Druck auf den Server zu verringern, können Sie tatsächlich alle Spider-Crawler außer den Spidern der gängigen Suchmaschinen blockieren. Beispiel wenn ($user_agent ~ 'YisouSpider|MJ12bot/v1.4.2|YoudaoBot|Tomato') { Rückgabe 403; } Hinweis: Alle Anfragen mit den oben genannten Schlüsselwörtern im User_Agent geben einen Statuscode 403 zurück. prüfen: 1. curl -A "123YisouSpider1.0" $http_referer-basierte Zugriffskontrolle Zusätzlich zur Anti-Hotlink-Funktion kann $http_referer auch einige spezielle Anforderungen erfüllen. Zum Beispiel: Die Website wurde gehackt und die von der Suchmaschine indexierten Webseiten waren problematisch. Beim Anklicken der Website über die Suchmaschine wurde eine Glücksspiel-Website angezeigt. Beispiel wenn ($http_referer ~ 'baidu.com') { Rückgabe 404; } oder wenn ($http_referer ~ 'baidu.com') { gibt 200 zurück "<html><script>window.location.href='//$host$request_uri';</script></html>"; } Nginx-Parameteroptimierung Als Hochleistungs-Webserver kann Nginx auch ohne Anpassung der Konfigurationsparameter eine große Anzahl gleichzeitiger Anfragen verarbeiten. Natürlich wird durch die Konfigurationsoptimierung die Leistung von Nginx verbessert, und die Konfigurationsparameter müssen mit der Leistung der Serverhardware als Referenz kombiniert werden. Optimierung der Arbeitsverfahren Arbeiterprozesse Nummer;
worker_rlimit_nofile
Arbeiterverbindungen Dieser Parameter wird verwendet, um die maximale Anzahl von Verbindungen zu konfigurieren, die jeder Nginx-Arbeitsprozess verarbeiten kann. Optimieren Sie die Anzahl der HTTP/TCP-Verbindungen Verwenden Sie epoll
multi_accept ein
sendfile auf
tcp_nopush ein
tcp_nodelay ein
(Über Nagles Algorithmus) Wenn Sie häufig kleine Datenpakete senden müssen, z. B. 1 Byte, muss jedes Paket von einem 40 Byte langen Header begleitet werden (am Beispiel von IPv4). Keepalive_Timeout
Keepalive-Anfragen
reset_timeout_connection ein
Client_Body_Timeout
Sendezeitüberschreitung
Kompression Für reinen Textinhalt kann Nginx die GZIP-Komprimierung verwenden. Durch den Einsatz von Komprimierungstechnologie kann der Bandbreitenverbrauch reduziert werden. Unterstützt durch das Modul ngx_http_gzip_module Die Konfiguration ist wie folgt: gzip on; //Gzip-Funktion aktivierengzip_min_length 1024; //Angeforderte Ressource so einstellen, dass sie nur komprimiert wird, wenn sie diesen Wert überschreitet (in Bytes)gzip_buffers 16 8k; //Puffergröße für die Komprimierung festlegen, die erste Zahl ist die Nummer, die zweite die Größe jedes Puffersgzip_comp_level 6; //Komprimierungsstufe festlegen, von 1-9, 9 ist die höchste Komprimierungsstufe und verbraucht die meisten CPU-Ressourcengzip_types text/plain application/x-javascript text/css application/xml image/jpeg image/gif image/png; //Geben Sie an, welche Dateitypen komprimiert werden müssengzip_disable "MSIE 6\."; //IE6-Browser aktiviert keine Komprimierung prüfen: curl -I -H "Kodierung akzeptieren: gzip, deflate" http://www.xxxxx.com/1.css Protokoll
Ablaufdatum statischer Dateien Für statische Dateien müssen Sie eine Ablaufzeit festlegen, damit diese Ressourcen im Client-Browser zwischengespeichert werden können. Das Konfigurationsbeispiel sieht wie folgt aus: Standort ~* ^.+\.(gif|jpg|png|css|js)$ { läuft in 1 Tag ab; //1 Tag bedeutet 1 Tag, Sie können auch 24 Stunden verwenden, um einen Tag darzustellen. } Zugriffskontrolle und Parameterabstimmung zeichnen nur einige Teile auf, von denen einige bei der Arbeit verwendet werden können. Ich werde mir später Notizen zur SSL-Konfiguration machen. Der schriftliche Einstellungstest im Frühjahr ist sehr schwierig, also lernen Sie fleißig ... 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 zur Verwendung mehrerer Timer in CocosCreator
Inhaltsverzeichnis DragEvent-Schnittstelle Übersi...
Inhaltsverzeichnis 1. Lernen Sie Teleport kennen ...
Inhaltsverzeichnis 1. Materialien vorbereiten 2. ...
Inhaltsverzeichnis 1. Schreiben Sie Webshell in d...
Inhaltsverzeichnis 1. Vorlage 2. Generika 3. Gene...
Inhaltsverzeichnis einführen 1. Pica 2. Lena.js 3...
Vorwort Im vorherigen Artikel wurde die Installat...
Unter Linux ist alles eine Datei, daher besteht d...
Ich habe mich kürzlich mit Algorithmen beschäftig...
Es ist großartig, CSS zu verwenden, um verschiede...
Welche Funktion hat dieses Schlüsselattribut? Sch...
Wenn href zum Übergeben von Parametern benötigt w...
Studierende, die Ansible verwenden, wissen, dass ...
Inhaltsverzeichnis Vorwort MySQL-Fall mit Syntax:...
1. INSERT INTO SELECT-Anweisung Das Anweisungsfor...