cache-purge: NGINX Cache Purge Modul
Erfordert den Pro-Plan (oder höher) des GetPageSpeed NGINX Extras Abonnements.
Installation
Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:
- RedHat Enterprise Linux 7, 8, 9 und 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 und Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-cache-purge
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-cache-purge
Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:
load_module modules/ngx_http_cache_purge_module.so;
Dieses Dokument beschreibt nginx-module-cache-purge v2.5.10, veröffentlicht am 25. März 2026.
Inhalt selektiv aus den FastCGI-, Proxy-, SCGI- und uWSGI-Caches von NGINX mit HTTP PURGE-Anfragen löschen — keine Hacks im Dateisystem, keine Berechtigungsprobleme.
Dies ist eine Funktion, die in NGINX Plus vorhanden ist, aber ngx_cache_purge bringt sie zu open-source NGINX.
Hauptmerkmale
- Same-location purging — fügen Sie
PURGE-Unterstützung direkt zu bestehenden Cache-Standorten hinzu, keine zusätzlichenlocation-Blöcke erforderlich - Wildcard purging — mehrere Cache-Einträge mit einer einzigen Anfrage unter Verwendung von
*löschen - Bulk purge — alle zwischengespeicherten Inhalte auf einmal mit
purge_alllöschen - IP-basiertes Zugriffssteuerung — beschränken Sie, wer Löschanfragen stellen kann
- Cache-Schlüssel-Methode Substitution — löschen Sie GET-zwischengespeicherte Inhalte, selbst wenn
$request_methodin Ihrem Cache-Schlüssel enthalten ist - Konfigurierbares Antwortformat — erhalten Sie Löschresultate in HTML, JSON, XML oder einfachem Text
- Alle Cache-Typen — funktioniert mit FastCGI, Proxy, SCGI und uWSGI
Schnellstart
Fügen Sie PURGE-Unterstützung zu jedem zwischengespeicherten Standort hinzu:
http {
proxy_cache_path /var/cache/nginx keys_zone=my_cache:10m max_size=1g;
server {
location / {
proxy_pass http://127.0.0.1:8000;
proxy_cache my_cache;
proxy_cache_key "$scheme$host$request_uri";
proxy_cache_purge PURGE from 127.0.0.1;
}
}
}
Löschen Sie eine zwischengespeicherte Seite:
curl -X PURGE https://example.com/page-to-purge
Das war's. Kein separates /purge-Verzeichnis, keine Dateisystemberechtigungen zu verwalten.
Konfigurationsanweisungen
Same-Location-Syntax (Empfohlen)
Aktiviert das Löschen direkt im Standort, der zwischengespeicherte Inhalte bereitstellt.
fastcgi_cache_purge
- syntax:
fastcgi_cache_purge on|off|<method> [purge_all] [from all|<ip> [.. <ip>]] - default:
none - context:
http,server,location
proxy_cache_purge
- syntax:
proxy_cache_purge on|off|<method> [purge_all] [from all|<ip> [.. <ip>]] - default:
none - context:
http,server,location
scgi_cache_purge
- syntax:
scgi_cache_purge on|off|<method> [purge_all] [from all|<ip> [.. <ip>]] - default:
none - context:
http,server,location
uwsgi_cache_purge
- syntax:
uwsgi_cache_purge on|off|<method> [purge_all] [from all|<ip> [.. <ip>]] - default:
none - context:
http,server,location
Separate-Location-Syntax
Verwenden Sie einen speziellen Standort für Löschanfragen. Nützlich, wenn Sie unterschiedliche Zugriffsregeln für das Löschen benötigen.
fastcgi_cache_purge
- syntax:
fastcgi_cache_purge zone_name key - context:
location
proxy_cache_purge
- syntax:
proxy_cache_purge zone_name key - context:
location
scgi_cache_purge
- syntax:
scgi_cache_purge zone_name key - context:
location
uwsgi_cache_purge
- syntax:
uwsgi_cache_purge zone_name key - context:
location
Antwortformat
cache_purge_response_type
- syntax:
cache_purge_response_type html|json|xml|text - default:
html - context:
http,server,location
Beispiel mit JSON-Antworten:
location / {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_key "$uri$is_args$args";
proxy_cache_purge PURGE from 127.0.0.1;
cache_purge_response_type json;
}
{"Key": "httplocalhost/"}
Cache-Schlüssel-Methode Substitution
Wenn $request_method Teil Ihres Cache-Schlüssels ist, erzeugen Löschanfragen einen anderen Schlüssel (PURGE vs GET) und finden den zwischengespeicherten Eintrag nicht. Diese Anweisungen lösen das Problem:
*_cache_purge_key_method
- syntax:
fastcgi_cache_purge_key_method <method> [<method> ...] - context:
http,server,location
Verfügbar für alle Cache-Typen: fastcgi_cache_purge_key_method, proxy_cache_purge_key_method, scgi_cache_purge_key_method, uwsgi_cache_purge_key_method.
location ~ \.php$ {
fastcgi_cache WORDPRESS;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_purge PURGE from 127.0.0.1;
fastcgi_cache_purge_key_method GET; # Ersetzt GET durch PURGE bei der Schlüsselabfrage
}
Sie können mehrere Methoden angeben:
fastcgi_cache_purge_key_method GET HEAD;
WordPress-Integration
FastCGI Cache + Purge
Eine vollständige WordPress-Installation mit Caching und automatischer Löschunterstützung:
http {
fastcgi_cache_path /var/cache/nginx levels=1:2
keys_zone=WORDPRESS:100m max_size=1g
inactive=60m use_temp_path=off;
fastcgi_cache_key "$scheme$host$request_uri";
server {
listen 80;
server_name example.com;
root /var/www/wordpress;
index index.php;
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|webp|avif)$ {
expires max;
log_not_found off;
}
location / {
try_files $uri $uri/ /index.php?$args;
fastcgi_cache_purge PURGE from 127.0.0.1;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 60m;
fastcgi_cache_use_stale error timeout updating;
fastcgi_cache_lock on;
fastcgi_cache_purge PURGE from 127.0.0.1;
add_header X-Cache-Status $upstream_cache_status always;
}
}
}
Warum fastcgi_cache_purge in beiden Standorten? Die Root-URL / ist ein Sonderfall. Wenn try_files $uri/ überprüft, findet es das Dokumentstammverzeichnis. Für GET-Anfragen leitet die index-Anweisung zu index.php — aber für PURGE-Anfragen gilt index nicht und NGINX stoppt bei location /. Das Hinzufügen von fastcgi_cache_purge dort stellt sicher, dass PURGE / funktioniert.
Proxy Cache Purge Plugin
Installieren Sie das Proxy Cache Purge Plugin, um den Cache automatisch zu löschen, wenn Inhalte aktualisiert werden:
wp plugin install varnish-http-purge --activate
wp option update vhp_varnish_ip '127.0.0.1'
Das Plugin sendet PURGE-Anfragen an NGINX, wann immer Beiträge, Kommentare oder Seiten geändert werden — keine manuelle Cache-Verwaltung erforderlich.
Cache-Schlüssel Best Practices
Halten Sie es einfach — vermeiden Sie $request_method in Schlüsseln
# Empfohlen
fastcgi_cache_key "$scheme$host$request_uri";
# Vermeiden — Löschanfragen stimmen nicht mit zwischengespeicherten GET-Einträgen überein
fastcgi_cache_key "$scheme$request_method$host$request_uri";
Wenn Sie $request_method unbedingt einbeziehen müssen, verwenden Sie *_cache_purge_key_method GET, um Löschschlüsselabfragen zu beheben.
Wildcard-Löschen
Löschen Sie mehrere Einträge, die einem Muster entsprechen, indem Sie * anhängen:
curl -X PURGE https://example.com/blog/*
Der Stern muss das letzte Zeichen sein. Damit dies funktioniert, muss $uri am Ende Ihres Cache-Schlüssels stehen.
Bulk Purge
Löschen Sie alle zwischengespeicherten Dateien auf einmal:
proxy_cache_purge PURGE purge_all from 127.0.0.1;
Dies kann bei großen Caches oder langsamen Speichern langsam sein. Verwenden Sie RAM-unterstützte Cache-Pfade für die beste Leistung.
IP-basierte Zugriffssteuerung
Beschränken Sie Löschanfragen auf vertrauenswürdige Quellen:
fastcgi_cache_purge PURGE from 127.0.0.1 192.168.1.0/24;
Fehlersuche
| Antwort | Ursache | Lösung |
|---|---|---|
| 405 Not Allowed | PURGE traf einen Standort ohne *_cache_purge |
Fügen Sie *_cache_purge zu allen relevanten Standorten hinzu |
| 412 Precondition Failed | Cache-Eintrag nicht gefunden (nie zwischengespeichert, bereits abgelaufen oder Schlüssel-Mismatch) | Überprüfen Sie den Cache-Schlüssel — suchen Sie nach Problemen mit $request_method |
| 403 Forbidden | Client-IP nicht in der from-Liste |
Fügen Sie Ihre IP zu from hinzu |
| 200 OK, aber Cache bleibt bestehen | $request_method im Cache-Schlüssel erzeugt nicht übereinstimmende Schlüssel |
Entfernen Sie $request_method aus dem Schlüssel oder fügen Sie *_cache_purge_key_method GET hinzu |
gzip_vary Interaktion: Die Aktivierung von gzip_vary kann das Löschen des Caches beeinträchtigen. Wenn Sie inkonsistentes Löschverhalten feststellen, deaktivieren Sie gzip_vary im zwischengespeicherten Standort.
Testen
ngx_cache_purge enthält eine Test-Suite basierend auf Test::Nginx:
prove
Siehe auch
- Supercharging WordPress with NGINX Cache Purge — vollständige Einrichtungsanleitung
- NGINX Proxy Cache & Microcaching — Grundlagen des Proxy-Caches
- NGINX fastcgi_cache_purge-Dokumentation — NGINX Plus Referenz