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 ;
...
}
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学习之压缩解压篇(七)的更多相关文章
- 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 重点: 实现多级子目录的压缩, ...
- Linux的压缩解压命令快速上手——解压篇
在Linux系统中,压缩文件通常是先将若干文件(包括目录)打包成一个tar文件,然后再调用压缩程序将tar文件压缩成相应的压缩包,这也就是为什么Linux系的压缩包的后缀通常都是像tar.gz,tar ...
- [转帖]nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件
nginx学习,看这一篇就够了:下载.安装.使用:正向代理.反向代理.负载均衡.常用命令和配置文件 2019-10-09 15:53:47 冯insist 阅读数 7285 文章标签: nginx学习 ...
- 基于哈夫曼编码的压缩解压程序(C 语言)
这个程序是研一上学期的课程大作业.当时,跨专业的我只有一点 C 语言和数据结构基础,为此,我查阅了不少资料,再加上自己的思考和分析,实现后不断调试.测试和完善,耗时一周左右,在 2012/11/19 ...
- Freebsd下压缩解压文件详解
压缩篇: 把/usr/webgames目录下的文件打包.命名为bak.tar.gz 放到/usr/db-bak目录里 下面命令可以在任意目录执行.无视当前目录和将要存放文件的目录.tar -zcvf ...
- huffman压缩解压文件【代码】
距离上次写完哈夫曼编码已经过去一周了,这一周都在写huffman压缩解压,哎,在很多小错误上浪费了很多时间调bug.其实这个程序的最关键部分不是我自己想的,而是借鉴了某位园友的代码,但是,无论如何,自 ...
- WebAPI性能优化之压缩解压
有时候为了提升WebAPI的性能,减少响应时间,我们会使用压缩和解压,而现在大多数客户端浏览器都提供了内置的解压支持.在WebAPI请求的资源越大时,使用压缩对性能提升的效果越明显,而当请求的资源很小 ...
- nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件
前言一.nginx简介1. 什么是 nginx 和可以做什么事情Nginx 是高性能的 HTTP 和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高达 50 ...
- Lucene4.2源码解析之fdt和fdx文件的读写——fdx文件存储一个个的Block,每个Block管理着一批Chunk,通过docID读取到document需要完成Segment、Block、Chunk、document四级查询,引入了LZ4算法对fdt的chunk docs进行了实时压缩/解压
前言 通常在搜索打分完毕后,IndexSearcher会返回一个docID序列,但是仅仅有docID我们是无法看到存储在索引中的document,这时候就需要通过docID来得到完整Document信 ...
随机推荐
- c++11 std::prev、std::next、std::advance与auto 使用
auto 定义变量时放在变量前,无需知道具体变量类型,系统可自行推断类型,减少编程工作,特别是在模板使用时,使用更方便. 下面简单例子: auto a=; auto b='a'; auto s=&qu ...
- pip virtualenv requirements
pip可以很方便的安装.卸载和管理Python的包.virtualenv则可以建立多个独立的虚拟环境,各个环境中拥有自己的python解释器和各自的package包,互不影响.pip和virtuale ...
- 用Fiddler或Charles进行mock数据搭建测试环境
转载:http://blog.csdn.net/qqYJ5/article/details/62216582 应用场景:服务器数据不符合测试条件或者服务器未开发完成时,我们可以通过在本地创建数据来达到 ...
- J2EE环境安装配置
在下载,安装前先说下以下几个概念JDK,SDK,JRE,JVM ◆JDK Java Develop Kit (Java 开发包) ◆SDK Software Develop kit, 曾经JDK叫做J ...
- STL学习笔记(第五章 STL组件)
STL组件 若干精心勾画的组件共同合作,构筑起STL的基础.这些组件最关键的是容器.迭代器和算法. 下图演示了STL组件之间的合作 容器(Containers) 容器类别(简称容器)用来管理一组元素. ...
- apue学习笔记(第三章 文件I/O)
本章开始讨论UNIX系统,先说明可用的文件I/O函数---打开文件.读写文件等 UNIX系统中的大多数文件I/O只需用到5个函数:open.read.write.lseek以及close open函数 ...
- Kafka备忘
官网 http://kafka.apache.org/ 多生产者多消费者 多topic和多分区 多消费者组.每组中消息不能重复消费,组间不影响 启动 RunKafka(){ cd $kafka_hom ...
- 捕获php请求内容
通过将phpinfo()打印到文件实现 <?php echo str_pad('', 1024);//使缓冲区溢出 ob_start();//打开缓冲区 phpinfo(); $string = ...
- php url路由伪静态
RewriteEngine on RewriteBase /RewriteRule ^([a-zA-Z]{1,})/([a-zA-Z]{1,})$ webim2/operator/users.php? ...
- Smali语法:数据类型、方法和字段
数据类型 dalvik字节码有两种类型,原始类型和引用类型.对象和数组是引用类型,其它都是原始类型. smali数据类型都是用一个字母表示,如果你熟悉Java的数据类型,你会发现表示smali数据类型 ...