NGINX-Caching
So richten Sie das Seiten-Caching ein, um Ihre Website zu beschleunigen und die Serverlast zu reduzieren.
Bei hohem Traffic verbraucht der Server schnell Ressourcen für die wiederholte Seitengenerierung. Das NGINX-Caching ermöglicht es, vorab generierte Antworten aus dem Speicher oder von der Festplatte auszuliefern — das verkürzt die Antwortzeiten erheblich und entlastet PHP und die Datenbank.
NGINX kann folgendes cachen:
- statische Dateien (CSS, JS, Bilder)
- dynamische Seiten (PHP/CMS-Antworten)
- Fehlerseiten (404, 502 usw.)
Auf VPS und dedizierten Servern haben Sie die volle Kontrolle über die NGINX-Konfiguration.
1. Allgemeinen Proxy-Cache einrichten (proxy_cache)
Öffnen Sie die Hauptkonfigurationsdatei /etc/nginx/nginx.conf und fügen Sie Folgendes in den Block http { ... } ein:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static_cache:32m inactive=60m max_size=2g;
/var/cache/nginx— Ordner für die Cache-Speicherung (anlegen mit:sudo mkdir -p /var/cache/nginx)levels=1:2— Verzeichnisstruktur für schnellere Suchekeys_zone=static_cache:32m— In-Memory-Zone für Schlüssel und Metadaten (32 MB)inactive=60m— Dateien werden gelöscht, wenn 60 Minuten lang nicht darauf zugegriffen wurdemax_size=2g— maximale Cache-Größe auf der Festplatte
Ordner anlegen und Berechtigungen setzen:
sudo mkdir -p /var/cache/nginx
sudo chown www-data:www-data /var/cache/nginx
2. Einfaches seitenweites Caching (proxy_cache)
Bearbeiten oder erstellen Sie Ihre Site-Konfiguration (z. B. /etc/nginx/sites-available/site.com).
Beispiel: gesamten Traffic über einen Proxy cachen:
server {
listen 80;
server_name site.com www.site.com;
location / {
proxy_pass http://127.0.0.1:8080; # Ihr PHP-FPM- oder Backend-Port
proxy_cache static_cache;
proxy_cache_valid 200 301 302 60m; # erfolgreiche Antworten 60 Minuten cachen
proxy_cache_valid 404 1m; # Fehler 1 Minute cachen
proxy_cache_methods GET HEAD; # nur GET- und HEAD-Anfragen cachen
proxy_ignore_headers Cache-Control Expires Set-Cookie;
proxy_cache_bypass $http_cookie; # Cache umgehen, wenn Cookies vorhanden
}
}
Unsere Produkte und Dienste
3. FastCGI-Caching (für PHP-Antworten)
Um dynamische Seiten zu cachen (z. B. CMS-generierte Inhalte), verwenden Sie fastcgi_cache.
Fügen Sie Folgendes in den Block http { ... } in /etc/nginx/nginx.conf ein:
fastcgi_cache_path /var/cache/nginx-fcgi levels=1:2 keys_zone=fcgi_cache:100m inactive=60m max_size=5g;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
Ordner anlegen:
sudo mkdir -p /var/cache/nginx-fcgi
sudo chown www-data:www-data /var/cache/nginx-fcgi
Fügen Sie im PHP-Location-Block Ihres Haupt-Server-Blocks das Caching hinzu:
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # an Ihren PHP-FPM-Socket anpassen
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_cache fcgi_cache;
fastcgi_cache_valid 200 301 302 60m; # erfolgreiche Antworten 60 Minuten cachen
fastcgi_cache_valid 404 1m; # Fehler 1 Minute cachen
fastcgi_cache_bypass $http_cookie; # Cache umgehen, wenn Cookies vorhanden
fastcgi_no_cache $http_cookie; # nicht im Cache speichern, wenn Cookies vorhanden
}
Hinweise
- Seiten mit Authentifizierung, Kundenbereich, Warenkorb oder Admin-Bereichen sollten nicht gecacht werden — verwenden Sie dafür
fastcgi_cache_bypassundfastcgi_no_cache. - Bei dynamischen CMS-Systemen (Bitrix, WordPress usw.) empfiehlt es sich, nur GET-Anfragen ohne Cookies zu cachen.
- Testen und laden Sie NGINX nach jeder Änderung neu:
sudo nginx -t # Konfiguration prüfen
sudo systemctl reload nginx
- Cache bei Bedarf manuell leeren:
sudo rm -rf /var/cache/nginx/*
sudo rm -rf /var/cache/nginx-fcgi/*
Hilfe
Bei Fragen oder wenn Sie Unterstützung brauchen, erreichen Sie uns jederzeit über das Ticketsystem — wir helfen Ihnen gern weiter!