QA@IT

Nginxでtext/htmlのコンテンツだけなぜかブラウザではgzipがかかりません

5430 PV

CentOS 6.5、nginx 1.0.5の環境で以下の設定をしましたが、
ChromeやFirefox等でアクセスしてみたところ、text/htmlのコンテンツだけgzip圧縮がかっていないようでした。(デベロッパーツール等で確認)
ですが、CSSやJSなどついてはgzip圧縮がかかっています。
ちなみにcurlで同じURLを叩いたところ、text/htmlでもgzip圧縮されたものがちゃんと返って来ました。

この差は一体何によるものなのでしょうか?
お分かりの方がいらっしゃいましたらご教示お願いします。

gzip on;
gzip_min_length 1000;
gzip_types text/plain
            text/css
            text/xml
            text/javascript
            application/json
            application/javascript
            application/xml
            application/xhtml+xml
            application/rss+xml
            application/x-javascript
            application/atom+xml
            application/x-httpd-php;
gzip_buffers 4 8k;
gzip_disable "msie6";
gzip_proxied any;
gzip_http_version 1.0;
gzip_vary on;
gzip_comp_level 1;

回答

gzip_typestext/htmlが含まれてませんね。

ただ、個人的には動的かつ小さいHTMLにgzipを適用するのはCPU的にもレイテンシ的にもいいことがないので、gzip_min_lengthをもっと大きくしたほうがいいかなと思います(CSSやJSのサイズに合わせて)。

CSSやJSについても、同じコンテンツを毎回圧縮するのももったいないので、できればasset pipelineのように事前に静的に圧縮した.gzファイルをデプロイするルーチンにしておいてgzip_static onするのがベストではあります。

クラウド時代にはCPUのコストがもっとも高価なので、帯域がボトルネックになってない限り、デフォルトのgzip_proxied offのほうが結果的にバランスが良いことが多いです。

編集 履歴 (0)
  • 回答有難うございます。
    >gzip_typesにtext/htmlが含まれてませんね。
    とのことですが、公式ドキュメントにはtext/htmlは常時圧縮されるとあり、実際に「text/html」を書き加えた場合、設定をリロードする際に重複の警告がでてしまいます。http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_types
    -
  • (続き)警告だけなのでそのまま稼働できますが、結果は何も変わらずといったところです。
    なお、他の設定項目については例として挙げただけで、本件ではパフォーマンスチューニングについては言及しておりませんので、すみませんがノーコメントとさせていただきます。
    -
  • あ、そういえばそうでしたね。ふーむ、ちなみにgzip on, gzip_proxied anyだけ設定してあとはデフォルトだとどうなりますか?あと確認ですが設定コンテキストはserverやlocationではなくhttpですよね? -
  • すみません!しばらくこの問題から離れておりました。
    >ちなみにgzip on, gzip_proxied anyだけ設定してあとはデフォルト
    これはやってみましたが結果は変わりませんでした。
    設定コンテキストはhttpです。
    まだ見ておられましたらコメントください!
    -
  • アンチウィルスをインストールしてませんか?ぐぐってみたらこんなんありました。 http://serverfault.com/questions/497462/nginx-gzip-enabled-but-not-not-gzipping -
  • まずそのサイトを開こうとするとアンチウイルスに弾かれます(汗
    でも、どうやらまさにこれが原因だったようです。プロテクションを切ったところエンコーディングがgzipになりました!
    ということはnginx側ではgzipで送出しているけどアンチウイルスにプロキシされてるってことなんでしょうか。
    時折発生する原因不明の現象はたいていこいつが悪さしてますね・・・
    ありがとうございましたm(_ _)m
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。