Webサイトの読み込み速度は、ブラウザーによってダウンロードされるすべてのファイルのサイズによって異なります。転送するファイルのサイズを小さくすると、Webサイトの読み込みが速くなるだけでなく、帯域幅の使用料を支払う必要がある人にとっても安価になります。
[ gzip
](http://www.gzip.org/)は、人気のあるデータ圧縮プログラムです。 gzipを使用して実行中のファイルを圧縮するようにNginxを構成できます。次に、これらのファイルは、取得中にそれをサポートするブラウザーによって損失なく解凍されますが、Webサーバーとブラウザーの間で転送されるデータの量は少なくなります。
圧縮の一般的な動作方法とgzipの動作方法により、一部のファイルは他のファイルよりも圧縮率が高くなります。たとえば、テキストファイルは非常によく圧縮されており、結果は通常2倍以上小さくなります。一方、JPEGやPNGファイルなどの画像は、その性質上すでに圧縮されており、gzipを使用した2回目の圧縮ではほとんど結果が得られません。ファイルを圧縮するとサーバーリソースが消費されるため、サイズを大幅に縮小するファイルのみを圧縮することをお勧めします。
このガイドでは、Ubuntu 14.04サーバーにインストールされたNginxを構成して、 gzip
圧縮を使用してWebサイトの訪問者に送信されるコンテンツのサイズを縮小する方法について説明します。
このチュートリアルに従うには、次のものが必要です。
このステップでは、テキスト gzip
圧縮用にデフォルトのNginxディレクトリにいくつかのテストファイルを作成します。
ネットワークを介して提供するファイルの種類を決定するために、Nginxはファイルの速度が十分でないため、ファイルの内容を分析しません。代わりに、ファイル拡張子を検索して、ファイルの目的を示すMIMEタイプを判別するだけです。
この動作のため、テストファイルの内容は関係ありません。ファイルに適切な名前を付けることで、Nginxをだまして、完全に空のファイルをイメージで、もう1つをスタイルシートであると思わせることができます。
この構成では、Nginxは非常に小さなファイルを圧縮しないため、正確に1キロバイトのサイズのテストファイルを作成します。これにより、Nginxが圧縮を使用する必要がある場所で圧縮を使用し、あるタイプのファイルを圧縮し、他のタイプのファイルを使用しないかどうかを確認できます。
truncate
を使用して、デフォルトのNginxディレクトリに test.html
という名前の1キロバイトのファイルを作成します。拡張子は、それがHTMLページであることを示します。
sudo truncate -s 1k /usr/share/nginx/html/test.html
同じ方法でいくつかのテストファイルを作成しましょう: jpg
イメージファイル、 css
スタイルシート、および js
JavaScriptファイル。
sudo truncate -s 1k /usr/share/nginx/html/test.jpg
sudo truncate -s 1k /usr/share/nginx/html/test.css
sudo truncate -s 1k /usr/share/nginx/html/test.js
次のステップは、作成したファイルを使用して新しいインストールを圧縮するときのNginxの動作を確認することです。
test.html
という名前のHTMLファイルが圧縮によって提供されているかどうかを確認しましょう。このコマンドは、Nginxサーバーからファイルを要求し、 gzip
圧縮コンテンツにHTTPヘッダー( Accept-Encoding:gzip
)を提供できることを指定します。
curl -H "Accept-Encoding: gzip"-I http://localhost/test.html
応答として、いくつかのHTTP応答ヘッダーが表示されます。
Nginx応答ヘッダー
HTTP/1.1200 OK
Server: nginx/1.4.6(CentOS)
Date: Tue,19 Jan 201620:04:12 GMT
Content-Type: text/html
Last-Modified: Tue,04 Mar 201411:46:45 GMT
Connection: keep-alive
Content-Encoding: gzip
最後の行に、「Content-Encoding:gzip」というタイトルがあります。これは、 gzip
圧縮がこのファイルの送信に使用されたことを示しています。これは、CentOSサーバーでは、Nginxgzip
がインストール後にデフォルト設定で自動的に圧縮を有効にするためです。
ただし、デフォルトでは、NginxはHTMLファイルのみを圧縮します。新規インストールの他のすべてのファイルは、非圧縮形式で提供されます。これを確認するには、同じ方法で test.jpg
というテストイメージをリクエストできます。
curl -H "Accept-Encoding: gzip"-I http://localhost/test.jpg
結果は以前とは少し異なるはずです。
HTTP/1.1200 OK
Server: nginx/1.4.6(CentOS)
Date: Tue,19 Jan 201620:10:34 GMT
Content-Type: image/jpeg
Content-Length:0
Last-Modified: Tue,19 Jan 201620:06:22 GMT
Connection: keep-alive
ETag:"569e973e-0"
Accept-Ranges: bytes
出力には Content-Encoding:gzip
のタイトルはありません。これは、ファイルが圧縮なしで提供されることを意味します。
テストCSSスタイルシートを使用して、テストを繰り返すことができます。
curl -H "Accept-Encoding: gzip"-I http://localhost/test.css
繰り返しますが、出力には圧縮についての言及はありません。
HTTP/1.1200 OK
Server: nginx/1.4.6(CentOS)
Date: Tue,19 Jan 201620:20:33 GMT
Content-Type: text/css
Content-Length:0
Last-Modified: Tue,19 Jan 201620:20:33 GMT
Connection: keep-alive
ETag:"569e9a91-0"
Accept-Ranges: bytes
次のステップは、圧縮されたHTMLファイルだけでなく、圧縮の恩恵を受けることができる他のファイル形式も提供するようにNginxを構成することです。
Nginxの gzip
構成を変更するには、メインのNginx構成ファイルを nano
または任意の別のテキストエディターで開きます。
sudo nano /etc/nginx/nginx.conf
以下に示すように、 gzip
設定セクションを見つけます。
...
##
# ` gzip` Settings
#
#
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;...
デフォルトでは、 gzip
圧縮は gzip on
コマンドによって有効になっていますが、いくつかの追加設定には #
コメント記号が付いています。このセクションにいくつかの変更を加えます。
#
行の先頭を削除して)他の設定を有効にしますgzip_min_length 256;
命令を追加して、256バイト未満のファイルを圧縮しないようにNginxに指示します。これは非常に小さなファイルであり、圧縮によるメリットはほとんどありません。 gzip_types
ディレクティブの後に追加のファイルタイプを追加します。これらのファイルタイプは、Webフォント、 ico
アイコン、およびSVGイメージを表します。これらの変更を適用すると、設定セクションは次のようになります。
...
##
# ` gzip` Settings
#
#
gzip on;
gzip_disable "msie6";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;...
ファイルを保存して閉じ、終了します。
新しい構成を有効にするには、Nginxを再起動します。
sudo service nginx restart
次のステップは、構成の変更が期待どおりに機能しているかどうかを確認することです。
各テストファイルに curl
lを使用して、手順2で行ったように、コンテンツエンコーディング Content-Encoding:gzip
ヘッダーの出力を確認できます。
curl -H "Accept-Encoding: gzip"-I http://localhost/test.html
curl -H "Accept-Encoding: gzip"-I http://localhost/test.jpg
curl -H "Accept-Encoding: gzip"-I http://localhost/test.css
curl -H "Accept-Encoding: gzip"-I http://localhost/test.js
これで、 test.jpg
イメージファイルのみを非圧縮のままにすることができます。他のすべての例では、出力で Content-Encoding:gzip
ヘッダーを見つけることができるはずです。
この場合、Nginxで gzip
圧縮が正常に構成されています。
Nginx構成を変更して gzip
圧縮を完全に使用するのは簡単であり、これには大きなメリットがあります。帯域幅が制限されている訪問者はサイトをより速く受信するだけでなく、Googleはサイトの読み込み速度にも満足します。現代のネットワークと使用法の重要な部分として、読み込み速度はますます注目を集めており、 gzip
の適用はそれを改善するための大きな一歩になるでしょう。
その他のUbuntuチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。
参照:「Ubuntu14.04でgzipモジュールをNginxに追加する方法」
Recommended Posts