nginx で gzip 圧縮を有効にすることで転送量を抑えページの表示速度を改善する
はじめに
nginx で gzip 圧縮を有効にすることで、コンテンツの転送量を抑え、ページの表示速度を改善します。
環境
- VPS : さくらVPS 1G SSD
- OS : CentOS 7.3
- その他 : nginx/1.10.2
gzip 圧縮とは
ここでの gzip 圧縮とは、Web サーバ上のリソースを、gzip で圧縮してからファイルを配信し、受け取るブラウザ側で gzip を復元することを言います。gzip 圧縮を有効にすることで、ファイルの転送量を削減し、ネットワークのリソースを削減することが期待できます。 ブラウザ側で gzip 圧縮に対応している必要がありますが、最近のブラウザではほぼ全てのブラウザで対応してます。
gzip 圧縮によるファイル配信のメリット
Web サーバからファイルを配信する際、gzip 圧縮したファイルを配信することで、通信量を削減することができます。
gzip 圧縮によるファイル配信のデメリット
gzip 圧縮を行なうため Web サーバに負荷がかかります。そのため、一度 gzip 圧縮されたファイルを使いまわす設定もあります。
nginx の設定
nginx で gzip 圧縮を行なうには、設定ファイルを以下のように変更します。
1# vi /etc/nginx/nginx.conf
/etc/nginx/nginx.conf1http { 2 (略) 3 4 gzip on; 5 gzip_http_version 1.1; 6 gzip_vary on; 7 gzip_comp_level 6; 8 gzip_types text/plain image/png image/jpeg image/gif application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml application/atom+xml application/rdf+xml text/css; 9 gzip_disable "MSIE [1-6].(?!.*SV1)"; 10 11 (略) 12}
- gzip : ON にすることで gzip が有効になります。
- gzip_http_version : 圧縮するリクエストの最小の HTTP バージョンを指定します。
- gzip_vary : ON の場合、レスポンスヘッダに
Vary: Accept-Encoding
を挿入します。 - gzip_comp_level : 圧縮のレベルを指定します。1 ~ 9 の間で指定し、数字が大きいほど圧縮率は高いが CPU リソースを消費します。
- gzip_types : 指定された MIME タイプを圧縮します。text/html は常に圧縮されます。
- gzip_disable : 指定された正規表現に一致する
User-Agent
ヘッダーをもつ要求の圧縮を無効にします。
設定ファイルを確認し問題がなければnginxを再起動します。
1# nginx -t 2# systemctl restart nginx