简单修改基础header,使服务器更安全
今天看到服务器返回的Response header有这么几条信息
Server:nginx/1.4.0
X-Powered-By:PHP/5.5.1
Content-Encoding:gzip
第一条展示了服务器使用的webserver,以及版本号
第二条展示了脚本语言以及版本号
第三条展示了通过gzip进行压缩
那么前两条无疑是将服务器的版本信息暴露出来了,如果在发行版本上出现什么BUG,无异将自己服务器漏洞暴露出来了。
让Nginx 关闭版本显示信息
Nginx 会在 http 头,或者出现错误页的时候会有醒目的版本号提示。
为了安全,可以关闭这些信息。
方法很简单,只需在 nginx.conf 的 http {} 里头加入 server_tokens 的参数
例如:
http {
include mime.types;
default_type application/octet-stream;
server_tokens off; #关闭版本显示
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
# ...
}
重载webserver
nginx reload
关闭gzip输出
引发这个思考是来自这么一个问题
php写了个无刷新输出缓存,但是当nginx设置了gzip压缩之后就无效了,如何设置php才能关闭当前页面的gzip输出呢?
我试图设置php.ini来关闭,不过不好使
ini_set('zlib.output_compression', 'off');
我想也许是因为我的gzip输出是通过nginx设置来的
当然也不能使用nginx关闭整站的gzip,我只希望关闭当前页面的gzip,那么我只能通过header输出来关闭gzip压缩
header('Content-Encoding: none'.PHP_EOL);