https://nginx.org/en/docs/http/ngx_http_gzip_module.html
https://nginx.org/en/docs/http/ngx_http_gunzip_module.html
https://nginx.org/en/docs/http/ngx_http_gzip_static_module.html
原理:
浏览器---请求----> 声明可以接受 gzip压缩 或 deflate压缩 或compress 或 sdch压缩
从http协议的角度看--请求头 声明 acceopt-encoding: gzip deflate sdch (是指压缩算法,其中sdch是google倡导的一种压缩方式,目前支持的服务器尚不多)
服务器-->回应---把内容用gzip方式压缩---->发给浏览器
浏览<-----解码gzip-----接收gzip压缩内容----
gzip配置的常用参数
gzip on|off; #是否开启gzip
gzip_buffers 32 4K| 16 8K #缓冲(压缩在内存中缓冲几块? 每块多大?)
gzip_comp_level [1-9] #推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)
gzip_disable #正则匹配UA 什么样的Uri不进行gzip
gzip_min_length 200 # 开始压缩的最小长度(再小就不要压缩了,意义不在)
gzip_http_version 1.0|1.1 # 开始压缩的http协议版本(可以不设置,目前几乎全是1.1协议)
gzip_proxied # 设置请求者代理服务器,该如何缓存内容
gzip_types text/plain application/xml # 对哪些类型的文件用压缩 如txt,xml,html ,css
gzip_vary on|off # 是否传输gzip压缩标志
注意:
图片/mp3这样的二进制文件,不必压缩
因为压缩率比较小, 比如100->80字节,而且压缩也是耗费CPU资源的.
比较小的文件不必压缩,
扩展nginx压缩模块
http_gzip_static_module 预读gzip功能
http_gunzip_module 应用支持gunzip的压缩方式
预读gzip功能是预先在服务器端压缩文件,gzip命令在nginx.conf中location 开启预读压缩:gzip_static on
gunzip的压缩方式是为了那些不能使用gzip的浏览器解决方案,很少使用
http_gzip_module提供了对gzip的基本的支持,默认是编译到nginx的发行版本里面的。注意的可以通过gzip_comp_level来制定压缩的比例,压缩的体积越小,对cpu的消耗越大。
http_gzip_static_module则是针对nginx serve的静态文件,需要编译进去才能有。比如a.html,如果启用了gzip_static on,如果同一目录下还有a.html.gz作为a.html压缩版本存在,那么nginx会以a.html.gz作为a.html的gzip version来serve。这样,可以采用对cpu消耗更大,但是压缩效果更好的算法事先压好.gz文件,而不是让nginx在访问的时候现压缩从而节省cpu。
另外,两个模块可以同时编译进去。