JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

详解多层nginx配置gzip中的坑和解决方法

wys521 2024-09-27 14:19:50 精选教程 84 ℃ 0 评论

在web服务端开启gzip压缩后,能够有效压缩文件,降低传输体积,以达到减少传输时间。

nginx中开启配置如下(可以作用于http,server, location块中):

gzip on;

gzip_min_length 1k; #gzip开启阈值,超过1k才会使用gzip

gzip_buffers 4 16k;

gzip_comp_level 2; #压缩级别,越高压缩比越大,越消耗cpu

gzip_types text/plain application/x-javascript application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; # 支持文件类型

存在的坑:

如果只有一层nginx转发,上述配置的gzip会生效;而如果nginx中使用了多层代理,则不会生效。

分析:

多层代理如下图所示,server nginx配置gzip后,gzip支持的http协议默认版本(gzip_http_version)是的是1.1,配置多层代理后,nginx的upstream通信协议默认是http/1.0,因此agent nginx将请求转发至server nginx时,nginx间请求协议是1.0版本的,请求协议和gzip_http_version配置值不匹配,因此server nginx的gzip配置就失效了。

注:当前浏览器的请求http协议一般都是1.1版本的,和nginx的gzip_http_version的默认配置相同,因此在只有一层nginx代理时gzip工作正常。

多层nginx gzip为生效解决方法:

在server nginx的gzip配置中增加"gzip_http_version 1.0", server nginx 热重启后gzip即可生效。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表