zoukankan      html  css  js  c++  java
  • nginx学习之压缩解压篇(七)

    1.简介

    压缩响应可以减少传输数据的大小,节省带宽。但过多的压缩会造成很大的处理开销。在发送给客户端之前,nginx会对响应做压缩,但是如果后端服务器已经

    压缩过了,nginx就不再压缩。

     

    2.开启压缩

    server {
        gzip on;
        gzip_types      text/plain application/xml;
        gzip_proxied    no-cache no-store private expired auth;
        gzip_min_length 1000;
        ...
    }

    nginx默认只压缩MIME类型为text/plain的响应,使用gzip_types指定额外的压缩类型。

    gzip_min_length:nginx会检查响应头中的Content-length,如果大于1000字节,就压缩,如果小于1000字节,就不压缩。

    gzip_proxied:假如用户与nginx之间隔了一层代理服务器(用户的代理服务器),代理服务器发送请求到nginx,nginx将请求转发给后端服务器,后端服务器接收到响应后,不对响应做压缩,直接返回给代理服务器。通过gzip_proxied指令来配置如何对这种响应做压缩。

    用户-----代理服务器----------nginx-----后端服务器

    我们是根据请求中的Via头字段知道这个请求是来自代理服务器的。

    gzip_proxied有多个参数,用于声明哪些类型的请求对应的响应需要压缩。

    上面的例子中表示:

    如果响应中的Cache-Control字段的值为:no-cache,no-store,private,就压缩这个响应,因为它不会缓存在用户的代理服务器上。

    expired参数表示nginx会去检查响应中的Expired头字段。

    auth参数表示nginx会去检查响应中的Authorization头字段。一个经过授权的响应是不能在代理服务器上缓存的,必须给终端用户。

    配置压缩的指令可以写在http块中,可以写在server块中,可以写在location块中。

    3.开启解压缩

    由于有的客户端可以识别压缩的响应,有的客户端无法识别压缩的响应,所以就需要分别对待。

    开启运行时解压缩,也就是在传输前进行压缩,在发送的过程中进行解压缩?

    location /storage/ {
        gunzip on;
        ...
    }

    注意:解压缩指令在预编译的开源的nginx中没有,它属于一个单独的模块,需要编译到nginx中去。

    4.尽量发送压缩过的静态文件

    location / {
        gzip_static on;
    }

    对于请求/path/to/file,nginx会尝试先寻找/path/to/file.gz,找到后就发送出去,如果没有找到,或者客户端不支持gzip,那么就只能发送

    /path/to/file了。

    gzip_static的意思是提前压缩好静态文件。

    注意:解压缩指令在预编译的开源的nginx中没有,它属于一个单独的模块,需要编译到nginx中去。

  • 相关阅读:
    20165223 week6测试错题总结
    20165223《Java程序设计》第七周Java学习总结
    20165207 第八周学习总结
    2017-2018-2 20165207实验二《Java面向对象程序设计》实验报告
    20165207 第七周学习总结
    20165207 第六周学习总结
    20165207 实验一 Java开发环境的熟悉
    20165207 第五周学习总结
    20165207 第四周学习总结
    20165207 第三周学习总结
  • 原文地址:https://www.cnblogs.com/t-road/p/6740101.html
Copyright © 2011-2022 走看看