Nginx之gzip压缩

1.  nginx gzip压缩介绍

     nginx gzip压缩模块提供了压缩文件内容的功能,服务器在响应客户端请求之前,会根据一些具体的策略实施压缩,以节约网站出口带宽,同时加快数据传输效率,提升用户体验。

2.    nginx gzip压缩的优点:

    1.   提升用户体验。

         2.   节约网站带宽成本。

3.      压缩的对象:

         1.   纯文本压缩比很高。例如:html,js,css,xml,shtml等格式的文件。

         2.  被压缩的纯文本文件必须要大于1KB,由于压缩算法的特殊原因,极小的文件压缩后可能反而变大。

         3.  图片视频等文件尽量不要压缩,因为这些文件大多是都是经过压缩的,再一次压缩也不会减小,反而可能增大,同时压缩还会消耗服务器的CPU和内存。

4.      参数配置及配置说明

         nginx的gzip压缩依赖于ngx_http_gzip_module模块。默认已经编译安装到nginx的core模块中。

    ngx_http_gzip_module模块主要负责gzip功能开启和设置,对响应数据进行在线实时压缩。

         gzip可以配置在http,server,location模块中。

         可以根据实际情况,看看设计到哪个模块里面比较合适。

         压缩配置如下:

         gzip on;                          开启gzip压缩功能

         gzip_min_length   1k;     如果文件超过1k,才进行压缩;如果为0,不管多大都进行压缩。如果使用的Chunk编码动态压缩,这个不起作用。

         gzip_buffers     4   16k;  表示申请4个16k的内存空间作为缓存。默认情况下number*size的值为128,其中size的值大小取决于内存页一页的大小,为4KB或者8KB。

         gzip_http_version 1.1;   这个一定要注意,默认为1.1;

在应用服务器前,公司还有一层Nginx的集群作为七层负责均衡,在这一层上,是没有开启gzip的。 
如果我们使用了proxy_pass进行反向代理,那么nginx和后端的upstream server之间默认是用HTTP/1.0协议通信的。 
如果我们的Cache Server也是nginx,而前端的nginx没有开启gzip。 
同时,我们后端的nginx上没有设置gzip_http_version为1.0,那么Cache的url将不会进行gzip压缩。
 

              

         gzip_comp_level   2;    压缩比率。  使用1或者2,就可以了。比率越高,越耗性能。

         gzip_types   text/css  text/xml  application/javascript     默认text/html总是会被压缩。

         gzip_vary   on;  增加响应头Vary: Accept-Encoding

    gzip_disable MSIE [4-6]\.   当客户端浏览器为IE4/5/6的时候,对响应数据不进行压缩。

5.      nginx压缩配置效果检查

         使用谷歌浏览器的F12,进行检查,得到的响应头,如下:

         

6.  ngx_http_gzip_static_module模块(这是nginx的可选模块,需要在编译的时候添加--with-http_gzip_static_module)

      功能:主要负责搜索和发送经过Gzip功能预压缩的数据。这些数据以.gz为后缀存储在服务器上。

      区别:这个模块与ngx_http_gzip_module的区别,该模块使用的是静态压缩,而后者是动态压缩;该模块知道响应体的大小,而后者不确定。

      启用:gzip_static on | off |always

         on:启用

         off:关闭

         alway:一直发送gzip预压缩文件,而不检查客户端是否支持gzip压缩。

7.  ngx_http_gunzip_module模块(这个是nginx的可选模块,需要在编译的时候添加--with-http_gunzip_module)

      功能:针对不支持gzip压缩数据处理的客户端浏览器。如果客户端不支持gzip,nginx服务器将返回解压后的数据;如果客户端支持gzip处理,nginx服务器仍然返回压缩数据。

      启用:gunzip_static on | off

      

posted @ 2018-02-10 21:15  奋斗史  阅读(1207)  评论(0)    收藏  举报