今天看到服务器返回的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);

本文来自:http://levi.cg.am/?p=3030