いつもどこかでデスマーチ♪

不定期に、私の日常を書き込みしていきます。

Apache のレスポンスに gzip圧縮を使う

2014年08月25日 14時47分20秒 | メモ
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

********************** ここから **********************
# プロキシモジュールをロード
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 バーチャルホスト

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« gmail にアクセスするための方法 | トップ | 不思議なことが起きた… »

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

メモ」カテゴリの最新記事