如何在fastcgi后端偶尔使用内容编码进行gzip压缩时禁用Nginx双gzip编码?

时间:2015-01-13 09:12:35

标签: php nginx gzip fastcgi content-encoding

如果后端已经设置了“内容编码”标题,是否有任何聪明的方法来欺骗nginx停止gzip?

Nginx配置为从php fastcgi后端gzip输出。

这在99%的情况下效果很好。

除了罕见的情况,php会发送一个原始的gzip压缩文件并附加一个Content-Encoding: gzip标题。

不幸的是,Nginx会继续前进并尝试再次对该内容进行gzip。

生成一个双content-encoding: gzip content-encoding: gzip标头和双重编码的gzipped正文。

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

IE8不能,Safari移动不能,旧的Safari 5 for Windows不能 - 相反,他们会显示乱码的gzip压缩内容,因为它合并内容编码标题,只解码gzipped主体一次。

感谢任何想法。

1 个答案:

答案 0 :(得分:1)

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

fastcgi_param  HTTP_ACCEPT_ENCODING      "";

这将禁用后端的编码。

我希望Nginx在此之后仍会提供编码内容。 (我不确定)