nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > Nginx 隐藏Server版本信息

Nginx 配置 proxy_hide_header 隐藏后端 Server 的版本信息的实现

作者:冷漠man

Nginx反向代理场景中,后端服务常会在响应头中暴露版本信息,使用proxy_hide_header指令可以在Nginx层将其过滤掉,本文就来详细的介绍一下Nginx隐藏后端 Server 的版本信息的实现,感兴趣的可以了解一下

在 Nginx 反向代理场景中,后端服务(如 Apache、Tomcat、Node.js 等)常会在响应头中携带 Server、X-Powered-By 等字段暴露版本信息。使用 proxy_hide_header 指令可以在 Nginx 层将其过滤掉。

为什么 proxy_hide_header Server 通常不起作用

Nginx 默认会将上游响应中的 Server 头视为“受信响应头”,即使你写了 proxy_hide_header Server,它仍可能被透传或被 Nginx 自动重写。尤其当后端是标准 Web 服务器(如 Apache、Tomcat)且未禁用自身 Server 头时,Nginx 的隐藏逻辑容易被绕过。

真正起效的方式是:让后端不发 Server 头 + 让 Nginx 不添加自己的 Server 头 + 主动清除残留。

基础配置

在 location、server 或 http 块中添加:

location / {
    proxy_pass http://backend;
    # 隐藏后端 Server 版本(如 Apache/2.4.41、nginx/1.18.0 等)
    proxy_hide_header Server;
    # 隐藏其他可能暴露技术栈的头部
    proxy_hide_header X-Powered-By;
    proxy_hide_header X-AspNet-Version;
    proxy_hide_header X-Runtime;
}

完整安全加固示例

server {
    listen 80;
    server_name example.com;
    # 1. 隐藏 Nginx 自身版本号(响应头中只显示 "nginx" 而不显示版本)
    server_tokens off;
    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        # 2. 隐藏后端暴露的头部
        proxy_hide_header Server;
        proxy_hide_header X-Powered-By;
        # 3. 可选:添加安全响应头
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Content-Type-Options "nosniff" always;
    }
}

关键指令说明

指令作用范围说明
proxy_hide_header Server反向代理移除后端返回的 Server 头(如 Apache/2.4.41)
server_tokens offNginx 自身隐藏 Nginx 版本号,错误页面也不显示版本
more_clear_headers ServerNginx 自身需要 headers-more-nginx-module 模块,可完全移除 Server 头

注意事项

proxy_hide_header 只影响后端返回的头:如果要完全移除 Nginx 自身的 Server: nginx 头,需要安装第三方模块 headers-more-nginx-module:

more_clear_headers Server;

检查是否生效:

curl -I http://example.com

确认响应头中不再包含 ServerX-Powered-By

如果后端是 Nginx:后端也需要配置 server_tokens off;,否则它会将带版本的 Server 头传给前端 Nginx。

这样配置后,响应头中的服务器版本信息就会被有效隐藏,减少被针对性扫描攻击的风险。

到此这篇关于Nginx 配置 proxy_hide_header 隐藏后端 Server 的版本信息的文章就介绍到这了,更多相关Nginx 隐藏Server版本信息内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文