适用于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压缩。