Funktionen von NGINX Plus: Caching

Einer der beliebtesten Anwendungsfälle von NGINX Plus ist der Einsatz als Content-Cache, sowohl zur Beschleunigung lokaler Ursprungsserver als auch zur Erstellung von Edge-Servern für Content Delivery Networks (CDNs). Durch Caching kann die Last auf Ihren Ursprungsservern um einen enormen Faktor reduziert werden, abhängig von der Cache-Fähigkeit Ihrer Inhalte und dem Profil des Benutzerverkehrs.

NGINX Plus kann Inhalte, die von Upstream-HTTP-Servern abgerufen werden, und Antworten, die von FastCGI-, SCGI- und uwsgi-Diensten zurückgegeben werden, zwischenspeichern.

NGINX Plus erweitert die Content-Caching-Fähigkeiten von NGINX Open Source durch die Unterstützung von Cache-Purging und eine umfassendere Visualisierung des Cache-Status auf dem Dashboard für die Live-Aktivitätsüberwachung:

cache-state-R7

Warum Content-Caching einsetzen?

Die Content-Caching verbessert die Ladezeiten von Webseiten, verringert die Belastung Ihrer Upstream-Server und verbessert die Verfügbarkeit, indem zwischengespeicherte Inhalte als Backup verwendet werden, wenn Ihre Ursprungsserver ausgefallen sind:

  • Verbesserte Website-Performance – NGINX Plus führt eine Zwischenspeicherung von Inhalten aller Art mit derselben Geschwindigkeit wie statische Inhalte durch, was zu geringeren Latenzzeiten und einer reaktionsschnelleren Website führt.
  • Höhere Kapazität – NGINX Plus entlastet Ihre Ursprungsserver von sich wiederholenden Aufgaben und setzt so Kapazitäten frei, um mehr Benutzer zu bedienen und mehr Anwendungen auszuführen.
  • Bessere Verfügbarkeit – NGINX Plus bewahrt Ihre Benutzer vor katastrophalen Fehlern, indem es zwischengespeicherte Inhalte (selbst wenn sie veraltet sind) auch dann bereitstellt, wenn die Ursprungsserver ausgefallen sind.

NGINX Plus und NGINX bieten eine konsolidierte Lösung für Ihre Web-Infrastruktur, die einen HTTP-Server für Ursprungsinhalte, Anwendungs-Gateways für FastCGI und andere Protokolle sowie einen HTTP-Proxy für Upstream-Server vereint. NGINX Plus bietet zusätzlich einen Lastenausgleich bei Anwendungen auf Unternehmensniveau an, der die Front-End-Load-Balancer in Ihrer Web-Infrastruktur konsolidiert.

Unter der Lupe – Content-Caching mit NGINX Plus

Zwischengespeicherte Inhalte werden in einem dauerhaften Cache auf der Festplatte gespeichert und von NGINX Plus und NGINX auf genau dieselbe Weise wie die ursprünglichen Inhalte bereitgestellt.

Zur Aktivierung von Content-Caching fügen Sie die Anweisungen proxy_cache_pathund proxy_cache in die Konfiguration ein:

# Define a content cache location on disk
proxy_cache_path /tmp/cache keys_zone=mycache:10m inactive=60m;

server {
    listen 80;
    server_name localhost;
 
    location / {
        proxy_pass http://localhost:8080;
 
       # reference the cache in a location that uses proxy_pass
       proxy_cache mycache;
    }
}

Standardmäßig verfolgen NGINX Plus und NGINX einen sicheren und vorsichtigen Ansatz für das Zwischenspeichern von Inhalten. Der Content-Cache erfolgt über eine GET- oder HEAD-Anfrage ohne eine Set-Cookie-Antwort. Die Cache-Zeit wird durch die Header des Ursprungsservers (X-Accel-Expires, Cache-Control, and Expires) festgelegt. NGINX Plus beachtet die Erweiterungen für die Cache-Steuerung, die in RFC 5861 definiert sind, stale-while-revalidateund stale-if-error.

Jede dieser Verhaltensweisen kann mit einer Reihe von Anweisungen erweitert und fein abgestimmt werden. Eine umfassende Einführung finden Sie im NGINX Plus Administratorleitfaden.

Cache-Instrumentierung

Die Live-Aktivitätsüberwachungs-API von NGINX Plus liefert eine Reihe von Statistiken, mit denen Sie die Nutzung und Effektivität Ihrer Content-Caches messen können:

