Nginx精细化安全响应头配置是成本最低、见效最快的Web安全加固方式,必须配全Strict-Transport-Security、X-Frame-Options、X-Content-Type-Options、Content-Security-Policy、Referrer-Policy和Permissions-Policy六大头部,并统一写入独立配置文件,配合always参数、HTTPS上下文及server_tokens off等基础防护形成纵深防御。

直接在 Nginx 中配置精细化的安全响应头,是成本最低、见效最快的 Web 安全加固方式。它不依赖额外组件,靠浏览器自身安全机制拦截 XSS、点击劫持、MIME 嗅探等常见攻击,关键在于选对头、设对值、放对位置。
核心响应头必须配全
这六个响应头构成基础防线,缺一不可,建议统一写入独立配置文件(如 /etc/nginx/snippets/security-headers.conf),再在 server 块中 include:
-
Strict-Transport-Security:强制 HTTPS,防降级攻击。值设为
max-age=31536000; includeSubDomains; preload,上线前确认已提交至 HSTS 预加载列表 -
X-Frame-Options:防点击劫持。优先用
SAMEORIGIN;若需跨域嵌入,改用ALLOW-FROM https://trusted.example.com -
X-Content-Type-Options:禁用 MIME 嗅探。固定值
nosniff,防止 .html 被当 .js 执行 -
Content-Security-Policy:最有力的 XSS 防御。不要直接复制示例,先用
Content-Security-Policy: default-src 'self'; report-uri /csp-report开启报告模式,收集违规日志后再收紧策略 -
Referrer-Policy:保护跳转隐私。生产环境推荐
strict-origin-when-cross-origin,既保留必要来源信息,又不泄露路径参数 -
Permissions-Policy:限制敏感 API。按需关闭,例如
geolocation=(), microphone=(), camera=(), payment=(),避免被恶意 iframe 调用
配置细节决定实际效果
光加 header 不够,位置和修饰符影响生效逻辑:
- 所有安全头都应加
always参数,否则在 301/302 或错误页中可能丢失。例如:add_header X-Frame-Options "SAMEORIGIN" always; - CSP 和 HSTS 必须放在 HTTPS server 块里,HTTP 块中配置 HSTS 无效
- 避免在 location 块中重复定义同一 header,Nginx 会覆盖而非合并;如有例外(如 API 接口允许 script-src 'unsafe-inline'),应在对应 location 单独覆盖
- 使用
more_clear_headers(需安装 headers-more 模块)移除默认 Server、X-Powered-By 等泄露头,减少指纹暴露
配合其他安全动作形成纵深
响应头只是第一层,需与基础防护联动才能真正落地:
- 先关掉版本号:
server_tokens off;,避免暴露 Nginx 版本漏洞线索 - 禁用目录浏览:
autoindex off;,防止 .git、.env 等敏感文件被列出来 - 限制上传大小:
client_max_body_size 10m;,阻断大文件上传类 DoS 攻击 - 搭配限流:
limit_req_zone $binary_remote_addr zone=csp_limit:10m rate=10r/s;,对频繁触发 CSP 违规的 IP 自动限速,辅助识别扫描行为


















