每个流行的软件都会或多或少有些漏洞会被人利用,做一些见不得人的事情。Nginx 作为全球使用率非常高的 web 服务器,安全性必须引起重视。

这里我们从最基础的安全措施开始,讲下如何隐藏Nginx的版本号。

默认情况下,如何查看版本

bubble@ubuntu:~$ curl -I -L http://www.163stack.com
HTTP/1.1 301 Moved Permanently
Server: nginx/1.12.0    ###这里我们可以看出目前使用的是1.12.0版本
Date: Fri, 16 Jun 2017 08:33:05 GMT
Content-Type: text/html
Content-Length: 185
Connection: keep-alive
Location: https://www.163stack.com/

HTTP/1.1 200 OK
Server: nginx/1.12.0
Date: Fri, 16 Jun 2017 08:33:07 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 19370
Connection: keep-alive
Cache-Control: max-age=600
ETag: W/"4baa-5JmjGvjm/s8kcgkYiqZy4oAZcPE"
Vary: Accept-Encoding
Expires: Fri, 16 Jun 2017 08:43:07 GMT
X-Cache: MISS

如何通过最简单的方式隐藏 Nginx 版本号

这里我们需要提到一个 nginx 的核心参数 server_tokes

语法: server_tokens on | off | build | string ;

默认值: server_tokens on;

上下文: http, server, location

server_tokes 参数可以禁用或启用 nginx 在错误页面和 HTTP 响应头里面显示版本信息。nginx 若在编译的时候使用了 --build=name 参数,当 server_tokes build; 时,则 server 显示为 build_name + version numbers 。自 1.9.13 版本,nginx 企业版新增了 string 参数,该参数的值将会替换默认显示nginx 为你指定的值。

具体的修改方法也很简单,若要全局修改,编辑 nginx.conf ,在 http { ... } 区段添加 server_tokens off; , reload 或者 restart nginx 即可。