# 隐藏nginx版本号的安全性和方法
[TOC]
搭建好nginx或者apache,为了安全起见我们都会隐藏他们的版本号,这边讲的是nginx的版本号,如果你也想隐藏apache的版本号,那请点前面的链接。请看nginx版本号信息隐藏文章。
## 查看Nginx默认是显示版本号
~~~
curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.2.9
Date: Wed, 30 Dec 2015 01:44:34 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 03 Nov 2015 14:31:43 GMT
Connection: keep-alive
Accept-Ranges: bytes
~~~
这样就给别人看到服务器nginx版本是1.2.9,前些时间暴出了一些Nginx版本漏洞,就是说有些版本有漏洞,而有些版本没有。这样暴露出来的版本号就容易变成攻击者可利用的信息。所以,从安全的角度来说,隐藏版本号会相对安全些!
## 编辑nginx主配置文件
进入nginx配置文件的目录,在`http { }`段里加上`server_tokens off;` 如:
~~~
http {
server_tokens off;
include mime.types;
default_type application/octet-stream;
... 省略其他 ...
}
~~~
## 编辑php-fpm配置文件
如fastcgi.conf或fcgi.conf(这个配置文件名也可以自定义的,根据具体文件名修改):
找到:
`fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;`
改为:
`fastcgi_param SERVER_SOFTWARE nginx;`
## 测试、重载nginx配置
~~~
nginx -t
# 得到如下结果:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
## 重载配置
nginx -s reload
~~~
## 查看修改后的结果
### 修改前响应头信息如下
> Cache-control:private
Connection:keep-alive
Content-Type:text/html; charset=utf-8
Date:Wed, 30 Dec 2015 01:51:20 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Pragma:no-cache
Server:**nginx/1.2.9**
Transfer-Encoding:chunked
X-Powered-By:ThinkPHP
**修改前响应头效果如下图所示**
![](https://box.kancloud.cn/2015-12-30_56833fac1b246.png)
* * * * *
### 修改后响应头信息如下
> Cache-control:private
Connection:keep-alive
Content-Type:text/html; charset=utf-8
Date:Wed, 30 Dec 2015 01:53:11 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Pragma:no-cache
**Server:nginx**
Transfer-Encoding:chunked
X-Powered-By:ThinkPHP
**修改后响应头效果如下图所示**
![](https://box.kancloud.cn/2015-12-30_56833fb6abc60.png)