Apache設定 · 1 min read · Sep 25, 2025

Apache2のmod_deflateでトラフィックを節約する方法

このチュートリアルでは、Apache2ウェブサーバーにmod_deflateをインストールして構成する方法を説明します。mod_deflateを使用すると、Apache2はファイルを圧縮し、圧縮されたコンテンツを処理できるクライアント(例:ブラウザ)に配信できます。ほとんどの最新のブラウザはこれを行います。mod_deflateを使用すると、HTML、テキスト、またはXMLファイルを元のサイズの約20〜30%に圧縮できるため、サーバートラフィックを節約し、モデムユーザーをより幸せにします。

ファイルを圧縮するとサーバーへの負荷がわずかに増加しますが、私の経験では、クライアントのサーバーへの接続時間が大幅に短縮されるため、これが補われます。たとえば、非圧縮のHTMLファイルをダウンロードするのに7秒かかっていたモデムユーザーは、同じ圧縮ファイルをダウンロードするのにわずか2秒しかかからないかもしれません。

mod_deflateを使用すると、圧縮コンテンツを処理できない古いブラウザのユーザーを除外することを心配する必要はありません。ブラウザはファイルが転送される前にサーバーと交渉し、ブラウザが圧縮コンテンツを処理できない場合、サーバーはファイルを非圧縮で配信します。

mod_deflateは、Apache2でApache 1.3のmod_gzipに置き換えられました。Apache 1.3で圧縮ファイルを提供したい場合は、次のチュートリアルを参照してください:mod_gzip - Apacheウェブサーバーによる圧縮コンテンツの提供

まず最初に、これはそのようなシステムを設定する唯一の方法ではないことを言いたいです。この目標を達成する方法はたくさんありますが、これは私が取る方法です。これがあなたにとって機能するという保証はありません!

1 mod_deflateを有効にする

Apache2がインストールされている場合、mod_deflateもすでにシステムにインストールされているはずです。今、私たちはそれを有効にする必要があります。Debianでは、次のようにできます:

a2enmod deflate

次に、Apache2を再起動します:

service apache2 restart

他のディストリビューションでは、mod_deflateを有効にするためにApache2の設定を手動で編集する必要があるかもしれません。LoadModuleセクションに次のような行を追加する必要があるかもしれません:

LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so

mod_deflate.soへのパスを調整し、その後Apache2を再起動してください。

2 mod_deflateを構成する

ファイルの圧縮は、拡張子による明示的な除外またはMIMEタイプによる明示的な含有のいずれかの方法で構成できます。mod_deflateをApache2サーバー全体に有効にすることも、特定の仮想サイトのみに有効にすることもできます。これに応じて、今すぐApache2のグローバルサーバー設定セクションを開くか、mod_deflateを有効にしたいvhost設定セクションを開いてください。

2.1 MIMEタイプによるファイルの明示的な含有

HTML、テキスト、およびXMLファイルのみを圧縮したい場合は、設定に次の行を追加します:

AddOutputFilterByType DEFLATE text/html text/plain text/xml

これは、画像やPDFファイル、すでに圧縮されたファイル(zipファイルなど)を圧縮したくないため、私が使用している設定です。

2.2 拡張子によるファイルの明示的な除外

すべてのファイルタイプを圧縮し、いくつかだけを除外したい場合は、次のような行を設定に追加します(セクション2.1の行の代わりに):

SetOutputFilter DEFLATE  
SetEnvIfNoCase Request_URI \\.(?:gif|jpe?g|png)$ \\  
    no-gzip dont-vary  
SetEnvIfNoCase Request_URI \\  
    \\.(?:exe|t?gz|zip|bz2|sit|rar)$ \\  
    no-gzip dont-vary  
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary

これにより、画像(gif、jpg、png)、すでに圧縮されたファイル(zipやtar.gzなど)、およびPDFファイルを除いてすべてのファイルが圧縮されます。これらのファイルタイプを圧縮してもあまり得られないため、理にかなっています。

2.3 さらなる構成ディレクティブ

セクション2.1または2.2の設定を使用するかどうかにかかわらず、次の行を設定に追加する必要があります:

BrowserMatch ^Mozilla/4 gzip-only-text/html  
BrowserMatch ^Mozilla/4\.0[678] no-gzip  
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

これらの行は、HTMLドキュメント以外のファイルの圧縮をサポートしていない古いブラウザ用です。

設定はこれで完了ですので、Apache2を再起動する必要があります。Debianでは、次のようにします:

service apache2 restart

さらなる構成ディレクティブについては、Apache Module mod_deflateを参照してください。

3 テスト

圧縮をテストするために、配信されたファイルの圧縮率をログに記録するmod_deflate設定にいくつかのディレクティブを追加します。mod_deflate設定を開き、次の行を追加します:

DeflateFilterNote Input input_info  
DeflateFilterNote Output output_info  
DeflateFilterNote Ratio ratio_info  
LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate  
CustomLog /var/log/apache2/deflate_log deflate

/var/log/apache2をApache2のログディレクトリに置き換えることを確認してください。これは/var/log/httpd、/var/log/httpd2などである可能性があります。

次に、Apache2を再起動します。Debianでは、次のようにします:

service apache2 restart

これで、ファイルがリクエストされるたびに、/var/log/apache2/deflate_log(または変更したファイル)にログが記録されます。典型的なログ行は次のようになります:

"GET /info.php HTTP/1.1" 7621/45430 (16%)

info.phpファイルがリクエストされ、配信されたことがわかります。元のサイズは45430バイトで、7621バイト、つまり元のサイズの16%に圧縮されました!これは素晴らしい結果であり、あなたのウェブサイトが主にHTML、テキスト、XMLファイルで構成されている場合、mod_deflateは多くのトラフィックを節約し、低帯域幅接続のユーザーにとっては、あなたのサイトがはるかに速く読み込まれることになります。

テスト後にログ記録が不要になった場合は、セクション3の変更を元に戻し、Apache2を再起動できます。

4 リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。