Clear-Site-Data für Nginx

Clear-Site-Data auf dem Nginx-Logout-Endpoint einrichten — mit location-Block, escaped Anführungszeichen und proxy_pass-Variante zum Kopieren.

Nginx · Schritt für Schritt

Clear-Site-Data auf Nginx

Nginx unterstützt Clear-Site-Data nativ über die add_header-Direktive — kein zusätzliches Modul nötig. Der Header wird in einem dedizierten location-Block für den Logout-Endpoint gesetzt, nicht global. Die einzige Besonderheit: Die Anführungszeichen im Header-Wert müssen korrekt escaped werden.

Clear-Site-Data bringt 3 von 166 Punkten im Wolf-Agents Web Security Check. Die Implementierung dauert unter 10 Minuten und erfordert nur wenige Zeilen in der Nginx-Konfiguration.

1 Schritt 1 von 3

Location-Block für Logout erstellen

Erstellen Sie einen dedizierten location-Block für Ihren Logout-Endpoint. Der add_header mit always stellt sicher, dass der Browser die Daten auch bei Fehler-Responses löscht.

/etc/nginx/conf.d/clear-site-data.conf Logout
# Clear-Site-Data — nur auf dem Logout-Endpoint!
server {
    # Logout-Route (statischer Redirect)
    location /logout {
        add_header Clear-Site-Data '"cache", "cookies", "storage"' always;
        add_header Cache-Control "no-store" always;
        return 302 /;
    }

    # Alternative: Proxy zum Backend
    location /api/logout {
        proxy_pass http://backend;
        add_header Clear-Site-Data '"cache", "cookies", "storage"' always;
    }
}
Anführungszeichen in Nginx

Der Header-Wert "cache", "cookies", "storage" enthält Anführungszeichen, die Teil des HTTP-Wertes sind (RFC-Pflicht). In Nginx wird der gesamte Wert in einfache Quotes eingeschlossen: '"cache", "cookies", "storage"'.

2 Schritt 2 von 3

Cache-Control als Backup

Ergänzen Sie Cache-Control: no-store, um zu verhindern, dass die Logout-Response selbst im Browser-Cache oder einem Proxy-Cache gespeichert wird. Ohne diesen Header könnte ein Reverse Proxy die Logout-Response cachen und bei nachfolgenden Requests aus dem Cache ausliefern — ohne den Clear-Site-Data Header.

Setzen Sie Clear-Site-Data niemals im globalen server-Block. Der Header muss auf den Logout-Endpoint beschränkt bleiben — auf normalen Seiten würde er die aktive Session des Nutzers zerstören.
3 Schritt 3 von 3

Konfiguration testen und laden

Prüfen Sie die Nginx-Konfiguration auf Syntaxfehler und laden Sie sie neu. Testen Sie anschließend mit curl oder den Browser DevTools, ob der Header korrekt gesetzt wird.

Konfiguration prüfen und neu laden:
sudo nginx -t && sudo systemctl reload nginx
Header überprüfen:
curl -I https://ihre-domain.de/logout | grep -i clear
Testen Sie auch in den Browser DevTools: Network-Tab öffnen, Logout durchführen, Response-Header der Logout-Request prüfen. Der Header Clear-Site-Data: "cache", "cookies", "storage" muss in der Response erscheinen.

Wie steht Ihre Domain bei Clear-Site-Data?

Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.

Häufig gestellte Fragen

Warum müssen die Anführungszeichen im Nginx-Clear-Site-Data Header escaped werden?

Die Werte von Clear-Site-Data müssen in Anführungszeichen stehen (z.B. "cache"), was Teil des Header-Wertes ist. In der Nginx-Konfiguration wird der gesamte Header-Wert bereits in einfache Anführungszeichen eingeschlossen. Die inneren Anführungszeichen sind daher keine Nginx-Syntax, sondern Teil des HTTP-Header-Wertes und müssen so stehen bleiben.

Soll Clear-Site-Data im globalen server-Block oder in einem location-Block stehen?

Ausschließlich im location-Block für den Logout-Endpoint. Im globalen server-Block würde der Header auf jeder Response gesetzt — das zerstört die Session bei jedem Seitenaufruf. Beschränken Sie Clear-Site-Data auf location /logout oder location /api/logout.

Brauche ich das always-Keyword beim add_header für Clear-Site-Data?

Ja. Ohne always setzt Nginx den Header nur bei erfolgreichen Responses (2xx/3xx). Da Logout-Endpoints gelegentlich Fehler-Statuscodes zurückgeben, stellt always sicher, dass der Browser die Daten auch bei 4xx/5xx-Responses löscht.

Funktioniert Clear-Site-Data mit proxy_pass zu einem Backend?

Ja. Setzen Sie add_header Clear-Site-Data im gleichen location-Block wie den proxy_pass. Nginx fügt den Header zur Upstream-Response hinzu. Beachten Sie: Wenn das Backend den Header bereits setzt, kann es zu doppelten Headern kommen — prüfen Sie dies mit curl -I.

Wie teste ich, ob Clear-Site-Data auf meinem Nginx-Logout-Endpoint funktioniert?

Testen Sie mit curl -I https://ihre-domain.de/logout und prüfen Sie die Response-Header. Alternativ: Browser DevTools öffnen, Network-Tab, Logout durchführen und die Response-Header der Logout-Request inspizieren. Der Header Clear-Site-Data: "cache", "cookies", "storage" muss in der Response erscheinen.