Applies HTTP response security headers to every hosted site and reloads the web server. On nginx the headers go into a server-level include (/etc/nginx/vinza-headers/security-headers.conf) that every site vhost loads, plus helper maps under conf.d; on Apache they go into conf-enabled. All file writes, the nginx -t check and the reload run through the root agent, so the panel process itself never needs privilege — and on nginx a failed config test aborts the apply rather than reloading a broken server.
Two presets are built in. Moderate sets X-Frame-Options SAMEORIGIN, X-Content-Type-Options, X-XSS-Protection, a Referrer-Policy, a small Permissions-Policy and a one-year HSTS. Strict tightens those to DENY, strict-origin-when-cross-origin, a two-year HSTS (preload is a separate opt-in), and adds a restrictive default Content-Security-Policy. You can also submit an arbitrary header set, which is filtered against an allowlist of ten headers (the ones above plus the three Cross-Origin-* policies) — anything outside that list is silently dropped. A preset of none, or the remove action, deletes the snippet and reloads.
Currently active headers are read back by parsing the deployed snippet, so the UI reflects what is actually on disk rather than a stored copy. Note that despite the name, this is a global setting: the snippet applies to every site the web server hosts, there is no per-domain configuration, and the page is admin-gated for that reason.
OpenLiteSpeed is not supported for global headers — it has no equivalent http-level snippet. The plugin installs fine there but refuses the apply and points you at per-site .htaccess Header directives via each website's Web Rules, instead of writing to a nonexistent nginx path and failing the reload. Setting a strict CSP can break sites that rely on inline or third-party scripts, so it is worth testing before applying it across every hosted domain.
Use VinzaPanel's REST API to download and install this app programmatically.
POST /plugins/api/download/security-headers/ Content-Type: application/json { "panel_version": "1.0.0" }
{
"success": true,
"plugin_id": "security-headers",
"version": "1.1.2",
"download_url": "..."
}