developers blog

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.conf
1http {
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