web-dev-qa-db-ja.com

Content-Encodingがgzip、gzipの場合、Safariはgzipコンテンツを解凍しません

Safari for OSX、iOS、およびWindowsで、最近のサーバーのオーバーホール後にサーバー上のGzipコンテンツの解凍で問題が発生しています。

ApacheとPHP5-FPMを備えた1台のサーバーから3台のサーバーに移動しました。ロードバランサーとHHVMを実行する2つのサーバー、すべてNginxを使用します。

解凍の問題の原因を特定できません。これは同じドキュメントで一貫して発生しますが、Webサイト全体で一貫性がありません。

このスレッドは正常にロードされます。
https://kiwifar.ms/threads/Sun-tzus-the-art-of-war.11304/

このスレッドはそうではありません。
https://kiwifar.ms/threads/andrew-dobson-aka-tom-preston.1933/page-59

代わりに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

このonlyはSafariで発生します。

クロム?動作します。グーグルクローム?動作します。 IE10?動作します。 Mozilla?動作します。オペラ?動作します。 IceWeasle?動作します。 Android Chrome?動作します。ドルフィンブラウザ?動作します。

Safariでデバッグを有効にしました。応答ヘッダーは次のとおりです。

Safari for 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

対照的に、これは動作するクロムです。

クロム(動作中)

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がChromiumには存在しない「キープアライブ」を送信することです。多分これがそれが決して解凍しない理由ですか?それ以上のgzipのものを待つのを止めることはありませんか?

GzipのNginx構成。これは、3つのサーバーすべて(ロードバランサーとノードの両方)に適用されます

    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;

さらに、ここにロード構成があります。

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

私はこれを修正するために考えられるすべての構成を試しましたが、何も役に立ちませんでした。

編集1:他のすべてのブラウザの応答ヘッダーを調べたところ、私が言及したKeep-Aliveはどのブラウザにも見つかりませんでした。

編集2:問題がContent-Encoding:gzip, gzipであることを確認できます。単一のgzipを持つページが読み込まれます。 Safariは、このエンコーディングタイプをどうするかを知りません。

2
Null

私の問題は具体的でした。 XenForoは、アプリケーションレベルの構成オプションとして自動gzipを備えています。この問題が発生している場合は、アプリケーションがサーバーに到達する前にgzipで圧縮されていないことを確認してください。

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

1
Null