5

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

Nginx 配置为 gzip 来自 php fastcgi 后端的输出。

这在 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 的正文进行解码。

感谢您的任何想法。

4

1 回答 1

4

它适用于 nginx.conf 中的某处(某处应该有一个 fastcgi_params 文件):

fastcgi_param  HTTP_ACCEPT_ENCODING      "";

这将禁用后端的编码。

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

于 2015-12-22T02:06:34.760 回答