HTTPレスポンスを圧縮して、ネットワーク負荷を軽減させる方法は、ネットを探せばたくさん出て来ます。
が、1点だけはまった部分があったので自己流にまとめたので、メモとして配置します。
設定方法
1.Apache Software Foundation\Apache2.2\conf\extra フォルダの中に、下記設定を適当な名前で配置する。
例:httpd-hogehoge.conf
2.Apache Software Foundation\Apache2.2\conf\httpd.conf の最後の方に読み込みを追加する。
例:Include conf/extra/httpd-hogehoge.conf
********************** ここから **********************
で、何が不親切かっていうと、殆どのサイトは「Header append Vary XXXXX-Encoding env=!dont-vary」の記述があります。
Apache の設定ページにも乗ってます。
でも!こいつが記述されている為に、サーバーが起動しなくなります。
という訳で、「LoadModule headers_module modules/mod_headers.so」もロードしろよっ!
って訳ですね。
なので不親切だなぁと…思っております。
また、最近はjavascriptやjsonも増えているので追加してあります。
因みにどうでも良い事ですが…
私は「設定が読めない時点でサーバーは起動すべきじゃない」と言う概念で記述します。
そのため
本番だろうがテストだろうが開発…はどうでも良いか(笑)
必要な設定が出来てないのに、取り敢えず起動されたら困ると考えています。
バージョンを変えるなら帰る前に環境を作ってテストすべきだし、動かなかったら「configtest」で問題を解決すべきですよね。
汎用的な設定ファイルを複数のサーバーに使うのも必要な事ではありますが、そんな大規模なプロジェクト入った事無いし(笑)
(もちろん応急処置で使う事はあると思いますが…)
という訳で、私は
検索用:Content-Encoding gzip apache 圧縮 レスポンス mod_deflate mod_filter VirtualHost バーチャルホスト
が、1点だけはまった部分があったので自己流にまとめたので、メモとして配置します。
設定方法
1.Apache Software Foundation\Apache2.2\conf\extra フォルダの中に、下記設定を適当な名前で配置する。
例:httpd-hogehoge.conf
2.Apache Software Foundation\Apache2.2\conf\httpd.conf の最後の方に読み込みを追加する。
例:Include conf/extra/httpd-hogehoge.conf
********************** ここから **********************
# プロキシモジュールをロード LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so # フィルタモジュールをロード LoadModule filter_module modules/mod_filter.so # フィルタ用ヘッダーモジュールをロード LoadModule headers_module modules/mod_headers.so # 圧縮モジュールをロード LoadModule deflate_module modules/mod_deflate.so # 圧縮レベル(デフォルトは6らしい(zlibのデフォルト)) DeflateCompressionLevel 3 <VirtualHost *:80> <Location /> # Tomcat との連携 ProxyPass ajp://localhost:8009/ Order deny,allow Deny from all Allow from localhost 127.0.0.1 # IE7/8対応 BrowserMatch \bMSIE\s(7|8) !no-gzip !gzip-only-text/html # ここからフィルター設定(必要なContent-Type があればここを増やす) FilterDeclare Compression CONTENT_SET FilterProvider Compression DEFLATE resp=Content-Type $text/html FilterProvider Compression DEFLATE resp=Content-Type $text/plain FilterProvider Compression DEFLATE resp=Content-Type $text/css FilterProvider Compression DEFLATE resp=Content-Type $text/javascript FilterProvider Compression DEFLATE resp=Content-Type $text/xml FilterProvider Compression DEFLATE resp=Content-Type $application/javascript FilterProvider Compression DEFLATE resp=Content-Type $application/json FilterProvider Compression DEFLATE resp=Content-Type $application/xhtml FilterProvider Compression DEFLATE resp=Content-Type $application/xml FilterProvider Compression DEFLATE resp=Content-Type $application/xhtml+xml FilterProvider Compression DEFLATE resp=Content-Type $application/rss+xml FilterProvider Compression DEFLATE resp=Content-Type $application/atom+xml FilterProvider Compression DEFLATE resp=Content-Type $application/x-javascript FilterProvider Compression DEFLATE resp=Content-Type $image/svg+xml FilterChain Compression # ここまでフィルター設定 # 指定の拡張子は圧縮しない。 SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|zip|lzh|exe)$ dont-vary # プロキシサーバー毎のにキャッシュするように設定 # User-Agent こちらを使うと、ユーザ+ブラウザ毎になるのでデータが膨大になるから使わない。 Header append Vary Accept-Encoding env=!dont-vary </Location> </VirtualHost>********************** ここまで **********************
で、何が不親切かっていうと、殆どのサイトは「Header append Vary XXXXX-Encoding env=!dont-vary」の記述があります。
Apache の設定ページにも乗ってます。
でも!こいつが記述されている為に、サーバーが起動しなくなります。
という訳で、「LoadModule headers_module modules/mod_headers.so」もロードしろよっ!
って訳ですね。
なので不親切だなぁと…思っております。
また、最近はjavascriptやjsonも増えているので追加してあります。
因みにどうでも良い事ですが…
私は「設定が読めない時点でサーバーは起動すべきじゃない」と言う概念で記述します。
そのため
<IfModule XXXXXX></IfModule>タグは使用していません。
本番だろうがテストだろうが開発…はどうでも良いか(笑)
必要な設定が出来てないのに、取り敢えず起動されたら困ると考えています。
バージョンを変えるなら帰る前に環境を作ってテストすべきだし、動かなかったら「configtest」で問題を解決すべきですよね。
汎用的な設定ファイルを複数のサーバーに使うのも必要な事ではありますが、そんな大規模なプロジェクト入った事無いし(笑)
(もちろん応急処置で使う事はあると思いますが…)
という訳で、私は
<IfModule XXXXXX></IfModule>タグを使用していません。
検索用:Content-Encoding gzip apache 圧縮 レスポンス mod_deflate mod_filter VirtualHost バーチャルホスト