Wie man Inhalte in Nginx zwischenspeichert

Wie man Inhalte in Nginx zwischenspeichert

Nginx Ein konsolidierter Open-Source-Webserver mit leistungsstarker Hochleistungs-Webserver zu sein, der Inhalt und Anwendungszustellung beschleunigt, die Sicherheit verbessert und die Skalierbarkeit verbessert. Einer der häufigsten Anwendungsfälle von Nginx ist ein Inhaltsdach, Dies ist der effektivste Weg, um die Leistung einer Website zu steigern.

Lesen Sie auch: 10 open Source -Caching -Tools für Linux

Sie können verwenden Nginx Um lokale Herkunftsserver zu beschleunigen, indem Sie es auf Cache -Antworten von Upstream -Servern konfigurieren und auch Edge -Server für Inhaltsbereitstellungsnetzwerke erstellen (Netzwerke inhaltlich (CDNs). Nginx betreibt einige der größten CDNs.

Wenn Nginx als Cache konfiguriert ist, wird er:

  • Cache statischer und dynamischer Inhalt.
  • Verbesserung der dynamischen Inhaltsleistung durch Mikroverschiebung.
  • Servieren Sie abgestandene Inhalte und renovieren im Hintergrund für eine bessere Leistung.
  • Cache-Kontroll-Header und mehr überschreiben oder einstellen.

In diesem Artikel lernen Sie, wie man konfiguriert wird Nginx Als ein Inhaltsdach unter Linux, damit Ihre Webserver so effizient wie möglich laufen.

Voraussetzungen:

Du solltest haben Nginx Auf Ihrem Linux -Server installiert, folgen Sie diesen Anleitungen, um NGINX zu installieren:

  • So installieren Sie Nginx auf CentOS 8
  • So installieren Sie Nginx auf CentOS 7

Cache statischer Inhalt auf nginx

Statische Inhalte sind Inhalte einer Website, die über Seiten gleich bleibt (nicht ändert). Beispiele für statische Inhalte umfassen Dateien wie Bilder, Videos, Dokumente; CSS -Dateien und JavaScript -Dateien.

Wenn Ihre Website viele statische Inhalte nutzt, können Sie ihre Leistung optimieren, indem Sie das clientseitige Caching aktivieren, bei dem der Browser Kopien von statischen Inhalten für einen schnelleren Zugriff speichert.

Die folgende Beispielkonfiguration ist gut, nur ersetzen www.Beispiel.com mit der URL Ihres Website -Namen.

Server  # Ersetzen Sie die URL Ihres Webservers für www.Beispiel.com server_name www.Beispiel.com; root/var/www/Beispiel.com/htdocs; Indexindex.PHP; access_log/var/log/nginx/Beispiel.com.Zugang.Protokoll; ERROR_LOG/VAR/LOG/NGINX/Beispiel.com.Fehler.Protokoll; location / try_files $ uri $ uri / / Index.Php?$ args;  Ort ~ .php $ try_files $ uri = 404; FASTCGI_PARAMS einschließen; # Ersetzen Sie den Socket oder die Adresse und den Port Ihres WordPress-Servers FASTCGI_PASS UNIX:/VAR/Run/PHP5-FPM.Socke; #fastcgi_pass 127.0.0.1: 9000;  Ort ~* .(Ogg | Ogv | Svg | | exe | ppt | tar | Mid | midi | wav | bmp | rtf) $ läuft max; log_not_found off; Access_log aus;  

Cache -dynamischer Inhalt auf nginx

Nginx Verwendet einen anhaltenden Cache basierender Cache, der sich irgendwo im lokalen Dateisystem befindet. Beginnen Sie also mit der Erstellung des lokalen Festplattenverzeichnisses zum Speichern zwischengespeicherter Inhalte.
# Mkdir -p/var/cache/nginx

Stellen Sie als Nächstes den entsprechenden Eigentum im Cache -Verzeichnis fest. Es sollte dem Besitz der Besitz von der Nginx Benutzer (nginx) und Gruppe (nginx) folgendermaßen.

# Chown Nginx: nginx/var/cache/nginx 

Führen Sie nun weiter fort, um im folgenden Abschnitt dynamische Inhalte auf Nginx zu aktivieren.

Aktivieren von Fastcgi -Cache in Nginx

Fastcgi (oder Fcgi) ist ein weit verbreitetes Protokoll für die Schnittstelle interaktiver Anwendungen wie z Php mit Webservern wie z Nginx. Es ist eine Erweiterung der CGI (Gemeinsame Gateway -Schnittstelle).

Der Hauptvorteil von Fcgi ist, dass es in einem einzigen Prozess mehrere CGI -Anfragen verwaltet. Ohne ihn muss der Webserver einen neuen Prozess (der kontrolliert werden muss, eine Anfrage bearbeiten und geschlossen werden) für jede Kundenanfrage nach einem Dienst.

Herstellen Php Skripte in einer LEMP -Stack -Bereitstellung, Nginx Verwendet FPM (FASTCGI -Prozessmanager) oder PHP-FPM, Eine beliebte alternative PHP -FastCGI -Implementierung. Einmal der PHP-FPM Prozess läuft, Nginx wird für die Verarbeitung auf Proxy -Anforderungen konfiguriert. Somit kann Nginx auch auf Cache -Antworten aus dem konfiguriert werden PHP-FPM Backend Application Server.

Unter Nginx, Die Fastcgi Inhaltscache wird mithilfe einer Richtlinie mit dem Namen deklariert fastcgi_cache_path Auf der obersten Ebene http Kontext innerhalb der Nginx -Konfigurationsstruktur. Sie können die auch hinzufügen fastcgi_cache_key Dies definiert einen Schlüssel (Anfrage -Kennung) zum Zwischenspeichern.

Außerdem fügen Sie den Status des stromaufwärts gelegenen Cache hinzu, um das hinzuzufügen add_header x-cache-status Richtlinie innerhalb der http Kontext - Dies ist nützlich für Debugging -Zwecke.

Unter der Annahme der Server -Block -Konfigurationsdatei Ihrer Website befindet sich unter /etc/nginx/conf.D/TestApp.Conf oder /etc/nginx/sites-verfügbar/testApp.Conf (Unter Ubuntu und seinen Derivaten) Öffnen Sie die Bearbeitungsdatei und fügen Sie die folgenden Zeilen oben in der Datei hinzu.

fastcgi_cache_path/var/cache/nginx stufen = 1: 2 keys_zone = cachezone: 10m; inaktiv = 60m max_size = 40m; fastcgi_cache_key "$ scheme $ request_method $ host $ request_uri"; add_header x-cache $ upstream_cache_status; 
Aktivieren Sie den Fastcgi -Cache in Nginx

Der fastcgi_cache_path Die Richtlinie gibt die Anzahl der Parameter an::

  • /var/cache/nginx - Der Weg zum lokalen Festplattenverzeichnis für den Cache.
  • Ebenen - Definiert die Hierarchiestufen eines Cache, er setzt eine zweistufige Verzeichnishierarchie unter /var/cache/nginx.
  • Keys_zone (Name: Größe) - Ermöglicht die Erstellung einer gemeinsam genutzten Speicherzone, in der alle aktiven Schlüssel und Informationen zu Daten (Meta) gespeichert werden. Beachten Sie, dass das Speichern der Tasten in Speicher den Überprüfungsvorgang beschleunigt, indem Nginx erleichtert wird, ob es a ist VERMISSEN oder SCHLAG, ohne den Status auf der Festplatte zu überprüfen.
  • inaktiv - Gibt die Zeitspanne an, nach der zwischengespeicherte Daten, auf die nicht zugegriffen werden, unabhängig von ihrer Frische aus dem Cache gelöscht werden. Ein Wert von 60 m In unserem Beispiel -Konfiguration bedeutet, dass auf Dateien auf nicht zugegriffen nach 60 vom Cache entfernt wird.
  • maximale Größe - Gibt die maximale Größe des Cache an. Es gibt mehr Parameter, die Sie hier verwenden können (lesen Sie die NGINX -Dokumentation, um weitere Informationen zu erhalten.

Die Variablen in der fastcgi_cache_key Die Richtlinie wird unten beschrieben.

Nginx verwendet sie bei der Berechnung des Schlüssels (Kennung) einer Anforderung. Um eine zwischengespeicherte Antwort an den Client zu senden, muss die Anfrage den gleichen Schlüssel wie eine zwischengespeicherte Antwort haben.

  • $ Schema - Anforderungsschema, HTTP oder HTTPS.
  • $ request_method - Anforderungsmethode normalerweise “ERHALTEN" oder "POST”.
  • $ Host - Dies kann Hostname aus der Anforderungszeile oder Hostname aus der “sein“GastgeberDas Feld des Anforderungsheaders oder der Servername, der in der Reihenfolge der Vorrangspartner eine Anforderung entspricht.
  • $ request_uri - bedeutet die vollständige ursprüngliche URI (mit Argumenten).

Auch der $ upstream_cache_status Variable in der add_header x-cache-status Die Richtlinie wird für jede Anfrage berechnet, auf die Nginx reagiert, ob es a ist VERMISSEN (Antwort nicht im Cache gefunden, erhalten vom Anwendungsserver) oder a SCHLAG (Antwort aus Cache) oder einer der anderen unterstützten Werte.

Als nächstes innerhalb der Standort Richtlinie, die PHP -Anfragen an übergibt PHP-FPM, verwendet die fastcgi_cache Richtlinien, um den Cache zu aktivieren, den Sie erst oben definiert haben.

Stellen Sie auch die Ausschnittszeit für verschiedene Antworten mit dem fest fastcgi_cache_valid Richtlinie wie gezeigt.

fastcgi_cache cachezone; fastcgi_cache_valid 60m; 
Definieren Sie die Caching -Zone und die Zeit

Wenn nur in unserem Fall die Ausschnittszeit angegeben wird, wird nur in unserem Fall angegeben 200, 301, Und 302 Antworten werden zwischengespeichert. Sie können jedoch auch die Antworten explizit angeben oder jeden verwenden (für einen beliebigen Antwortcode):

fastcgi_cache cachezone; fastcgi_cache_valid 200 301 203 60m; fastcgi_cache_valid 404 10m; Oder fastcgi_cache cachezone; fastcgi_cache_valid Any 10m; 

Feinabstimmung Fastcgi Caching-Leistung auf nginx

Um die Mindestnähe einzustellen, mit der eine Anfrage mit demselben Schlüssel vor dem Abspeicher der Antwort gestellt werden muss, enthalten Sie die FASTCGI_Cache_MIN_USS Richtlinie entweder in der http oder Server oder Standort Kontext.

fastcgi_cache_min_usses 3 
Stellen Sie die Verwendung von Mindestcache ein

So aktivierenIf-modifiziert" Und "IF-None-MatchHeaderfelder, fügen Sie die hinzu fastcgi_cache_revalidate Richtlinie innerhalb der http oder Server oder Standort Kontext.

fastcgi_cache_revalidate on; 
Setzen Sie die Cache-Neubewertung

Sie können auch anweisen Nginx So liefern Sie zwischengespeicherte Inhalte, wenn der Ursprungserver oder der FCGI -Server ausgefallen ist, und verwenden Sie die proxy_cache_use_stale Richtlinie innerhalb der Standortrichtlinie.

Diese Beispielkonfiguration bedeutet das, wenn Nginx Empfängt einen Fehler, eine Zeitüberschreitung und einen der angegebenen Fehler vom Upstream -Server und verfügt.

proxy_cache_use_stale fehler timeout http_500; 
Aktivieren Sie die Dienste abgestandener Daten

Eine weitere nützliche Richtlinie zur Feinabstimmung der FCGI-Caching-Leistung ist fastcgi_cache_background_update die in Verbindung mit dem funktioniert proxy_cache_use_stale Richtlinie. Wenn Sie auf eingestellt sind, weist es Nginx an, abgestanden.

fastcgi_cache_background_update on; 
Aktivieren Sie das Cache -Hintergrundaktualisierung

Der fastcgi_cache_lock ist auch nützlich, für die Feinabstimmung der Cache-Leistung darin, wenn mehrere Clients nach demselben Inhalt, der sich nicht im Cache befindet Zwischenspeicher.

fastcgi_cache_lock on; 
Cache Lock aktivieren

Nachdem alle oben genannten Änderungen in der vorgenommen haben Nginx Konfigurationsdatei, speichern und schließen Sie sie. Überprüfen Sie dann die Konfigurationsstruktur auf alle Syntaxfehler, bevor Sie den Nginx -Dienst neu gestartet haben.

# nginx -t # systemctl neu starten Sie Nginx neu 
Überprüfen und starten Sie den NGINX -Dienst

Wenn Sie als Nächstes testen, ob der Cache ordnungsgemäß funktioniert VERMISSEN, Nachfolgende Anfragen sollten jedoch a angeben SCHLAG Wie im Screenshot gezeigt).

# curl -i http: // testApp.Tecmint.com 
Testen Sie den Fastcgi -Cache

Hier ist weiter.

Testen Sie Nginx, die abgestandene Daten servieren

Hinzufügen von Ausnahmen, um den Cache zu umgehen

Es ist möglich, Bedingungen festzulegen, unter denen Nginx sollte keine zwischengespeicherten Antworten an Clients senden, wobei die verwendet werden fastcgi_cache_bypass Richtlinie. Und um Nginx zu unterweisen, Antworten überhaupt nicht vom Upstream -Server zu zwischenstrahlen, verwenden Sie die fastcgi_no_cache.

Zum Beispiel, wenn Sie wollen POST Anfragen und URLs mit einer Abfragezeichenfolge, die immer zu PHP gehen soll. Deklarieren Sie zunächst eine IF -Anweisung, um die Bedingung wie folgt festzulegen.

Setzen Sie $ Skip_cache 0; if ($ request_method = post) set $ spip_cache 1;  

Dann die obige Ausnahme in der aktivieren Standort Richtlinie, die PHP -Anfragen an übergibt PHP-FPM, Verwendung der fastcgi_cache_bypass Und fastcgi_no_cache Richtlinien.

 fastcgi_cache_bypass $ slip_cache; FASTCGI_NO_Cache $ Skip_cache; 

Es gibt viele andere Teile Ihrer Website, für die Sie möglicherweise nicht das Caching des Inhalts aktivieren möchten. Im Folgenden ist eine Beispiel -Nginx nginx.com Blog.

Um es zu verwenden, nehmen Sie Änderungen vor (z. B. Domäne, Pfade, Dateinamen usw.) um das zu reflektieren, was in Ihrer Umgebung existiert.

fastcgi_cache_path/var/run/nginx-cache-Ebenen = 1: 2 Keys_Zone = WordPress: 100m inaktiv = 60 m; fastcgi_cache_key "$ scheme $ request_method $ host $ request_uri"; Server Server_Name Beispiel.com www.Beispiel.com; root/var/www/Beispiel.com; Indexindex.PHP; Access_log/var/log/nginx/Beispiel.com.Zugang.Protokoll; Fehler_log/var/log/nginx/Beispiel.com.Fehler.Protokoll; Setzen Sie $ Skip_cache 0; # Post -Anfragen und URLs mit einer Abfragebarstellung sollte immer zu PHP gehen, wenn ($ request_method = post) set $ Skip_cache 1;  if ($ query_string != "") setz $ slip_cache 1;  # Cache-URIs, die die folgenden Segmente enthalten, nicht zwischen ($ request_uri ~* "/wp-admin/|/xmlrpc.Php | wp-.*.Php |/feed/| index.PHP | Sitemap (_index)?.xml ") set $ slip_cache 1; # Verwenden Sie den Cache nicht für protokollierte Benutzer oder aktuelle Kommentatoren if ($ http_cookie ~*" comment_author | wordpress_ [a-f0-9]+| wp-postpass | wordpress_no_cache | WordPress_logged_in ") set $ Skip_cache 1; Ort / try_files $ uri $ uri / / Index.Php?$ args;  Ort ~ .php $ try_files $ uri /index.PHP; FASTCGI_PARAMS einschließen; FASTCGI_PASS UNIX:/VAR/RUN/PHP5-FPM.Socke; fastcgi_cache_bypass $ slip_cache; FASTCGI_NO_Cache $ Skip_cache; fastcgi_cache WordPress; fastcgi_cache_valid 60m;  locum ~ /purge ( /.*) fastcgi_cache_purge WordPress "$ Scheme $ request_method $ host $ 1";  Ort ~* ^.+.(Ogg | Ogv | Svg | | exe | ppt | tar | Mid | midi | wav | bmp | rtf) $ access_log off; log_not_found off; läuft max ab;  location = /roboots.txt access_log off; log_not_found off;  Ort ~ /. alles leugnen; Access_log aus; log_not_found off;  

Aktivieren von Proxy -Cache in Nginx

Nginx Unterstützt auch die Ausschnitten von Antworten von anderen stellvertretenden Servern (definiert durch die Proxy_Pass Richtlinie). Für diesen Testfall verwenden wir Nginx als Reverse -Proxy für einen Knoten.JS -Webanwendung, sodass wir Nginx als Cache für den Knoten aktivieren können.JS -Anwendung. Alle hier verwendeten Konfigurationsanweisungen haben ähnliche Bedeutungen wie die FastCGI -Anweisungen im vorherigen Abschnitt, sodass wir sie nicht erneut erklären werden.

Um die Befragung von Antworten von einem stellvertretenden Server zu ermöglichen, enthalten Sie die proxy_cache_path Richtlinie in der obersten Ebene http Kontext. Um anzugeben, wie Anfragen zwischengespeichert werden, können Sie auch das hinzufügen proxy_cache_key Richtlinie wie folgt.

proxy_cache_path/var/cache/nginx app1 keys_zone = proxycache: 100m inaktiv = 60m max_size = 500m; proxy_cache_key "$ scheme $ request_method $ host $ request_uri"; add_header x-cache-status $ upstream_cache_status; proxy_cache_min_usses 3; 

Aktivieren Sie als nächstes den Cache in der Standortrichtlinie.

location/proxy_pass http: // 127.0.0.1: 3000; Proxy_Cache Proxycache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m;  

Um die Bedingungen zu definieren, unter denen Nginx keinen zwischengespeicherten Inhalt sendet und eine Antwort überhaupt nicht vom Upstream -Server zwischengespeichert proxy_cache_bypass Und proxy_no_cache.

 proxy_cache_bypass $ cookie_nocache $ arg_nocache $ arg_Comment; proxy_no_cache $ http_pragma $ http_authorization; 

Feinabstimmung Proxy-Cache-Leistung

Die folgenden Richtlinien sind nützlich, um die Leistung des Proxy-Cache zu optimieren. Sie haben auch die gleichen Bedeutungen wie die Fastcgi -Richtlinien.

proxy_cache_min_usses 3; proxy_cache_revalidate on; proxy_cache_use_stale Fehler Timeout Aktualisierung http_500; proxy_cache_background_update on; proxy_cache_lock on; 

Weitere Informationen und Caching -Konfigurationsanweisungen finden Sie in der Dokumentation für die beiden Hauptmodule ngx_http_fastcgi_module und ngx_http_proxy_module.

Zusätzliche Ressourcen: NGINX -Inhaltsdachung und Tipps zur Verbesserung der WordPress -Leistung.