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 Suche
  • keys_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 wurde
  • max_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

WebhostingLäuft auf ultraschnellen NVMe-Laufwerken. Geeignet für Websites jeder Komplexität.
Bestellen
VPSFlexible Cloud-Infrastruktur mit vollem Root-Zugriff.
Bestellen
Dedizierte ServerBare-Metal-Server für maximale Leistung.
Bestellen

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_bypass und fastcgi_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!

Hilfe benötigt?Unsere Ingenieure helfen Ihnen kostenlos bei jeder Frage in wenigen MinutenKontaktieren Sie uns