nginx 安全响应头的具体使用

 更新时间:2026年08月11日 15:11:17   作者:JiaWen技术圈  
在Web安全防护中,配置是成本最低、效果最好的防御手段之一,它们通过在 HTTP 响应中加入特定的指令,告知浏览器开启内置的安全保护机制,从而有效防御等常见威胁,下面就来详细的介绍一下nginx 安全响应头的实现,感兴趣的可以了解一下

在 Web 安全防护中,配置 HTTP 安全响应头(Security Headers) 是成本最低、效果最好的防御手段之一。它们通过在 HTTP 响应中加入特定的指令,告知浏览器开启内置的安全保护机制,从而有效防御 XSS(跨站脚本)Clickjacking(点击劫持)Mitm(中间人攻击) 等常见威胁。

以下是 Nginx 中最推荐配置的 6 个核心安全响应头及其详细介绍。

1. 核心安全响应头详解

响应头名称核心作用推荐配置值防御的攻击类型
Strict-Transport-Security (HSTS)强制浏览器只能通过 HTTPS 访问该网站,杜绝 HTTP 降级攻击。max-age=31536000; includeSubDomains; preload中间人劫持、SSL 剥离
X-Frame-Options控制当前页面是否允许被嵌入到 <iframe> 中。SAMEORIGIN(仅允许同源嵌入)点击劫持 (Clickjacking)
X-Content-Type-Options禁用浏览器的 MIME 类型猜测(Sniffing),强制严格按照 Content-Type 渲染。nosniff恶意文件伪装、XSS 攻击
Content-Security-Policy (CSP)极其强大的安全策略,限制浏览器只能加载特定受信源的资源(脚本、样式、图片等)。需根据业务定制,如:default-src 'self'; script-src 'self' 'unsafe-inline';XSS 攻击、数据注入
Referrer-Policy控制用户点击链接离开当前网站时,重定向请求中带有的 Referer 隐私信息量。no-referrer-when-downgrade 或 strict-origin-when-cross-origin用户隐私泄露、信息窃取
Permissions-Policy限制浏览器在当前页面可以使用哪些硬件或敏感 API(如摄像头、麦克风、地理位置)。geolocation=(), microphone=(), camera=()隐私窃取、越权访问

2. Nginx 配置标准模板

依托我们在上一次对话中提到的模块化最佳实践,建议将这些安全响应头统一写在一个独立的文件中(例如 /etc/nginx/snippets/security-headers.conf),内容如下:

# 1. 开启 HSTS(有效期 1 年,包含子域名,允许预加载)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# 2. 防御点击劫持:只允许同域名的 iframe 嵌套
add_header X-Frame-Options "SAMEORIGIN" always;
# 3. 禁用 MIME 猜测:防止黑客将恶意脚本伪装成图片上传并执行
add_header X-Content-Type-Options "nosniff" always;
# 4. 限制 Referer 信息传递
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# 5. 权限控制:禁用不必要的浏览器硬件调用
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;
# 6. 内容安全策略 (CSP) —— 这是一个基础模版,复杂的网站需要根据实际引用的外链进行调整
add_header Content-Security-Policy "default-src 'self' *.yourdomain.com; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; frame-ancestors 'self';" always;

⚠️ 关键细节:为什么要加 always?
Nginx 默认只在返回 200, 201, 204, 301, 302 等正常状态码时才会添加自定义响应头。如果发生 404 或 500 报错,这些安全头就会丢失。加上 always 参数可以确保无论返回什么状态码,安全响应头都雷打不动地存在。

然后在你的虚拟主机(如 sites-available/example.com.conf)中一键引入:

server {
    listen 443 ssl;
    server_name example.com;
    # 一键加载安全响应头
    include snippets/security-headers.conf;
    location / {
        proxy_pass http://localhost:8080;
    }
}

3. 配置后的验证与测试

配置完成后,请务必执行以下两步验证:

  1. 语法检查并重载
nginx -t && nginx -s reload
  1. 安全评级测试:
    你可以访问国际权威的线上测试网站 Security Headers,输入你的域名进行扫描。如果严格按照上述配置,你的网站安全评级可以直接拿到 A 甚至 A+。

在这些安全头中,Content-Security-Policy (CSP) 的配置是最容易“翻车”的,如果策略写得过于严格,可能会导致你网站原本正常的外链图片、第三方统计脚本(如百度统计、谷歌分析)被浏览器直接拦截。

到此这篇关于nginx 安全响应头的具体使用的文章就介绍到这了,更多相关nginx 安全响应头内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • nginx校验指定conf文件是否正确的方法

    nginx校验指定conf文件是否正确的方法

    校验 Nginx 指定配置文件的语法是否正确,是保证 Nginx 服务稳定运行的关键一步,可以使用 Nginx 内置的 -t 测试参数,配合 -c 参数来指定配置文件,下面小编给大家详细介绍一下,需要的朋友可以参考下
    2025-08-08
  • Nginx反向代理的location路径映射方式

    Nginx反向代理的location路径映射方式

    这篇文章主要介绍了Nginx反向代理的location路径映射方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Nginx源码编译安装过程记录

    Nginx源码编译安装过程记录

    本文给大家分享Nginx源码编译安装过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • 使用nginx+lua进行token鉴权的方法

    使用nginx+lua进行token鉴权的方法

    使用nginx和lua脚本实现对Minio服务器图片链接的token鉴权,通过反向代理隐藏真实IP,增强安全性,介绍了整个鉴权流程,包括nginx配置和lua脚本的具体实现,适用于需要保护图片不被未授权访问的场景
    2022-05-05
  • Linux下Nginx安装教程

    Linux下Nginx安装教程

    这篇文章主要为大家详细介绍了Linux中Nginx的安装教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 使用Docker主机启动Nginx服务器的完整步骤详解

    使用Docker主机启动Nginx服务器的完整步骤详解

    Docker是一个开源的容器化平台,用于轻松地打包、部署和运行应用程序,而Nginx是一个高性能的开源反向代理服务器,也是一个流行的Web服务器,这篇文章主要给大家介绍了关于使用Docker主机启动Nginx服务器的完整步骤,需要的朋友可以参考下
    2024-07-07
  • CentOS如何用nginx搭建文件下载服务器

    CentOS如何用nginx搭建文件下载服务器

    Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,这篇文章主要介绍了CentOS用nginx搭建文件下载服务器,需要的朋友可以参考下
    2023-11-11
  • Nginx日志切割及配置全过程

    Nginx日志切割及配置全过程

    本文详细介绍了使用Logrotate管理Nginx日志的方法,包括ginx日志管理、Logrotate配置及定时任务设置,帮助开发者轻松应对日志文件过大问题
    2026-06-06
  • Nginx如何设置域名转发到服务器指定的端口

    Nginx如何设置域名转发到服务器指定的端口

    这篇文章主要介绍了Nginx如何设置域名转发到服务器指定的端口,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • Nginx配置常用参数梳理(看这一篇就够了)

    Nginx配置常用参数梳理(看这一篇就够了)

    这篇文章主要为大家介绍了Nginx配置常用参数梳理总结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论