mod_pagespeed を用いた Apache の高速化(Ubuntu 上)

【概要】mod_pagespeed は、HTML・CSS・JavaScript・画像を自動的に最適化する Apache のモジュールである。Google 版の最終安定版は 2018 年の 1.13.35.2、Apache Incubator 版の最終リリースは 2020 年 8 月の 1.14.36.1 であり、Incubator のリポジトリは 2025 年 4 月 10 日にアーカイブされ読み取り専用になった。その後 We-Amp B.V. が保守を引き継ぎ、2026 年に mod_pagespeed 1.15 を公開している。Ubuntu 24.04 LTS では、保守されているパッケージを署名付き apt リポジトリから導入する。mod_pagespeed を使わない選択肢として、Apache 標準の mod_deflatemod_brotlimod_expires、HTTP/2 による高速化がある。

Google 配布版を使わない理由

dl-ssl.google.com で配布されている mod-pagespeed-stable_current_amd64.deb は、2018 年のビルドのまま更新されていない。このパッケージは libwebplibpnglibjpeg-turbo、ICU を静的に同梱しており、2018 年以降に公表された脆弱性(例:libwebp のヒープオーバーフロー CVE-2023-4863)が修正されていない。mod_pagespeed は外部から送られた画像データを復号して書き換えるため、これらのライブラリは攻撃の対象になりうる。したがって、Ubuntu 24.04 LTS では保守されているパッケージを使う。

保守版 mod_pagespeed 1.15 のインストール(Ubuntu 24.04 LTS)

  1. 署名付き apt リポジトリを追加し、パッケージをインストールする。
    curl -fsSL https://packages.modpagespeed.com/setup-apt.sh | sudo bash
    sudo apt install mod-pagespeed-stable
    
  2. Apache を再起動して設定を反映する。
    sudo systemctl restart apache2
    

パッケージはインストール時にモジュールを有効化し、設定ファイル /etc/apache2/mods-available/pagespeed.conf を配置する。ディレクティブ名とフィルタ名は Google 版と同一であるため、既存の設定はそのまま使用できる。無償で導入・評価できるが、本番環境での利用には商用ライセンスが必要である。ライセンスがない場合でも最適化は動作し、応答に X-PageSpeed-Warn: unlicensed ヘッダが付く。

有効化と基本設定

設定ファイル /etc/apache2/mods-available/pagespeed.conf を編集する。最小限の設定例を示す。

sudo nano /etc/apache2/mods-available/pagespeed.conf
<IfModule pagespeed_module>
    ModPagespeed on
    ModPagespeedFileCachePath /var/cache/mod_pagespeed/
    ModPagespeedEnableFilters rewrite_css,rewrite_javascript,combine_css
</IfModule>

主要なディレクティブの意味は次の通りである。ModPagespeed on は最適化を有効にする。ModPagespeedFileCachePath は最適化結果を保存するディレクトリを指定する。ModPagespeedEnableFilters は適用する最適化フィルタを指定する。

設定ファイルを編集した後、構文を検査してから Apache を再起動する。

sudo apache2ctl configtest
sudo systemctl restart apache2

動作確認

モジュールが読み込まれていることを確認する。pagespeed_module (shared) と表示されれば読み込まれている。

apache2ctl -M | grep pagespeed

応答ヘッダを確認する。X-Mod-Pagespeed ヘッダにバージョン番号が表示されれば、書き換えが動作している。

curl -sI http://localhost/ | grep -i pagespeed

Apache 標準モジュールによる高速化

mod_pagespeed を導入しない場合でも、Ubuntu 24.04 LTS の Apache 2.4.58 に標準で含まれるモジュールで転送量とレスポンス時間を削減できる。

sudo a2enmod deflate
sudo a2enmod brotli
sudo a2enmod expires
sudo a2enmod http2
sudo systemctl restart apache2

各モジュールの役割は次の通りである。mod_deflate は gzip 圧縮、mod_brotli は Brotli 圧縮により、テキスト系コンテンツの転送量を削減する。mod_expiresExpires ヘッダと Cache-Control ヘッダを付与し、ブラウザキャッシュを利用させる。mod_http2 は HTTP/2 による多重化を行う。HTTP/2 を利用する場合は、prefork MPM ではなく event MPM を使い、PHP は php-fpm 経由で動作させる必要がある。