gzip介绍

gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序。
nginx中gzip压缩功能由ngx_http_gzip_module模块支持,该模块在nginx安装时默认编译安装,nginx配置文件中,gzip功能默认关闭。

nginx中gzip的主要作用就是用来减轻服务器的带宽问题,经过gzip压缩后的页面大小可以变为原来的30%甚至更小,这样用户浏览页面时的速度会快很多。gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压缩并解析。目前的大多数浏览器都支持解析gzip压缩过的页面。

gzip指令

内容参考nginx官网的最新版本参考文档(nginx-1.10.2)

  • gzip
语法:gzip on | off;
默认值:gzip off;
作用域:http, server, location, if in location

说明:
启用或禁用gzip压缩模块,on表示启用,off表示禁用

  • gzip_min_length
语法:gzip_min_length length;
默认值:gzip_min_length 20;
作用域:http, server, location

说明:
设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。因为过小的文件内容压缩之后效果不明显,甚至会比不压缩时更大,所以一般建议长度不小于1000或1k。

  • gzip_buffers
语法:gzip_buffers number size;
默认值:gzip_buffers 32 4k|16 8k;
作用域:http, server, location

说明:
设置response响应的缓冲区大小。32 4k代表以4k为单位将响应数据以4k的32倍(128k)的大小申请内存。如果没有设置,缓冲区的大小默认为整个响应页面的大小。

  • gzip_comp_level
语法:gzip_comp_level level;
默认值:gzip_comp_level 1;
作用域:http, server, location

说明:
设置gzip的压缩级别,可接受的范围是从1到9,数字越大压缩率越高,但更消耗CPU,一般设置6即可。

  • gzip_types
语法:gzip_types mime-type ...;
默认值:gzip_types text/html;
作用域:http, server, location

说明:
指定哪些类型的相应才启用gzip压缩,多个用空格分隔。通配符”*”可以匹配任意类型。不管是否指定”text/html”类型,该类型的响应总是启用压缩。一般js、css等文本文件都启用压缩,如application/x-javascript text/css application/xml 等。具体的文件类型对应的mimi-type可以参考conf/mime.types文件。

  • gzip_http_version
语法:gzip_http_version 1.0 | 1.1;
默认值:gzip_http_version 1.1;
作用域:http, server, location

说明:
设置gzip压缩所需要的请求的最小HTTP版本,低于该版本不使用gzip压缩。一般不用修改,默认即可。

  • gzip_disable
语法:gzip_disable regex ...;
默认值:—
作用域:http, server, location

说明:
这个指令是在0.6.23版本增加的。
如果请求的”User-Agent”头信息能被指定的正则表达式匹配,则对响应禁用gzip压缩功能。主要是为了兼容不支持gzip压缩的浏览器,比如IE6,不过IE6早就废弃了。

嵌入变量

该gzip压缩模块嵌入了一个变量$gzip_ratio,可以在配置文件中使用,通过该变量,可以获取压缩的比例,即原始大小和压缩后响应大小的比例。