Apacheでテキスト圧縮(gzip圧縮)を有効にする

Apacheでテキスト圧縮(gzip圧縮)について

Apache テキスト圧縮(gzip圧縮)を利用するメリットは、次のようなものがあります。

  • ファイルのサイズを縮小できる
  • 転送速度が向上する
  • 保存スペースを節約できる
  • コストと転送時間を削減できる
  • Webページの通信量を削減できる

gzip圧縮は、サーバー上でテキストファイルを自動的に圧縮して配信するファイル圧縮方法で、通信量を減らせることで、通信時間が削減し、サイトのパフォーマンスが向上できる。

以下で、Apacheでの導入方法を説明します。事前準備としてApacheは構築済みでWEBサーバーが起動している状態で説明しています

必要なモジュールを有効化されているか確認

テキスト圧縮で必要なモジュールは、「mod_deflate.so」,「mod_headers.so」が必要です。各モジュールの機能は以下となります

  • mod_deflateは、サーバーからクライアント(ブラウザ)に送信するデータをgzip圧縮するためのモジュールです
  • mod_headersは直接的にテキスト圧縮(gzipなど)を行う機能を持っているわけではありませんが、テキスト圧縮の動作を補助し、最適化するための役割を果たします

Apacheでモジュールがロードされているか確認します

# [httpd.conf]にLoadModule の記述がある場合
$ grep mod_deflate.so /etc/httpd/conf/httpd.conf 
$ grep mod_headers.so /etc/httpd/conf/httpd.conf 

# [/etc/httpd/conf.modules.d]以下の設定ファイルにLoadModule の記述がある場合
#(筆者の環境では以下でした)
$ grep mod_deflate.so /etc/httpd/conf.modules.d/*.conf
/etc/httpd/conf.modules.d/00-base.conf:LoadModule deflate_module modules/mod_deflate.so

$ grep mod_headers.so /etc/httpd/conf.modules.d/*.conf
/etc/httpd/conf.modules.d/00-base.conf:LoadModule headers_module modules/mod_headers.so

Apacheの設定ファイルにgzip圧縮設定の追加

Apacheの設定ファイルに圧縮の設定を追加します。httpd.confや該当するVirtualHost設定ファイルを編集して、以下の追加します

$ sudo vim /etc/httpd/conf.d/vhost/example_com.conf
<IfModule mod_deflate.c>

    # 圧縮を有効にするファイルタイプ
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css application/javascript
    AddOutputFilterByType DEFLATE application/json application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml

    # 古いブラウザ(例: IE6)の圧縮対応を無効化
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    # 圧縮対象から除外する特定のファイルやディレクトリ(必要に応じて)
    SetEnvIfNoCase Request_URI \.(?:gif|jpg|png|ico|zip|gz|tar|bz2|7z)$ no-gzip dont-vary

    # Varyヘッダーを追加
    Header append Vary Accept-Encoding
</IfModule>

設定を追加したらApacheを再起動して、変更内容を反映します

$ sudo systemctl restart apache2

圧縮設定の確認

ブラウザの開発ツールやオンラインツール「Check GZIP Compression」で、テキスト圧縮されているか確認します

ブラウザの開発ツールで確認する

  1. ChromeやFirefoxの開発ツールを開き、「ネットワーク」タブでリソースを選択。
  2. HTTPヘッダーにContent-Encoding: gzipが含まれていることを確認。

オンラインツール「Check GZIP Compression」で確認

Check GZIP Compression」にアクセスしてテキスト圧縮したURLを入力して確認します。テキスト圧縮されていると「Gzip Is Enabled」と表示されます