Ubuntu14.04のNginxにgzipモジュールを追加する方法

Webサイトの読み込み速度は、ブラウザーによってダウンロードされるすべてのファイルのサイズによって異なります。転送するファイルのサイズを小さくすると、Webサイトの読み込みが速くなるだけでなく、帯域幅の使用料を支払う必要がある人にとっても安価になります。

[ gzip](http://www.gzip.org/)は、人気のあるデータ圧縮プログラムです。 gzipを使用して実行中のファイルを圧縮するようにNginxを構成できます。次に、これらのファイルは、取得中にそれをサポートするブラウザーによって損失なく解凍されますが、Webサーバーとブラウザーの間で転送されるデータの量は少なくなります。

圧縮の一般的な動作方法とgzipの動作方法により、一部のファイルは他のファイルよりも圧縮率が高くなります。たとえば、テキストファイルは非常によく圧縮されており、結果は通常2倍以上小さくなります。一方、JPEGやPNGファイルなどの画像は、その性質上すでに圧縮されており、gzipを使用した2回目の圧縮ではほとんど結果が得られません。ファイルを圧縮するとサーバーリソースが消費されるため、サイズを大幅に縮小するファイルのみを圧縮することをお勧めします。

このガイドでは、Ubuntu 14.04サーバーにインストールされたNginxを構成して、 gzip圧縮を使用してWebサイトの訪問者に送信されるコンテンツのサイズを縮小する方法について説明します。

前提条件

このチュートリアルに従うには、次のものが必要です。

ステップ1-テストファイルを作成する

このステップでは、テキスト 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スタイルシート、および jsJavaScriptファイル。

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

手順2-デフォルトの動作を確認する

次のステップは、作成したファイルを使用して新しいインストールを圧縮するときの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

ステップ3-Nginxのgzip設定を構成する

次のステップは、圧縮された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` 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

手順4-新しい構成を確認する

次のステップは、構成の変更が期待どおりに機能しているかどうかを確認することです。

各テストファイルに curllを使用して、手順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

Ubuntu14.04のNginxにgzipモジュールを追加する方法
Ubuntu16.04のNginxにロギングモジュールを追加する方法
Ubuntu20.04にNginxをインストールする方法
Ubuntu14.04でNginxを保護する方法
Ubuntu20.04にNginxをインストールする方法
Ubuntu16.04にNginxをインストールする方法
Ubuntu20.04にスワップスペースを追加する方法
Ubuntu20.04でホスト名を変更する方法
UbuntuにAptソフトウェアソースを追加する方法
Ubuntu16.04でNginxのマップモジュールを使用する方法
Ubuntu16.04でスワップパーティションを追加する方法を説明する
Ubuntu14.04で解析サーバーを実行する方法
UbuntuにインストールされているJDKを確認する方法
Ubuntu18.04に最新のMySQLをインストールする方法
Ubuntuのnginxサーバーでhttpsを開く方法
Ubuntu20.04にRubyをインストールする方法
Ubuntu20.04にMemcachedをインストールする方法
Ubuntu20.04にJavaをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVirtualBoxをインストールする方法
Ubuntu20.04にElasticsearchをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu16.04にNode.jsをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVagrantをインストールする方法
Ubuntu14.04にBacula-Webをインストールする方法
Ubuntu16.04にPostgreSQLをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu18.04にAnaconda3をインストールする方法
Ubuntu18.04にMemcachedをインストールする方法
Ubuntu16.04にJenkinsをインストールする方法
Ubuntu14.04にMemSQLをインストールする方法
CentOS8にNginxをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu16.04にMongoDBをインストールする方法
Ubuntu14.04にMailpileをインストールする方法
Ubuntu16.04にPrestaShopをインストールする方法
Ubuntu14.04でPHP7にアップグレードする方法
Ubuntu20.04にSkypeをインストールする方法
Ubuntu20.04にJenkinsをインストールする方法
Ubuntu18.04にPython3.8をインストールする方法
Ubuntu18.04にKVMをインストールする方法
Ubuntu20.04にKVMをインストールする方法
ubuntu14.04にopencv3.0.0をインストールする方法
Ubuntu20.04にAnacondaをインストールする方法
Ubuntu16.04にPrometheusをインストールする方法
Ubuntu18.04にJenkinsをインストールする方法
Ubuntu14.04にDjangoをデプロイする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にRをインストールする方法
Ubuntu16.04にMoodleをインストールする方法
Ubuntu14.04にSolr5.2.1をインストールする方法
Ubuntu16.04にTeamviewerをインストールする方法
Ubuntu20.04にMariaDBをインストールする方法
Ubuntu20.04にMonoをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu20.04にZoomをインストールする方法
Ubuntuでソフトウェアをアンインストールする方法
CentOS7にスワップを追加する方法
Ubuntu20.04にOpenCVをインストールする方法