2018-01-19Nginx服务器中的gzip配置参数详解及其注意点

您现在的位置是: 首页 > Linux技术 > Nginx服务器中的gzip配置参数详解及其注意点

355次阅读


gzip官方文档说明:https://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip

站长工具进行测试:http://tool.chinaz.com/Gzips/


对于多数以文本为主的站点来说,文本自身内容占流量的绝大部分。虽然单个文本体积并不算大,但是如果数量众多的话,流量还是相当可观。启用gzip以后,可以大幅度减少所需的流量。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会以“.gz”扩展名。Nginx中的gzip模块是内置的,当我们需要使用gzip时,只需要在/usr/local/nginx/nginx.conf中添加一下即可,现在99.99%的浏览器基本上都支持gzip解压了


gzip是一种压缩技术,经过gzip压缩后的网站页面大小可以变成原来的30%或者更小。所以用户浏览经过gzip压缩的页面时候速度也会更快,gzip的压缩页面需要服务端于浏览器同时支持,服务端压缩,浏览器进行解压并解析,现在99.99%浏览器都已经支持解析gzip过的页面,gzip使用环境:http,server,location,if(x),一般我把它放置在nginx.conf的http{…}之间,这样的好处是整个服务器上的所有站点都可以使用到了gzip


一、开启gzip有什么好处?


gzip开启以后会将输出到用户浏览器的数据进行压缩的处理,这样就会减小通过网络传输的数据量,提高浏览的速度,节省服务器的带宽。


二、配置指令详细讲解


gzip on; 
# 开启gzip,off关闭

gzip_min_length 1k;
# 默认值: 0 ,不管页面多大都压缩
# 设置允许压缩的页面最小字节(从header头的Content-Length中获取)建议大于1k,不到1K的文件不压缩

gzip_buffers 4 16k;
# 以16k为单位,按照原始数据大小以16k为单位的4倍申请内存

gzip_http_version 1.1;
# 可选项,现在默认都为1.1,识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码

gzip_comp_level 6;
# 等级 1-9 最小的压缩最快,但是等级越高越消耗CPU,建议值为4-6

gzip_types text/plain application/x-javascript text/css application/xml;
# 匹配压缩类型,可以通过 more /usr/local/nginx/conf/mime.types 查看gzip支持哪些类型

gzip_vary on;
# 启用应答头"Vary: Accept-Encoding",这个和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩

gzip_proxied off;
# nginx做为反向代理时启用,
# off(关闭所有代理结果的数据的压缩),
# expired(启用压缩,如果header头中包括"Expires"头信息),
# no-cache(启用压缩,header头中包含"Cache-Control:no-cache"),
# no-store(启用压缩,header头中包含"Cache-Control:no-store"),
# private(启用压缩,header头中包含"Cache-Control:private"),
# no_last_modefied(启用压缩,header头中不包含"Last-Modified"),
# no_etag(启用压缩,如果header头中不包含"Etag"头信息),
# auth(启用压缩,如果header头中包含"Authorization"头信息)

gzip_disable "MSIE [1-6].";
# (禁用IE6以下浏览器的gzip压缩)指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库



三、F12打开浏览器控制台


当Response Headers出现在Conten_Encoding:gzip时说明已开启了压缩

Nginx服务器中的gzip配置参数详解及其注意点