当 fastcgi 后端偶尔使用内容编码进行 gzip 服务时,如何禁用 Nginx 双 gzip 编码?

ck_*_*ck_ 5 php gzip fastcgi content-encoding nginx

如果后端已经设置了“content-encoding”标头,是否有任何聪明的方法可以欺骗 nginx 停止 gzip?

Nginx 配置为对 php fastcgi 后端的输出进行 gzip 压缩。

这在 99% 的情况下都很有效。

除了极少数情况外,php 会发送一个原始 gzip 压缩文件并附加一个Content-Encoding: gzip标头。

不幸的是,Nginx 会继续尝试第二次对该内容进行 gzip 压缩。

生成双content-encoding: gzip content-encoding: gzip标头和双编码 gzip 正文。

大多数现代浏览器都可以处理这个问题,比如 Firefox、Chrome。

IE8 不能,Safari 移动版不能,旧版 Safari 5 for Windows 不能 - 相反,它们会显示乱码的 gzip 压缩内容,因为它合并了内容编码标头,并且仅对 gzip 压缩正文进行一次解码。

感谢您的任何想法。

Ces*_*esc 4

在 nginx.conf 中适用的地方(应该有一个 fastcgi_params 文件):

fastcgi_param  HTTP_ACCEPT_ENCODING      "";
Run Code Online (Sandbox Code Playgroud)

这将禁用后端的编码。

我希望 Nginx 在此之后仍能提供编码内容。(我不知道)