文档首页> 技术教程> Nginx 安全响应头与隐藏版本号

Nginx 安全响应头与隐藏版本号

发布时间:2026-07-02 12:16        更新时间:2026-07-02 19:46
默认配置下,Nginx 会在每个响应头里带上 Server: nginx/1.24.0 这样的版本号。版本暴露对攻击者是很有用的情报——对应的 CVE 漏洞清单等于白送。这篇把隐藏版本号和几个常用安全响应头一次配齐。 一、隐藏版本号 nginx.conf 的 http 段加一行: ``` server_tokens off; ``` 响应头会从 nginx/1.24.0 变成 nginx,只露软件名,error 页与 404 页脚里的版本字样也同步消失。想连名字都不给,需要编译 headers-more 模块,用 more_set_headers 指令改写 Server 头,一般站点做到 off 就够了。改完 nginx -t && nginx -s reload,用 curl -I 确认。 二、几个常用安全头 在 server 块统一添加: ``` add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; add_header Strict-Transport-Security "max-age=31536000" always; ``` 逐个说明:X-Frame-Options 禁止被第三方页面嵌 iframe,缓解点击劫持;X-Content-Type-Options 禁止浏览器嗅探文件类型,降低误解析风险;Strict-Transport-Security 就是 HSTS,让浏览器一年内只用 https 访问,防降级劫持;Referrer-Policy 控制跳出去时携带多少来源信息。 add_header 有个继承特性要记牢:location 里一旦出现 add_header,server 层的头在该 location 不再生效。公共头统一写在 server 块,别散落各处,上线前抽首页、静态页、接口页各查一遍,继承断链最容易漏。取值也要和业务对齐:站点需要被合作方嵌 iframe 时,X-Frame-Options 就不能用 SAMEORIGIN 一刀切,先列清单再定头。 三、CSP 谨慎上 Content-Security-Policy(内容安全策略)能限制页面加载哪些来源的脚本,是防注入的利器,但规则复杂,配错会白屏。稳妥路径是先给同名头加 -Report-Only 后缀观察,浏览器只上报违规不真拦截,确认一段时间没有误伤再去掉后缀正式启用。这些头对接口同样生效,有历史客户端的老站点,推开前和前端约定一遍兼容性。 四、验证 ``` curl -sI https://example.com/ | grep -Ei "server|frame|strict" ``` 逐项确认头都在、版本号已隐。另一处容易忽略的暴露面是默认欢迎页和示例文件,装完顺手删掉——server_tokens off 只藏版本号,藏不住页面本身。安全响应头属于纵深防御的一环,能挡住大量低成本扫描,但不替代及时打补丁和最小权限这两件根本的事。