Nginx中gzip配置

Nginx中gzip配置:

一、作用:

  • 减少从服务器下载的文件和请求的资源大小大幅提高页面加载速度。

二、原理:

  • 浏览器------请求-------> 声明可以接收gzip压缩 ;或者deflate压缩;或compress压缩;或sdch压缩
    • 从http协议的角度看----请求头 声明:acceopt-encoding: gzip deflate sdch[是指压缩算法, 其中sdch是google倡导的一种压缩方式 ]
  • 服务器---> 回应----把内容用gzip方式压缩-------->发给浏览器-接收gzip压缩内容----解码gzip---->浏览观看

三、gzip配置的常用参数:

  • 1:其中gzip可以为on 或者off, 它告诉nginx是否采用gzip压缩的形式来发送数据,启动压缩将会减少我们发送的数据量。
  • 2:其中gzip_disable为指定的客户端禁用gzip功能,通常我们设置为IE6,这样可以使得我们方案能够广泛兼容,这里Nginx是正则匹配。
  • 3:其中gizp_vary和代理有关,如果设置为on的话,它会再Header里面增加Vary头部。
  • 4:其中gzip_proxied是Nginx作为反向代理的时候启用,如果设置为off则关闭所有的代理结果数据压缩,用any表示无条件压缩所有数据结果。
  • 5:其中gzip_comp_level则是设置压缩等级,等级越低其压缩速度越快,它的压缩比也越小,它的值可以是从1到9。
    • 关于gzip_comp_level注意事项:
      • 随着压缩级别的升高,压缩比有所提高,但到了级别6后,很难再提高;
      • 随着压缩级别的升高,处理时间明显变慢;
      • gzip很消耗cpu的性能,高并发情况下cpu达到100%;
    • 建议:
      • 不是压缩级别越高越好,其实gzip_comp_level 1的压缩能力已经够用了,后面级别越高,压缩的比例其实增长不大,反而很吃处理性能
  • 6:其中gzip_buffers则是设置gzip申请内存的大小,其作用是按块大小的倍数申请控件。通常第一个参数是申请几个块,第二个参数则是一个块的大小是多少。
  • 7:其中gzip_http_version则是用于识别http协议的版本,这个主要是兼容最早期的浏览器,由于之前很多浏览器是不支持gzip压缩的,因此用户会看到乱码,不过目前基本上所有浏览器都支持gzip压缩了,因此该参数可以忽略。
    • 如果这里配置的是1.1的话,可能再配置nginx和后端的upstream server的时候会发现gzip没有开启
      • 因为nginx和后端的upstream server之间默认是用HTTP/1.0协议通信的
    • 建议:这里使用1.0
  • 8:gzip_min_length 最小压缩临界值(默认是20字节)。
    • 当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩
  • 9:而gzip_types则是设置需要压缩的mime类型,没有设置的值是不会进行压缩的。
  • 注意:图片/mp3这样的二进制文件,不比压缩
    • 因为压缩率比较小, 比如100->80字节,而且压缩也是耗费CPU资源的,比较小的文件不必压缩

四、Nginx服务器上配置gzip:

  • 首先进入服务器打开nginx.conf配置文件。

    • vim /etc/nginx/nginx.conf:打开总的配置文件再http{ }括号下添加:

              gzip on;
              gzip_disable "msie6";
      
              gzip_vary on;
              gzip_proxied any;
              gzip_comp_level 1;
              gzip_buffers 16 8k;
              gzip_http_version 1.0;
              gzip_min_length 256;
              gzip_types text/plain text/css
                         application/json application/x-javascript text/xml
                         application/xml application/xml+rss text/javascript
                         application/vnd.ms-fontobject application/x-font-ttf font/opentype 				    image/svg+xml image/x-icon
                         image/jpeg image/gif image/png;
      
      • 为什么再nginx.conf主配置项中添加,而不去conf.d的目录中给每个配置项创建?
        • 因为该conf.d目录中所有的配置项中的都需要开启gzip, 所以再主配置项中添加即可。
    • 再nginx.conf添加完,使用命令:

      • wq: 保存vim 打开nginx.conf 配置项中的内容
      • nginx - t:检查配置项是否正确
      • nginx -s reload:平缓重启nginx 服务器

五、打开浏览器进行对比:

首先查看没有配置过gzip:

  • 把gzip on; 改为 gzip off关掉
  • 请求该网址,打开开发者工具:
    • 在这里插入图片描述
    • 可以看到请求资源的大小是4.2KB
  • 把gzip off 改为 gzip on打开:
  • 发起同样的请求,打开开发者工具:
    • 在这里插入图片描述
    • 可以看到请求资源的大小是2.0KB
  • 打开Response Headers:
    • Nginx中gzip配置_第1张图片

你可能感兴趣的:(Nginx)