Server-Rezept
Plesk erzeugt Ihre Webserver-Konfiguration, und es erzeugt sie neu, sobald sich irgendetwas an der Domain ändert. Es gibt genau eine Stelle, an der Ihre Direktiven das überstehen, und es ist nicht die Datei, die Sie zuerst gefunden haben.
01 Wohin es gehört
Plesk schreibt die nginx-Konfiguration jeder Domain in sein eigenes vhost-Verzeichnis und erzeugt diese Datei aus seiner Datenbank neu, sobald sich die Domain, ihre Hosting-Einstellungen oder ihr Zertifikat ändern. Änderungen dort werden nicht zusammengeführt, sie sind weg, und zwar meist Wochen später, wenn niemand mehr beide Ereignisse verbindet.
Die vorgesehene Stelle sind die Apache- und nginx-Einstellungen der Domain, im Feld für zusätzliche nginx-Direktiven. Plesk speichert den Text und bindet ihn als vhost_nginx.conf in den Server-Block ein, den es generiert. Auf der Kommandozeile liegt dieselbe Datei im conf-Verzeichnis der Domain und greift nach einem Reconfigure. So oder so bearbeiten Sie eine Einbindung, die Plesk kennt, statt Ausgabe, die ihm gehört.
02 Das Rezept
Ein sicherer Ausgangspunkt für eine Seite, die Plesk mit nginx davor ausliefert. Die Direktiven kommen ohne umgebenden Server-Block hinein: Plesk setzt sie in den, den es für die Domain erzeugt.
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header Content-Security-Policy "default-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'" always;
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), camera=(), microphone=(), payment=(), usb=()" always; Zwei Anpassungen, bevor das Ihres ist. Die Content-Security-Policy erlaubt nichts von Dritten, eingebundene Karten, Schriften oder Analyse werden also blockiert, und sie sollte zuerst im Report-Only-Modus rausgehen. Und läuft die Domain mit Apache hinter nginx im Proxy-Modus, prüfen Sie, ob Ihre Anwendung oder eine .htaccess dieselben Header sendet, denn dann gehen beide raus.
03 Zeile für Zeile
Jede Direktive aus dem Block oben einzeln, damit Sie weglassen können, was nicht zu Ihrer Seite passt, statt etwas einzufügen, das Sie nicht erklären können.
Strict-Transport-Security Was sie macht. Legt Browser darauf fest, Ihre Seite zwei Jahre lang nur über HTTPS zu erreichen. Plesk kann HSTS auch je Domain in seinen SSL/TLS-Einstellungen einschalten; nutzen Sie das, lassen Sie diese Zeile weg, statt den Header zweimal zu setzen.
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always; Content-Security-Policy Was sie macht. Fangen Sie hiermit an und nicht mit der erzwingenden Fassung. Report-Only ändert für Besucher nichts, sagt Ihnen aber, was eine strenge Richtlinie blockiert hätte, und auf einem über ein Panel verwalteten Server wissen Sie selten alles, was die Seite lädt.
add_header Content-Security-Policy "default-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'" always;
add_header Content-Security-Policy-Report-Only "default-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; report-uri /csp-report" always; X-Frame-Options Was sie macht. Verhindert, dass Ihre Seiten irgendwo in einem Rahmen eingebettet werden. Nehmen Sie SAMEORIGIN, wenn ein Teil Ihrer eigenen Seite einen anderen einbettet.
add_header X-Frame-Options "DENY" always; X-Content-Type-Options Was sie macht. Sagt dem Browser, Ihren angegebenen Inhaltstypen zu vertrauen, statt zu raten. Es gibt keine Seite, auf der dieser Wert falsch wäre.
add_header X-Content-Type-Options "nosniff" always; Referrer-Policy Was sie macht. Sendet die vollständige Adresse innerhalb Ihrer eigenen Seite und nach außen nur die bloße Domain. Der Wert für nahezu jede öffentliche Website.
add_header Referrer-Policy "strict-origin-when-cross-origin" always; Permissions-Policy Was sie macht. Schaltet Kamera, Mikrofon, Standort, Bezahlfunktion und USB-Zugriff für Ihre Seiten und alles Eingebettete ab. Erweitern Sie die Liste, statt sie zu kürzen: Funktionen, die Sie nicht nennen, bleiben verfügbar.
add_header Permissions-Policy "geolocation=(), camera=(), microphone=(), payment=(), usb=()" always; 04 Nachprüfen
Speichern im Panel wendet die Änderung für Sie an. Die Datei über SSH zu bearbeiten nicht: Plesk muss den Server-Block neu bauen, bevor nginx Ihre Einbindung sieht, und bis dahin liegt die Datei da, sieht richtig aus und tut nichts.
plesk sbin httpdmng --reconfigure-domain example.com curl -sI https://example.com | grep -i "^strict-transport\|^content-security\|^x-frame" curl -sI https://example.com/logo.png | grep -i "^x-content-type" Prüfen Sie ein Bild oder ein Stylesheet und nicht nur eine Seite. Ist die intelligente Auslieferung statischer Dateien eingeschaltet, bedient nginx diese aus einer eigenen Location, und die nginx-Vererbungsregel gilt auch hier: eine Location mit eigenem add_header verwirft jeden geerbten.
05 Fragen
Weil Plesk diese Datei aus seiner Datenbank neu erzeugt, sobald sich irgendetwas an der Domain ändert, auch bei einer Zertifikatserneuerung, die Sie nie angefasst haben. Die Direktiven gehören in das Feld für zusätzliche nginx-Direktiven oder in vhost_nginx.conf; beides bindet Plesk ein, statt es zu besitzen.
Nur, wenn nginx nicht davor sitzt, was es auf einer Standard-Plesk-Installation tut. Im Proxy-Modus reicht nginx die Anfrage an Apache weiter, und beide Ebenen können Header ergänzen, Sie bekommen also Doppelungen. Nehmen Sie die äusserste Ebene, also nginx, und lassen Sie das Apache-Feld in Ruhe.
Nein, das Feld hängt an der einzelnen Domain und muss für jede wiederholt werden. Auf einem Server mit vielen Domains ist ein Service-Plan oder eine serverweite nginx-Konfigurationsdatei weniger Pflege, prüfen Sie danach aber nach dem nächsten Plesk-Upgrade, ob sie noch eingebunden wird.
Plesk fährt vor dem Speichern einen echten nginx-Konfigurationstest, der Fehler ist also echt und keine Eigenart des Panels. Die üblichen Ursachen sind ein überflüssiger Server-Block um die Direktiven, ein nicht maskiertes Semikolon in einem Header-Wert oder eine Direktive, die auf dieser Ebene nicht erlaubt ist.
06 Im Detail
Diese Seite ist die Konfiguration. Diese Ratgeber erklären, was jeder Header wirklich macht und wie Sie seinen Wert wählen.
Was jeder Response-Header bewirkt, welche Ihre Website senden sollte und wie Sie sie richtig konfigurieren.
Der stärkste Schutz gegen Cross-Site-Scripting: welche Direktiven Sie setzen, wie Sie eine Richtlinie im Report-Only-Modus einführen und wie Sie erzwingend werden, ohne Ihre Website zu zerlegen.
Strict-Transport-Security erklärt: was max-age, includeSubDomains und preload wirklich bewirken und warum die Preload-Liste eine Entscheidung ist, die Sie nicht schnell zurücknehmen können.
Secure, HttpOnly und SameSite: die Cookie-Attribute, die eine Sitzung vor Skripten und fremden Seiten schützen, samt Einstellungen für einen typischen Stack.
Wie eine unsichtbare Überlagerung aus einem Besucherklick eine Aktion auf Ihrer Website macht, und die zwei Header, die das verhindern: X-Frame-Options für ältere Clients, frame-ancestors für alles andere.
Welcher Teil Ihrer URLs an fremde Seiten geht, wenn ein Besucher weiterklickt: die fünf Werte, die zählen, was jeder davon preisgibt und welcher der sinnvolle Standard ist.
Kamera, Mikrofon, Standort und Bezahlfunktion für Ihre Website und alle eingebetteten Inhalte abschalten: die Syntax der Positivliste und warum eine nicht genannte Funktion keine abgeschaltete Funktion ist.
Die Einträge, die verhindern, dass jemand in Ihrem Namen Mails verschickt, und der, der Ihre DNS-Antworten ehrlich hält: was jeder leistet und in welcher Reihenfolge Sie sie einführen.
Die Datei, die Sicherheitsforschern sagt, wohin eine Schwachstelle gemeldet wird. Zwei Pflichtfelder, zehn Minuten Arbeit, und der Unterschied zwischen einer privaten und einer öffentlichen Meldung.
Ein Header, der heute stimmt, kann nach dem nächsten Deploy fehlen. Drei Wege, das zu bemerken: ein Cronjob mit curl, eine Prüfung in Ihrer CI-Pipeline und ein geplanter Scan, jeweils mit dem, was er findet und was nicht.
Wie sich eine Richtlinie durch Deploys, Plugins und CDN-Regeln unbemerkt ändert und wie Sie es merken: ein Header-Diff, Verstoßmeldungen über report-to und was ein Scan-Vergleich zeigen kann und was nicht.
Weiterlesen
Jeder Ratgeber steht für sich, zusammen decken sie ab, worauf unser Scanner schaut. Wählen Sie den, der Ihrer nächsten Frage am nächsten kommt.
Unser kostenloser Quickscan liest die Header aus Ihrer ausgelieferten Antwort und nicht aus Ihrem Panel, und erklärt jeden Befund verständlich.