nginx的gzip指令介绍,Nginx的gzip指令使用小结
gzip顾名思义,就是将文件压缩传输。图片、视频、大文件不建议使用压缩,压缩需要占用你的服务器资源,压缩完效果也不大。文章出现很多图片的话,我建议使用图床来存放你的图片。文章给大家介绍nginx的gzip指令。...
简介
gzip顾名思义,就是将文件压缩传输。图片、视频、大文件不建议使用压缩,压缩需要占用你的服务器资源,压缩完效果也不大。文章出现很多图片的话,我建议使用图床来存放你的图片。文章给大家介绍nginx的gzip指令。
说一段废话
压缩响应数据有什么作用呢?问的好:从用户体验和it成本两方面回答这个问题:
用户体验上
网速一定的情况下,传输5mb数据比传输10mb数据的时间快了一半。所以传输数据越小用户加载页面就越快,当然相比较之下体验会更好。
it成本上
对这个场景来说的成本主要是带宽成本, 数据不压缩那么传输这些数据相应的带宽肯定更大,对比之下压缩耗费的CPU资源在带宽费用上不值一提。
所以你有什么理由不用压缩呢?
背景
当然nginx也提供了gzip的压缩方式可以使用,但是在日常的工作中我发现或多或少在使用上有些问题,有点像:用了但又好像没用的感觉。 这篇就记录一下gzip的使用方式和易错点。
指令介绍
gzip
gzip指令来自 ngx_http_gzip_module 模块,提供的核心能力就是压缩响应数据。
该模块下提供的指令如下:
gzip on; # 开启gzip
gzip_comp_level 6; # 压缩等级:1-9 1:压缩最快/cpu消耗最少/压缩率最低 以次类推
gzip_min_length 1000; # 小于此大小的数据不压缩(单位字节/byte);数据来源"content-length"头
gzip_buffers 32 4k; # 压缩响应的缓冲区数量和大小(4k 内存页大小取决于平台)
gzip_proxied any; # 对代理的请求是否开启压缩
gzip_types text/plain application/xml application/javascript application/x-javascript text/css application/json; # 哪些类型的数据需要被压缩
gzip_disable "msie [1-5]\."; # user-agent 被正则匹配到的不开启压缩
gzip_vary on; # 当gzip对请求生效时会被添加一个响应头 "vary: accept-encoding"
gzip 是动态压缩: 每个请求在被响应时都会在gzip逻辑内走一遍 tips:
压缩等级不是越高越好: 压缩到一定程度后就会吃力不讨好, 从js的测试来看性价比最高的级别是 5或6
buffer大小设置最好是和平台的内存页保持一致: getconf page_size
gzip_types不要瞎写: 写压缩率大的(css/js/xml/json/ttf), image图片就不要写了,压缩空间太小,又耗cpu
gzip_static
gzip_stati指令来自 ngx_http_gzip_static_module模块,提供的核心能力是静态/预压缩
该模块提供的指令如下:
gzip_static on|off|always; # always: 不管客户端是否支持压缩我他妈全部给你压缩之后给你
可以复用gzip_module中以下的指令: tips:
gzip_http_version, gzip_proxied, gzip_disable, gzip_vary
gzip_static是静态压缩:意思是你的服务端需要同时存在源文件和使用gzip压缩后的源文件,这时请求的时候会优先吧压缩文件返回,这样就不用再耗费cpu去动态压缩了。(视情况来用,我们没用)
可以和gzip一同开启,没啥影响,它的优先级高于gzip
易错点提示
在实际的生产环境中架构都比较负载,不像一个单纯的nginx一样,我配置好了就万事大吉了。
时常会遇到有些网站明明配置了gzip但是展示上看并没有生效,为什么?
此时需要梳理这个请求流程,看看这个请求都经过了哪些地方,比如 你的请求通过三次代理(cdn-->nginx-->nginx)那么在其中一层没有配置或者配置错误那么整体的返回数据就是没有被压缩的, 这种情况出现还是比较多的。
-
详解nginx服务器的nginx.conf 中 root目录设置问题
文章主要介绍了详解nginx.conf 中 root 目录设置问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...
-
nginx服务器配置多个虚拟主机vhost的方法示例
文章主要介绍了nginx配置多个虚拟主机vhost的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧在nginx下配置虚拟主机vhost非常方便。主要...
-
详解Nginx 虚拟主机配置的三种方式(基于IP)
Nginx配置虚拟主机支持3种方式主要有基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置。本篇文章主要介绍了基于端口的实现,感兴趣的小伙伴们可以参考一下...
-
详解Nginx 虚拟主机配置的三种方式(基于端口)
Nginx配置虚拟主机支持3种方式主要有基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置。本篇文章主要介绍了基于端口的实现,感兴趣的小伙伴们可以参考一下...
-
Nginx 虚拟主机配置的三种方式(基于域名)
Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置。本文主要介绍了基于域名的实现,感兴趣的小伙伴们可以参考一下。3、Nginx...
-
Nginx服务器中accept锁的机制与实现详解
文章主要给大家介绍了关于Nginx中accept锁的机制与实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...
-
Nginx利用Lua+Redis实现动态封禁IP的方法
文章主要介绍了Linux系统下Nginx支持ipv6的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧一、查看现有nginx是否支持ipv6需要执行以下命令,...
-
Linux系统服务器下Nginx支持ipv6配置的方法
文章主要介绍了Linux系统下Nginx支持ipv6的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧一、查看现有nginx是否支持ipv6需要执行以下命令,...
-
Nginx单IP地址配置多个SSL证书的方法示例
文章主要介绍了Nginx单IP地址配置多个SSL证书的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧默认情况下,Nginx一个IP地址仅支持一个SSL...
-
利用nginx和腾讯云免费证书制作https的方法
文章主要介绍了利用nginx和腾讯云免费证书制作https的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧之前一直在研究,https怎么弄。最近看到...