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 ;
...
}

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中去。

最新文章

  1. 【Hibernate框架】对象的三种持久化状态
  2. a标签有小手状和无小手状css属性
  3. ES6初学习
  4. CSS实现水平垂直同时居中的5种思路
  5. CocoaPods安装使用及上传
  6. 【OJ】PAT-A解题报告
  7. 基于ace后台管理系统模板--CMS(Thinkphp框架)的筹划
  8. SGU 246. Black & White(数论)
  9. Spring中的WebDataBinder浅析
  10. 正整数从1到N,输出按照字典序排序的前K个数
  11. Debian 7 下载
  12. 关于JavaScript语法的小笔记
  13. c++中的namespace(附程序运行图)
  14. 表达式求值(二叉树方法/C++语言描述)(四)
  15. BZOJ_1251_序列终结者
  16. vue项目首屏加载优化实战
  17. Android开发中,使用 EditText 输入内容,如何进行一键清空内容处理
  18. LSC问题(不连续问题)
  19. zynq基础-->linux下软件应用
  20. 性能测试day02_预习知识

热门文章

  1. 转: 初识Agile/CMMI/Scrum
  2. NeatBean下ssh 私钥格式问题
  3. [Unit Testing] Mock a Node module's dependencies using Proxyquire
  4. JAVA反射机制--怎么不受泛型束缚给数组赋值
  5. Node.js 极简入门Helloworld版服务器例子
  6. 【Spring】使用Filter过滤请求
  7. Hadoop最大值的算法中出现的错误(strToDouble)
  8. Android 四大组件学习之Server一
  9. win8硬盘安装Ubuntu14.04双系统參考教程
  10. storm - 经常使用命令