技术解析

如何控制 proxy_pass 的 gzip 压缩
0
2021-05-27 19:34:47
idczone
一种方法是
proxy_set_header Accept-美国服务器Encoding "";

但如果后端强制gzip了呢 怎么gzip off
我不知道应该怎么做,但是好奇为什么要gzip off?

因为后端 gzip 一次,nginx 再 gzip 一次就出问题了。

nginx:
gzip off;
即可

现在问题是要使用 ssi,后端gzip后,就没法正常ssi了。
所以一种是 proxy_set_header Accept-Encoding ""; 可以关闭gzip
但有的后端强制gzip了 无效,所以nginx proxy这层有木有办法搞定

用SSI干啥?

页面include公用的内容 或者页面局部更新的块呀

nginx 有一个模块叫 gunzip,但是需要自己在编译的时候指定加进去,默认是没有的。
http://nginx.org/en/docs/http/ngx_http_gunzip_module.html

我是用grunt来include的

谢谢livid 我试试哈

“从后端收到一个压缩过的文件,encoding应该是gzip。”
“nginx会把数据发到gzip模块,是不是判断后端响应头,这个是gzip模块的逻辑了”
我同事说的。
------
以下我猜测的:
你后端的响应头标记gzip了没?如果标记了,nginx是不是就不会重复做gzip了?nginx应该没有那么傻做两次gzip吧。

后端gzip了,问题是proxy_pass 收到的数据如果是gzip的就无法ssi。
通过设置proxy_set_header Accept-Encoding ""; 可以取消部分项目的gzip。 但有的无效,所以问题在这里 怎么强制proxy到的数据不压缩

让nginx处理不挺好么,还有啥性能比得过它?

你后端不标准
未经客户端要求,服务器不得私自决定gzip

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服