nginx中为https站点添加安全头需在server块内(与ssl配置同级)使用add_header ... always;,禁用http块全局配置;推荐组合包括hsts、x-content-type-options、x-frame-options、x-xss-protection和referrer-policy;csp须按实际资源定制,首次建议用report-only模式。

在 Nginx 中为响应头添加基础安全标头,核心是使用 add_header 指令,并确保它出现在正确的配置层级和上下文中。HTTPS 站点必须单独配置,不能依赖全局设置;HTTP 站点则需谨慎启用部分头(如 HSTS 不适用)。
只在 HTTPS 的 server 块中配置
安全头应与 SSL 配置共存于同一个 server 块内,且必须包含 always 参数,否则 301、404、500 等非 2xx 响应不会携带这些头,导致防护失效。
-
listen 443 ssl;和ssl_certificate必须已存在 -
add_header放在location外、server内任意位置均可(推荐紧贴 SSL 配置下方) - 避免写在
http块顶层——会误加给 HTTP 站点,可能引发 HSTS 错误或 CSP 白屏
推荐的基础安全头组合(HTTPS 站点)
以下配置兼顾兼容性与防护力,可直接复制使用:
-
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;强制浏览器一年内仅用 HTTPS 访问,含子域;上线前确认所有子站 HTTPS 可用 -
add_header X-Content-Type-Options "nosniff" always;阻止浏览器 MIME 类型嗅探,防资源类型混淆攻击 -
add_header X-Frame-Options "DENY" always;彻底禁止页面被嵌入 iframe,比SAMEORIGIN更严格,适合无嵌入需求的后台或管理页 -
add_header X-XSS-Protection "1; mode=block" always;启用浏览器内置 XSS 过滤器并阻断恶意渲染 -
add_header Referrer-Policy "strict-origin-when-cross-origin" always;平衡隐私与功能:同站传完整 referer,跨站降级为 origin,不泄露路径参数
Content-Security-Policy(CSP)不能照搬模板
CSP 是最易出错的安全头,必须按站点实际资源加载行为定制:
- 若页面引用 Google Fonts,需加入
font-src fonts.gstatic.com; - 若嵌了 YouTube 视频,需加入
frame-src youtube.com; - 若使用内联脚本或样式,避免
'unsafe-inline';改用nonce或哈希机制 - 首次上线建议先用
Content-Security-Policy-Report-Only,收集违规日志 1–2 周后再切正式策略
宝塔用户快速配置方式
无需手动编辑文件:
- 进入【网站】→ 点击目标站点【设置】→【配置文件】选项卡
- 在
server块内、location /上方或下方粘贴所需add_header ... always;行 - 保存后点击【重载配置】,Nginx 自动生效











