当Content-Encoding是gzip,gzip时,Safari不会解压缩gzip内容

适用于OSX,iOS和Windows的Safari在最近的服务器大修后,会在我的服务器上解压缩Gzip内容。

我从1台Apache和PHP5-FPM服务器转移到3台服务器。 运行HHVM的负载均衡器和两台服务器,全都使用Nginx。

我无法确定导致解压缩问题的原因。 它始终在相同的文件上发生,但在整个网站不一致。

这个线程加载正常。
https://kiwifar.ms/threads/sun-tzus-the-art-of-war.11304/

这个线程不。
https://kiwifar.ms/threads/andrew-dobson-aka-tom-preston.1933/page-590

我在Safari上收到的是这样的内容。

    z H 6xl]E6 //S .j Ey  ]   r     H $J  @-]    %̥͕   @)R $چ ,a -22222ތÿ<    ^ Q4v    p   ?l   % Zް]     % w v    % s 0l >L     _B    vp       ہx  v      ݵ   {n     W;  ^   bd  |׵&     !=@j {  -   ;   Gܫ Q   ? V   : ] v )& Ж׍ 8 ^ p m FQ4yX    UV    I 珫 Zm :   ¶ G[[[w] *F =h  ձu  {   ( &tCi   3;  vu ҬԪ 0L=  | % n R%ÑmG%QE  b(  2 } ͚8!      q/  '   G 

这只发生在Safari。

铬? 作品。 谷歌浏览器? 作品。 IE10? 作品。 Mozilla的? 作品。 歌剧? 作品。 IceWeasle? 作品。 Android Chrome? 作品。 海豚浏览器? 作品。

我在Safari中启用了debugging。 这是响应标题。

Safari的Windows

 Cache-Control:private, max-age=0 CF-RAY:20f2a2c627ff22ac-LAX Connection:keep-alive Content-Encoding:gzip, gzip Content-Type:text/html; charset=UTF-8 Date:Sat, 01 Aug 2015 15:39:27 GMT Expires:Thu, 19 Nov 1981 08:52:00 GMT Server:cloudflare-nginx Transfer-Encoding:Identity Vary:Accept-Encoding, Accept-Encoding X-Frame-Options:SAMEORIGIN X-Powered-By:HHVM/3.8.1 

相反,这里是Chromium,它的工作原理。

铬(工作)

 cache-control:private, max-age=0 cf-ray:20f2a3b04a8d13c5-LAX content-encoding:gzip content-encoding:gzip content-type:text/html; charset=UTF-8 date:Sat, 01 Aug 2015 15:40:05 GMT expires:Thu, 19 Nov 1981 08:52:00 GMT server:cloudflare-nginx status:200 OK vary:Accept-Encoding vary:Accept-Encoding version:HTTP/1.1 x-frame-options:SAMEORIGIN x-powered-by:HHVM/3.8.1 

这是完全相同的文件。 唯一的区别似乎是Safari发送“保持活着”,这是不存在于铬。 也许这就是为什么它永不解压? 它永远不会停止等待更多的gzip的东西?

Nginxconfiguration为Gzip。 这适用于所有三个服务器(负载均衡器和节点)

  gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 32 8k; gzip_http_version 1.1; gzip_types text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; proxy_buffering off; 

另外,这里是负载configuration。

  upstream fruitbasket { server lime:443 weight=10; server lemon:443 weight=3; } 

我已经尝试了所有可能的configuration来解决这个问题,但没有任何帮助。

编辑1:查看所有其他浏览器的响应标题后,我提到的Keep-Alive没有在任何其他浏览器中find。

编辑2:我可以确认问题是Content-Encoding:gzip, gzip 。 任何页面加载一个gzip 。 Safari不知道如何处理这种编码types。

我的问题是具体的。 XenForo具有自动gzip作为应用程序级configuration选项。 如果您遇到此问题,请确保您的应用程序不会在到达服务器之前进行gzip压缩。

https://xenforo.com/help/config-php-options/