最近、CentOS 7でmode_deflateの設定をしようとしたところ、mod_filterの仕様が、Apache 2.4系では少し変わって、Apache 2.2系で設定していた内容が通用しなくなったので設定方法を調べてみた。
まずは前提条件として下記のモジュールが読み込まれている必要がある。
LoadModule fileter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
mod_deflateの設定ファイル(/etc/httpd/conf.d/deflate.conf)を作成する。
Apache 2.4に対応させるには、FilterProviderの書式が少し変わったので、書き換える必要があった。
<IfModule deflate_module>
# 圧縮率の設定
DeflateCompressionLevel 1
<Location />
# NetScape 4.xのバグ対策(今更使ってる人はいないと思うけど)
BrowserMatch ^Mozilla/4 gzip-only-text/html# NetScape 4.06-4.08のバグ対策(今更使ってる人はいないと思うけど)
BrowserMatch ^Mozilla/4\.0[678] no-gzip# IEのユーザーエージェントは、Mozilla/4だがgzip圧縮を受け付けるので除外する。ただしIE6はバグがあるので除外の対象外(今更使ってる人はいないと思うけど)
BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html# 圧縮するファイルのMimeTypeを、mod_filterを使って指定する。
FilterDeclare Compression CONTENT_SET
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘text/html'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘text/plain'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘text/css'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘text/javascript'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘text/xml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/xhtml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/xml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/xhtml+xml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/rss+xml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/atom+xml'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘application/javascript'”
FilterProvider Compression DEFLATE “%{CONTENT_TYPE} = ‘image/svg-xml'”
FilterChain Compression# プロキシサーバーが間違ったコンテンツを配布しないようにするための設定
Header append Vary Accept-Encoding env=!dont-vary</Location>
</IfModule>
[Web] mod_deflateの設定方法 Apache 2.2系 [高速化]
[WEB] mod_expiresの設定 その1 [高速化]