最近,使用Nginx做反向代理时,访问网页时,非常的慢,为了解决这个问题,分析原因,发现有个gzip,一直关着的,于是查了查,试了试,发现,16M被压缩为4M多,首页1秒内就能加载完成,现将该配置分项一下。

参数介绍
gzip on; 开启gzip off关闭

gzip_min_length 1k; 设置允许压缩的页面最小字节(从header头的Content-Length中获取) 建议大于1k

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

gzip_http_version 1.1; 识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码

gzip_comp_level 2; 等级1-9 最小的压缩最快 但是消耗cpu

gzip_types text/plain application/x-javascript text/css application/xml; 匹配压缩类型

gzip_vary on; 启用应答头"Vary: Accept-Encoding"

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 msie6; (IE5.5和IE6 SP1使用msie6参数来禁止gzip压缩 )指定哪些不需要gzip压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库

gzip 决定是否开启gzip模块

gzip_buffers 设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间,param2:int(k) 后面单位是k

eg:gzip_buffers 4 8k;

gzip_comp_level 设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大

gzip_min_length 当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩

gzip_types 设置需要压缩的MIME类型,非设置值不进行压缩

param:text/html|application/x-javascript|text/css|application/xml

对于多数以文本为主的站点来说,文本自身内容占流量的绝大部分。虽然单个文本体积并不算大,但是如果数量众多的话,流量还是相当可观。启用GZIP以后,可以大幅度减少所需的流量。
配置详解

#开启Gzip
gzip on;
#不压缩临界值,大于100K的才压缩,这个按需改,压缩要消耗cpu资源
gzip_min_length 100k;
#压缩在内存中缓冲几块? 每块多大?
gzip_buffers 4 16k;
#默认是HTTP/1.1,用了反向代理的话,末端通信是HTTP/1.0
gzip_http_version 1.0;
#压缩级别,1-10,数字越大压缩的越好,时间也越长
gzip_comp_level 2;
#进行压缩的文件类型  image/jpeg image/gif image/png  图片建议不压缩,
gzip_types text/plain application/javascript text/cssapplication/xml application/x-javascript text/css application/xml text/javascript application/x-httpd-php;
#on 的话会在Header里增加"Vary: Accept-Encoding"
gzip_vary on;
#IE6对Gzip不怎么友好,不给它Gzip了
gzip_disable "MSIE [1-6]\.";