nginx的Gzip配置

时间:2021-7-4 作者:qvyue

1 nginx的Gzip配置

1.1 gzip的指令

1.gzip :该指令用于开启或者关闭Gzip 功能

gzip on | off;

默认情况下,该指令设置为off,即不启用Gzip功能。只有将该指令设置为on时,各指令设置才有效。
2.gzip_buffers:该指令用于设置Gzip压缩文件使用缓存空间的大小

#number,指定nginx服务器需要向系统申请缓存空间的个数。
#size,指定每个缓存空间的大小。
gzip_buffers number size;

根据该配置项,Nginx服务器在对响应输出数据进行Gzip压缩时需向系统申请number*size大小的空间用于存储压缩数据。从Nginx 0.7.28开始,默认情况下number *size 的值为128,其中size 的值取系统内存页一页的大小,为4KB或者8KB,即:

gzip_buffers 32 4k I 16 8k;

3.gzip_comp_level:该指令用于设定Gzip压缩程度,包括级别1到级别9。级别1表示压缩程度最低,压缩效率最高;级别9表示压缩程度最高,压缩效率最低,最费时间。

#默认值设置为级别1。
gzip_comp_level level;

4.gzip_disable : 针对不同种类客户端发起的请求,可以选择性地开启和关闭Gzip功能。该指令从Nginx 0.6.23启用,用于设置一些客户端种类。Nginx服务器在响应这些种类的客户端请求时,不使用Gzip功能缓存响应输出数据。

gzip_disable regex ..·i

其中,regex根据客户端的浏览器标识(User-Agent,UA)进行设置,支持使用正则表达式。
5.gzip_http_version:早期的一些浏览器或者HTTP客户端,可能不支持Gzip自解压,因此用户有时会看到乱码,所以针对不同的HTTP协议版本,需要选择性地开启或者关闭Gzip功能。该指令用于设置开启Gzip功能的最低HTTP协议版本。

zip http version 1.011.1;

默认设置为1.1版本,即只有客户端使用1.1及以上版本的HTTP协议时,才使用Gzip 功能对响应输出数据进行压缩。从目前来看,绝大多数的浏览器都支持Gzip自解压,一般采用默认值即可。
6.gzip_min_length:Gzip压缩功能对大数据的压缩效果明显,但是如果压缩很小的数据,可能出现越压缩数据量越大的情况(许多压缩算法都有这样的情况发生),因此应该根据响应页面的大小,选择性地开启或者关闭Gzip 功能。该指令设置页面的字节数,当响应页面的大小大于该值时,才启用Gzip 功能。响应页面的大小通过 HTTP响应头部中的 Content-Length 指令获取,但是如果使用了Chunk编码动态压缩,Content-Length或不存在或被忽略,该指令不起作用。

gzip_min_ length length;

默认设置为20,设置为0时表示不管响应页面大小如何统统压缩。笔者建议将该值设置为1KB或以上,以防止出现数据越压越大的情况:

gzip_min_length 1024;

7.gzip_proxied:该指令在使用Nginx服务器的反向代理功能时有效,前提是在后端服务器返回的响应页头部中,Requests 部分包含用于通知代理服务器的Via头域。关于Nginx服务器的反向代理功能将在本书后面的专门章节介绍。它主要用于设置Nginx服务器是否对后端服务器返回的结果进行Gzip压缩。

gzip_proxied off | expired | no-cache | no-store | private | no_last_modified  | any ..·;

off,关闭Nginx服务器对后端服务器返回结果的Gzip压缩,这是默认设
expired,当后端服务器响应页头部包含用于指示响应数据过期时间的 expired头域时,启用对响应数据的Gzip压缩。
no-cache,当后端服务器响应页头部包含用于通知所有缓存机制是否缓存的 Cache-Control头域、且其指令值为no-cache时,启用对响应数据的Gzip压缩。
no-store,当后端服务器响应页头部包含用于通知所有缓存机制是否缓存的Cache-Control头域、且其指令值为no-store时,启用对响应数据的Gzip压缩。
private,当后端服务器响应页头部包含用于通知所有缓存机制是否缓存的Cache-Control头域、且其指令值为private时,启用对响应数据的Gzip压缩。
no_last_modified,当后端服务器响应页头部不包含用于指明需要获取数据最后修改时间的Last-Modified头域时,启用对响应数据的Gzip压缩。

给大家推荐一个网址,其中对HTTPHeader 的各个头域进行了详细的说明: http://en.wikipedia.org/wiki/HTTP_headerso

  1. gzip_types 指令

Nginx服务器可以根据响应页的MIME类型选择性地开启Gzip压缩功能。该指令用来设置MIME类型,被设置的类型将被压缩。

gzip_types mime-type ...;

其中,mime-type变量的取值默认为texthtml,但实际上,在 gzip指令设置为on时
Nginx服务
器会对所有的texthtml类型页面数据进行Gzip压缩。该变量还可以取“*”,表示对所有MIME类型的页面数据进行Gzip压缩。一般情况下我们压缩常规的文件类型时,可以设置为:

gzip_types text/plain application/x-javascript text/css text/html application/xml;
  1. gzip_vary指令

该指令用于设置在使用Gzip功能时是否发送带有“Vary: Accept-Encoding”头域的响应头部。该头域的主要功能是告诉接收方发送的数据经过了压缩处理。开启后的效果是在响应头部添加了Accept-Encoding: gzip,这对于本身不支持Gzip压缩的客户端浏览器是有用的。

gzip_vary on | off;

默认设置为off。事实上,我们可以通过Nginx配置的add_header指令强制Nginx服务器在响应头部添加“Vary: Accept-Encoding”头域,以达到相同的效果:

add header Vary Accept-Encoding gzip;

注意
该指令在使用过程中存在bug,会导致IE4及以上浏览器的数据缓存功能失效。

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。