如何控制 proxy_pass 的 gzip 压缩

2014-05-12 11:59:53 +08:00
 AsaDong
一种方法是
proxy_set_header Accept-Encoding "";

但如果后端强制gzip了呢 怎么gzip off
7235 次点击
所在节点    NGINX
13 条回复
wangtai
2014-05-12 12:20:23 +08:00
我不知道应该怎么做,但是好奇为什么要gzip off?
shiny
2014-05-12 12:23:56 +08:00
@wangtai 因为后端 gzip 一次,nginx 再 gzip 一次就出问题了。
xoxo
2014-05-12 12:27:28 +08:00
nginx:
gzip off;
即可
AsaDong
2014-05-12 13:29:53 +08:00
现在问题是要使用 ssi,后端gzip后,就没法正常ssi了。

所以一种是 proxy_set_header Accept-Encoding ""; 可以关闭gzip
但有的后端强制gzip了 无效,所以nginx proxy这层有木有办法搞定
jsonline
2014-05-12 13:31:43 +08:00
用SSI干啥?
AsaDong
2014-05-12 13:34:43 +08:00
@jsonline 页面include公用的内容 或者页面局部更新的块呀
Livid
2014-05-12 13:35:17 +08:00
nginx 有一个模块叫 gunzip,但是需要自己在编译的时候指定加进去,默认是没有的。

http://nginx.org/en/docs/http/ngx_http_gunzip_module.html
jsonline
2014-05-12 13:38:41 +08:00
@AsaDong 我是用grunt来include的
AsaDong
2014-05-12 13:42:18 +08:00
@Livid 谢谢livid 我试试哈
wangtai
2014-05-12 13:44:57 +08:00
“从后端收到一个压缩过的文件,encoding应该是gzip。”
“nginx会把数据发到gzip模块,是不是判断后端响应头,这个是gzip模块的逻辑了”
我同事说的。
------
以下我猜测的:
你后端的响应头标记gzip了没?如果标记了,nginx是不是就不会重复做gzip了?nginx应该没有那么傻做两次gzip吧。
AsaDong
2014-05-12 14:42:50 +08:00
@wangtai 后端gzip了,问题是proxy_pass 收到的数据如果是gzip的就无法ssi。
通过设置proxy_set_header Accept-Encoding ""; 可以取消部分项目的gzip。 但有的无效,所以问题在这里 怎么强制proxy到的数据不压缩
HowardMei
2014-05-12 16:28:25 +08:00
@AsaDong 让nginx处理不挺好么,还有啥性能比得过它?
julyclyde
2014-05-13 17:27:35 +08:00
你后端不标准
未经客户端要求,服务器不得私自决定gzip

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/112131

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX