Reporting API für Nginx konfigurieren
Report-To, NEL und Reporting-Endpoints auf Nginx einrichten — mit korrektem JSON-Escaping, proxy_pass für den Report-Endpoint und fertiger Konfiguration zum Kopieren.
Reporting API auf Nginx
Nginx setzt Report-To, NEL und Reporting-Endpoints nativ über die add_header-Direktive. Die Hauptherausforderung liegt im korrekten JSON-Escaping: Report-To und NEL erwarten JSON-Objekte als Header-Werte, die in Nginx-Konfigurationsdateien korrekt in einfache Anführungszeichen eingeschlossen werden müssen. Für den Report-Endpoint selbst benötigen Sie ein Backend — Nginx kann Reports über proxy_pass weiterleiten. Verwenden Sie immer das always-Keyword, damit die Reporting-Header auch bei Fehlerseiten (404, 500) gesetzt werden.
Die Reporting API bringt 4 von 166 Punkten im Wolf-Agents Web Security Check. Nach der Konfiguration: Scannen Sie Ihre Domain, um zu verifizieren, dass die Header korrekt gesetzt sind.
Report-To und NEL Header setzen
Fügen Sie die drei Reporting-Header in Ihren server-Block ein. Report-To definiert die Endpoint-Gruppen als JSON, NEL aktiviert Network Error Logging und Reporting-Endpoints registriert moderne Report-Endpoints.
# Report-To für NEL (komma-separierte JSON-Objekte)
add_header Report-To '{"group":"nel","max_age":31536000,"endpoints":[{"url":"https://reports.example.com/nel"}]}, {"group":"default","max_age":31536000,"endpoints":[{"url":"https://reports.example.com/default"}]}' always;
# NEL aktivieren
add_header NEL '{"report_to":"nel","max_age":31536000,"include_subdomains":true,"failure_fraction":1.0,"success_fraction":0.01}' always;
# Reporting-Endpoints für moderne Browser
add_header Reporting-Endpoints 'default="https://reports.example.com/default", csp="https://reports.example.com/csp"' always;
# CSP mit Reporting
add_header Content-Security-Policy "default-src 'self'; report-to csp" always; Die JSON-Strings werden in einfache Anführungszeichen eingeschlossen. Innerhalb des JSON verwenden Sie normale doppelte Anführungszeichen. Das always-Keyword stellt sicher, dass die Header auch bei Fehlerseiten (404, 500) gesetzt werden.
sudo nginx -t && sudo systemctl reload nginx Report-Endpoint per Proxy anbinden
Nginx kann JSON-Reports nicht selbst verarbeiten. Richten Sie einen location-Block ein, der eingehende Reports an Ihr Backend oder einen externen Reporting-Service weiterleitet. Browser senden Reports als POST mit dem Content-Type application/reports+json.
# Report-Endpoint an Backend weiterleiten
location /api/reports {
# CORS für Browser-Reports (Cross-Origin)
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "POST" always;
add_header Access-Control-Allow-Headers "Content-Type" always;
if ($request_method = OPTIONS) {
return 204;
}
# An Backend weiterleiten
proxy_pass http://127.0.0.1:3000;
proxy_set_header Content-Type $content_type;
} Browser senden Reporting-API-Reports Cross-Origin — auch wenn der Endpoint auf derselben Domain liegt. Ohne CORS-Header lehnt der Browser die Zustellung ab und die Reports gehen verloren.
Header verifizieren
Prüfen Sie nach dem Reload, ob alle drei Header korrekt gesetzt werden. Verwenden Sie curl oder die Chrome DevTools (Application Panel > Reporting API).
# Alle Reporting-Header prüfen
curl -sI https://ihre-domain.de | grep -iE "report-to|nel|reporting-endpoints"
# Erwartete Ausgabe:
# Report-To: {"group":"nel",...}, {"group":"default",...}
# NEL: {"report_to":"nel",...}
# Reporting-Endpoints: default="...", csp="..." chrome://net-internals/#reporting zur Diagnose. sudo nginx -t && sudo systemctl reload nginx Wie steht Ihre Domain bei Reporting API?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.
Häufig gestellte Fragen
Wie escape ich JSON in Nginx add_header korrekt?
Verwenden Sie einfache Anführungszeichen um den gesamten JSON-Wert. Innerhalb des JSON nutzen Sie normale doppelte Anführungszeichen. Beispiel: add_header Report-To '{"group":"nel","max_age":31536000,"endpoints":[{"url":"https://example.com/nel"}]}' always;
Warum brauche ich das always-Keyword?
Ohne always setzt Nginx den Header nur bei erfolgreichen Responses (2xx/3xx). Mit always wird der Header auch bei Fehlerseiten (404, 500) gesetzt — wichtig, weil Angreifer gezielt Fehlerseiten für XSS nutzen und Sie auch dort Reporting benötigen.
Kann ich den Report-Endpoint direkt in Nginx hosten?
Nein. Nginx allein kann keine JSON-Reports verarbeiten. Sie benötigen ein Backend (Node.js, Python, Go etc.) oder einen externen Reporting-Service. Nginx kann Reports aber über proxy_pass an Ihr Backend weiterleiten.
Welche Browser unterstützen Report-To und NEL?
Report-To, NEL und Reporting-Endpoints werden ausschließlich von Chromium-basierten Browsern unterstützt — Chrome 70+, Edge 79+ und Opera. Firefox und Safari implementieren keinen dieser Header.
Werden Report-To und Reporting-Endpoints gleichzeitig benötigt?
Ja. Report-To ist für NEL (Network Error Logging) zwingend erforderlich, da NEL den neueren Reporting-Endpoints Header nicht unterstützt. Reporting-Endpoints wird für CSP-Violations und andere moderne Report-Typen verwendet. Beide Header parallel zu setzen ist die empfohlene Praxis.