Skip to content

Nginx 隐藏版本号

728字约2分钟

Nginx

2024-04-03

我们使用Nginx进行代理时,所有的网络请求都是通过Nginx进行分发。而只要是软件那么都会有漏洞。 Nginx也再所难免会有一些漏洞,而Nginx也在不断进行版本迭代,那么我们就需要在对外访问的时候,避免外界获取到我们的 Nginx的版本。减少部分因为版本暴露而出现的攻击风险。(及时升级最新版本,安全性会更高。) 本篇介绍如何将我们的Nginx的版本号进行隐藏,避免受到外界攻击。

1、如何查询自己的服务器Nginx 版本是否隐藏

下面介绍不同环境下的查询方法

1.2、 windows环境下

我们可以通过浏览器访问网页,按F12进入检查模式,通过Network 面板可以看到当前页面的所有网络请求 随意找一个接口点击,通过弹出的请求详情中的Headers面板下的Response Headers可以看到下面的数据: 其中Server 后面就会显示你的nginx 的版本号了:

Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type,ADMIN-Authorization,API-Authorization
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Max-Age: 3600
Cache-Control: public,max-age=60,s-maxage=60
Content-Encoding: gzip
Content-Length: 3348
Content-Type: application/javascript
Date: Wed, 03 Apr 2024 06:45:10 GMT
Last-Modified: Tue, 02 Apr 2024 06:31:31 GMT
Server: nginx/1.24.0
Vary: Origin

上面的实例是 nginx版本号被暴露的实例, 如果隐藏版本号后就会显示成:Server: nginx 不会懈怠有版本号。

1.3、Linux 环境下

相较于windows的查询方法,Linux 查询可以直接通过 curl -I 网址 命令进行查询了。 例如查本站的效果:

[root@VM-16-8-opencloudos conf.d]# curl -I wujiwen.cn
HTTP/1.1 301 Moved Permanently
Server: nginx/1.24.0
Date: Wed, 03 Apr 2024 07:01:37 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive
Location: https://wujiwen.cn/

如果没有进行nginx 版本隐藏就会在nginx 后面加上版本号了。

2、隐藏Nginx 版本

隐藏方法比较简单:需要打开nginx.conf 配置文件。(通常情况下该文件目录在 /etc/nginx/nginx.conf) 切换到nginx.conf 文件所在目录下,使用vim nginx.conf 打开文件。(按I进入到编辑模式) 然后在server级别下添加: server_tokens off; 如果原先有server_tokens=on 就将值改为off,如果没有就添加整个。 实现效果如下:

http{
    ...
    server{
      listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;
        server_tokens off;  #添加这一项就可以了
        location / {
        }
        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }

	}   
}

添加完毕后,按Esc 键退出编辑模式,然后输入:wq 保存退出即可。 最后执行: nginx -s reload 重启nginx 就可以了。就能实现版本的隐藏了。 默认情况下,nginx 是不会隐藏版本号的。需要我们自己主动配置。