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

nginx学习之压缩解压篇(七)的更多相关文章

  1. C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志

    C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...

  2. Linux的压缩解压命令快速上手——解压篇

    在Linux系统中,压缩文件通常是先将若干文件(包括目录)打包成一个tar文件,然后再调用压缩程序将tar文件压缩成相应的压缩包,这也就是为什么Linux系的压缩包的后缀通常都是像tar.gz,tar ...

  3. [转帖]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件

    nginx学习,看这一篇就够了:下载.安装.使用:正向代理.反向代理.负载均衡.常用命令和配置文件 2019-10-09 15:53:47 冯insist 阅读数 7285 文章标签: nginx学习 ...

  4. 基于哈夫曼编码的压缩解压程序(C 语言)

    这个程序是研一上学期的课程大作业.当时,跨专业的我只有一点 C 语言和数据结构基础,为此,我查阅了不少资料,再加上自己的思考和分析,实现后不断调试.测试和完善,耗时一周左右,在 2012/11/19 ...

  5. Freebsd下压缩解压文件详解

    压缩篇: 把/usr/webgames目录下的文件打包.命名为bak.tar.gz 放到/usr/db-bak目录里 下面命令可以在任意目录执行.无视当前目录和将要存放文件的目录.tar -zcvf ...

  6. huffman压缩解压文件【代码】

    距离上次写完哈夫曼编码已经过去一周了,这一周都在写huffman压缩解压,哎,在很多小错误上浪费了很多时间调bug.其实这个程序的最关键部分不是我自己想的,而是借鉴了某位园友的代码,但是,无论如何,自 ...

  7. WebAPI性能优化之压缩解压

    有时候为了提升WebAPI的性能,减少响应时间,我们会使用压缩和解压,而现在大多数客户端浏览器都提供了内置的解压支持.在WebAPI请求的资源越大时,使用压缩对性能提升的效果越明显,而当请求的资源很小 ...

  8. nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件

    前言一.nginx简介1. 什么是 nginx 和可以做什么事情Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50 ...

  9. Lucene4.2源码解析之fdt和fdx文件的读写——fdx文件存储一个个的Block,每个Block管理着一批Chunk,通过docID读取到document需要完成Segment、Block、Chunk、document四级查询,引入了LZ4算法对fdt的chunk docs进行了实时压缩/解压

    前言 通常在搜索打分完毕后,IndexSearcher会返回一个docID序列,但是仅仅有docID我们是无法看到存储在索引中的document,这时候就需要通过docID来得到完整Document信 ...

随机推荐

  1. 配置Linux系统实现dhcp功能

    配置Linux系统实现dhcp功能 1.背景及原理    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用 ...

  2. Android开发Tips(2)

    欢迎Follow我的GitHub, 关注我的CSDN. 我会介绍关于Android的一些有趣的小知识点. 上一篇. 1. Dagger2的开发顺序 Module -> Component -&g ...

  3. SSO单点登录系列5:cas单点登录增加验证码功能完整步骤

    本篇教程cas-server端下载地址:解压后,直接放到tomcat的webapp目录下就能用了,不过你需要登录的话,要修改数据源,C:\tomcat7\webapps\casServer\WEB-I ...

  4. Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_2

    在编写获取路径方法前,我们先把角色须要的动画文件载入进来,角色的文件为png 和 plist格式. player1_anim.png.plist             player1_anim.pn ...

  5. Windows网页上碰到无法完全显示的图片怎么办

    如图所示,下一幅图片只能显示一半. 我们选中并在新标签中打开 一般即可正常显示,如果还不行,留意地址栏,这就是这个图片的真实地址,我们完全可以用迅雷直接把这幅图片下载下来. 我们甚至可以猜测,去掉后缀 ...

  6. OpenCV入门笔记(三) 图片处理

    OpenCV中提供了非常多处理图片的强大函数,能够对非常多格式的图片 加特效.有点实现Photoshop里的工具的感觉. 以下先介绍一些简单和常见的特效. 二值化(Image Threshold) 參 ...

  7. 怎样取消Macbook上顽固的开机启动项

    博主遇到的一个顽固启动项是Cisco Anyconnect.我仅仅是偶尔须要使用VPN.可是安装了Cisco Anyconnect之后,每次开机它都会启动,非常烦人. 1 通过系统设置 首先,博主希望 ...

  8. 算法练习--ABCD*E=DCBA

    //1.ABCD * E = DBCA//2.A,B,C,D {0-9} , E {1-9}//3.A,B,C,D,E all different var existSameN = function ...

  9. jquery.validate.js 验证表单时,在IE当中未验证就直接提交的原因

    jquery.validate.js 验证表单时,在IE当中未验证就直接提交的原因 今天利用了jquery.validate.js来验证表单,发现在火狐.谷歌浏览器当中都可以进行验证,但是在IE系列浏 ...

  10. day14—JQuery编程基础

    JQuery 1.什么是jQuery jQuery是一个优秀的JavaScript框架.一个轻量级的JavaScript类库.jQuery的核心理念是Write less.Do more. 使用jQu ...