Nginx 隐藏版本号信息

当我们使用 apt 或者其他包管理工具安装完 Nginx 之后,访问网站时 Header 里面会默认携带 Nginx 的版本号信息。命令行下可以使用 curl -I http://your-domain 查看:

1
2
3
4
5
6
HTTP/2 200 
server: nginx/1.16.1 #这里带有版本号信息
date: Thu, 12 Sep 2019 03:06:23 GMT
content-type: text/html; charset=
cache-control: public
content-language: auto

而软件漏洞往往都是跟版本绑定的,在管理员没有及时更新修复漏洞的情况下,一旦攻击者知道了你用的 Nginx 版本就能轻松利用已知漏洞实现入侵。

这无疑是一个安全隐患,所以对版本号进行隐藏就一定必要了(当然,更新修复漏洞才是解决问题的根本途径)。

解决方法

要隐藏 Nginx 版本号其实很简单,稍微修改一下配置文件即可。这里使用 vim 编辑器:

1
sudo vim /etc/nginx/nginx.conf

http{} 段中添加一行 server_tokens off;

1
2
3
4
5
http {
......
server_tokens off;
......
}

之后保存文件,测试 Nginx 配置文件是否正常后重载配置即可

1
2
sudo nginx -t            #测试配置文件是否正常
sudo nginx -s reload #重载nginx配置

测试效果

配置好之后可以再用 curl 测试一下,会发现不再显示 Nginx 版本号了。

1
2
3
4
5
6
HTTP/2 200 
server: nginx #版本号信息没有了
date: Thu, 12 Sep 2019 03:32:16 GMT
content-type: text/html; charset=
cache-control: public
content-language: auto