一聚教程网:一个值得你收藏的教程网站

热门教程

nginx开启gzip压缩教程

时间:2022-06-30 18:57:14 编辑:袖梨 来源:一聚教程网

添加位置:

在默认配置文件(nginx/conf/nginx.conf)中搜gzip,加在对应的位置添加或完善如下配置:

 代码如下 复制代码

gzip  on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_comp_level 3;
gzip_types text/plain text/xml text/css application/x-javascript application/xml application/xml+rss text/javascript application/atom+xml;
gzip_vary off;
gzip_disable "MSIE [1-6].";

说明:

gzip on; (启用 gzip 压缩功能)
gzip_min_length 1k; (最小压缩的页面)
gzip_buffers 4 16k; (设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流)
gzip_http_version 1.0; (它的默认值是1.1,就是说对HTTP/1.1协议的请求才会进行gzip压缩如果我们使用了proxy_pass进行反向代理,那么nginx和后端的upstream server之间是用HTTP/1.0协议通信的)
gzip_comp_level 2; (压缩级别,1压缩比最小处理速度最快,9压缩比最大但处理最慢,同时也最消耗CPU,一般设置为2就可以了)
gzip_types text/plain application/x-javascript text/css application/xml; (什么类型的页面或文档启用压缩)
gzip_vary on; (启用应答头“Vary: Accept-Encoding”,注意,由于一个bug将导致IE 4-6无法缓存内容。)


设置好后,使用

 代码如下 复制代码
 ./nginx/sbin/nginx -t

检查配置文件是否有问题,没问题,reload新的配置文件

 代码如下 复制代码

./nginx/sbin/nginx -s reload


现在测试一下效果如下

curl -I -H "Accept-Encoding: gzip, deflate" "http://www.111com.net"
HTTP/1.1 200 OK
Server: nginx
 
Date: Tue, 17 Jul 2012 07:08:04 GMT
Content-Type: text/html; charset=utf-8
Connection: keep-alive
Cache-Control: private
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Encoding: gzip

注意:
1. 其中的gzip_http_version的设置,它的默认值是1.1,就是说对HTTP/1.1协议的请求才会进行gzip压缩
如果我们使用了proxy_pass进行反向代理,那么nginx和后端的upstream server之间是用HTTP/1.0协议通信的

如果我们使用nginx通过反向代理做Cache Server,而且前端的nginx没有开启gzip
同时,我们后端的nginx上没有设置gzip_http_version为1.0,那么Cache的url将不会进行gzip压缩
 
2. gzip_disable的设置是禁用IE6的gzip压缩,又是因为杯具的IE6
IE6的某些版本对gzip的压缩支持很不好,会造成页面的假死,今天产品的同学就测试出了这个问题
后来调试后,发现是对img进行gzip后造成IE6的假死,把对img的gzip压缩去掉后就正常了
为了确保其它的IE6版本不出问题,所以就加上了gzip_disable的设置

热门栏目