Beispiel für JSON-Daten aus der Live-Aktivitätsüberwachungs-API

Die JSON-Daten enthalten vollständige Informationen über die Cache-Aktivität.

Verwaltung veralteter Inhalte

Standardmäßig stellen NGINX Plus und NGINX zwischengespeicherte Inhalte so lange bereit, wie sie gültig sind. Die Gültigkeit ist konfigurierbar oder kann durch den Header Cache-Control gesteuert werden, der vom Ursprungsserver gesetzt wird. Nach Ablauf der Gültigkeitsdauer gelten zwischengespeicherte Inhalte als veraltet und müssen erneut überprüft werden, indem sichergestellt wird, dass die zwischengespeicherten Inhalte noch mit den auf dem Ursprungsserver gefundenen Inhalten übereinstimmen.

Da veraltete Inhalte möglicherweise nie von einem Client angefordert werden, überprüfen NGINX Plus und NGINX veraltete Inhalte nur dann, wenn sie von einem Client angefordert werden. Dieser Vorgang kann im Hintergrund erfolgen, ohne die Client-Anforderung zu unterbrechen oder anderweitig zu verzögern, indem die veralteten Inhalte sofort bereitgestellt werden. Veraltete Inhalte werden auch dann bereitgestellt, wenn der Ursprungsserver nicht verfügbar ist, was eine hohe Verfügbarkeit in Zeiten hoher Auslastung oder langer Ausfälle des Ursprungsservers gewährleistet.

Die Bedingungen, unter denen NGINX und NGINX Plus veraltete Inhalte bereitstellen, können mit Anweisungen oder durch Berücksichtigung der Werte in den Cache-Controls des Ursprungs-Servers konfiguriert werden, stale-while-revalidate und stale-if-error.

Löschen von Inhalten aus dem Cache

Einer der Nebeneffekte des Zwischenspeicherns von Inhalten besteht darin, dass Aktualisierungen von Inhalten auf dem Ursprungsserver nicht notwendigerweise sofort in den Cache übertragen werden. Das bedeutet, dass den Clients unter Umständen noch eine Zeit lang die alten Inhalte angezeigt werden. Wenn bei einem Aktualisierungsvorgang mehrere Ressourcen gleichzeitig geändert werden (z. B. eine CSS-Datei und referenzierte Bilder), ist es möglich, dass einem Client eine Mischung aus veralteten und aktuellen Ressourcen angezeigt wird, was zu einer inkonsistenten Darstellung führt.

Mit der Cache-Löschfunktion von NGINX Plus können Sie dieses Problem leicht beheben. Die proxy_cache_purge-Anweisung ermöglicht das sofortige Entfernen von Einträgen aus dem Content-Cache von NGINX Plus, die mit einem konfigurierten Wert übereinstimmen. Diese Methode wird am einfachsten durch eine Anfrage ausgelöst, die einen benutzerdefinierten HTTP-Header oder eine Methode enthält.

Die folgende Konfiguration identifiziert beispielsweise Anfragen, die die HTTP-Methode PURGE verwenden, und löscht die entsprechenden URLs:

proxy_cache_path /tmp/cache keys_zone=mycache:10m levels=1:2 inactive=60s;

map $request_method $purge_method {
    PURGE 1;
    default 0;
}

server {
    listen 80;
    server_name www.example.com;

    location / {
        proxy_pass http://localhost:8002;
        proxy_cache mycache;

        proxy_cache_purge $purge_method;
    }
}

Sie können Bereinigungsanfragen mit einer Reihe von Tools stellen, wie z. B. mit dem Befehl curl im folgenden Beispiel:

$ curl -X PURGE -D – "http://www.example.com/*"
HTTP/1.1 204 No Content
Server: nginx/1.5.12
Date: Sat, 03 May 2014 16:33:04 GMT
Connection: keep-alive

Wie im Beispiel gezeigt, können Sie eine ganze Reihe von Ressourcen mit einem gemeinsamen URL-Stamm löschen, indem Sie das Platzhalter-Sternchen(*) an den URL anhängen.

Weitere Informationen

NGINX Plus erbt alle Caching-Funktionen von NGINX. Einzelheiten finden Sie im NGINX Plus Administratorleitfaden und in den Referenzdokumenten.

Nächste Schritte