nginx的gzip压缩

Posted 风之馨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx的gzip压缩相关的知识,希望对你有一定的参考价值。

最近一直在优化公司的项目,就写下这篇文章记录一下使用nginx优化的方案。为了节约带宽提高传输效率,开启了nginx gizp压缩,这样子我们在访问网页、css和js等静态资源的大小会变小,访问速度变大,但是会消耗一定的cpu资源。

没有开启gzip

我们在nginx 开启gzip ,然后我们再次请求,响应头就会有gzip标志

nginx的gzip压缩

nginx的gzip压缩

nginx的gzip参数详解

gzip on/off 开启或者关闭压缩

gzip_min_length 当文件内容大于设定的值就会使用gzip进行压缩,k为单位,值为0,所有页面都进行压缩。一般不设置为0,因为压缩是按照内容中重复率来替换,如果内容太小,进行压缩反而变大更浪费资源。
gzip_buffers 设置用于处理请求压缩的缓冲区数量和大小。我设置4 16k就表示按照内存页大小以16k为单位,申请4倍的内存空间。此项设置需参照自已的服务器配置。
gzip_http_version 用于识别http协议版本。前期浏览器的版本不支持gzip压缩,即在http/1.0协议默认不开启gzip压缩。目前的浏览器基本上支持http/1.1。
如果出现开启gzip功能,但是没有生效。请参考一下自已是否有这个原因?
如果使用了proxy_pass进行反向代理,nginx和后端的upstream server之间默认是用http/1.0协议通信的。
如果Cache Server也是nginx,前端的nginx没有开启gzip。如果后端的nginx上没有设置gzip_http_version为1.0,那么Cache的url将不会进行压缩。
nginx的集群作均衡,请保证gzip有开启。

nginx的gzip压缩

gzip_comp_level  gzip的压缩级别,级别越低压缩速度越快文件压缩比越小。
虽然随着压缩级别升高压缩比会提高,但是到了6之后提高不明显,而且处理时间变慢,cpu性能的消耗也越大,高并发情况下cpu达到100%,一般设置为1就可以了。
gzip_type 压缩的MIME类型,如果请求的类型在设置范围内就会进行压缩 MIME类型https://www.w3school.com.cn/media/media_mimeref.asp

gzip_disable 设置哪些UA头不使用gzip压缩

gzip_proxied 在做反向代理时候启用
off 关闭所有的代理结果数据压缩
expired  如果header包含expires头信息 启用压缩
no-cache 如果header包含Cache-control:no-cache头信息 启用压缩
no-store 如果header包含Cache-control:no-store 头信息 启用压缩
private 如果header包含Cache-control:private  头信息 启用压缩
no_last_modified 如果header包含Last_Modified 头信息 启用压缩
no_etag  如果header包含ETag 头信息 启用压缩
auth 如果header包含Authorization 头信息 启用压缩
any 无条件压缩所有数据
gzip_vary on/off 增加响应头Vary:accept-Encoding
nginx 有个模块static_gzip模块,在编译的时候可以直接编译进去
./configure --with-http_gzip_static_module
这个模块作用:当接收到请求后,会到url相同的文件系统去找扩展名为".gz"文件.假如我要找http:xxx/index.css,它会先去找http:xxx/index.css.gz如果有直接发送出去,如果没有就会进行gzip压缩,在发送出去,这样可以避免重复的压缩无所谓的消耗资源,这个不受gzip_types限制,会对所有请求有效,所以建议在局部我们有.gz的目录启动

nginx的相关文章



下一篇会介绍nginx缓存的机制和相关配置,有兴趣的可以关注我。


以上是关于nginx的gzip压缩的主要内容,如果未能解决你的问题,请参考以下文章

开启Nginx的gzip压缩功能详解

nginx开启gzip压缩和静态缓存

Nginx 配置 gzip 压缩

Nginx 配置 gzip 压缩

nginx开启gzip

nginx gzip压缩