mod_gzip

mod_gzip (http://www.remotecommunications.com/apache/mod_gzip/ より移転) とは、Apacheのモジュールの1つで、 HTTPで転送するデータをサーバで自動的に圧縮してから転送することで、ネッ トワーク帯域を節約できるようにするものです。圧縮されて転送されたファイ ルは、ブラウザ側で伸長(解凍)しなければなりませんが、これについては、最近 のブラウザは自動で伸長し、表示するようになっているため、クライアント側 には何も新しくインストールする必要はありません。

環境

mod_gzipのバージョン番号はApacheのそれに対応しているようにも見えますが、 この組み合わせでも問題なく動作しています。なお、mod_gzipはshared objectとして実行時読み込みさせる方法もありますが、どうせソースからコン パイルするし、このモジュールをはずすことも考えてないので、Apacheに組み 込む方法で使っています。

インストール

  1. Apacheのソースをダウンロード し、適当なところ(~/srcとする)に展開する (tar xfvz apache_1.3.20.tar.gz など)。
  2. mod_gzipをダウンロード し、適当なところ(~/srcとする)におく。
  3. Apache のディレクトリ (たとえば ~/src/apache_1.3.20) に行き、configure する。 その際、mod_gzipを組み込むようなオプションをつける(それ以外のオプショ ンも必要に応じてつけること)。ここでは、/usr/local/apache 以下にApache のファイルをインストールするようにしてある。
    ./configure --add-module=~/src/mod_gzip.c --prefix=/usr/local/apache
  4. make し、成功したら make installする(既にApacheをインストールして いるなら、既存ファイルを壊さないよう注意)。
  5. cd /usr/local/apache/conf し、httpd.conf に以下のものを加える。 なお、オリジナルのhttpd.conf はバックアップしておく。以下の行のそれぞ れの意味はmod_gzipの ページあたりで調べて、適切なものに変更すること。
    mod_gzip_on Yes
    mod_gzip_maximum_inmem_size 150000
    mod_gzip_dechunk Yes
    mod_gzip_keep_workfiles No
    mod_gzip_temp_dir "/tmp"
    
    mod_gzip_item_include file \.htm
    mod_gzip_item_include file \.shtml
    mod_gzip_item_include file \.html
    mod_gzip_item_include file \.CSS
    mod_gzip_item_include file \.css
    mod_gzip_item_include file \.doc
    mod_gzip_item_include file \.rtf
    mod_gzip_item_include file \.class
    mod_gzip_item_include mime text/html
    mod_gzip_item_include mime text/plain
    mod_gzip_item_include mime application/msword
    mod_gzip_item_include mime httpd/unix-directory
    
    LogFormat "%h %l %u %t \"%r\" %>s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n Out:%{mod_gzip_output_size}n:%{mod_gzip_compression_ratio}npct." common_with_mod_gzip_info2
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" mod_gzip: %{mod_gzip_compression_ratio}npct." full_plus_gzip
    
    CustomLog /var/log/apachelog full_plus_gzip
    
    この設定で、/var/log/apachelog に mod_gzipに関するものも含めたログが残 る。動作を確認したらCustomLog行は変更するなり、newsyslog で消えるよう にするなり(/etc/newsyslog.confに
    /var/log/apachelog 644 3 100 * Z
    と書くなど)すること。

    ログは、こんな感じであり、最後の67pctというのが圧縮率(大きい方が高い) である。

    hostname.example.ne.jp - - [01/Jun/2001:01:52:28 +0900] "GET /~mimori/rfc/rfc2822.txt HTTP/1.1" 200 53699 "http://(referer url)" "Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.0)" mod_gzip: 67pct.

    以下、追加情報。

    (2003/6/4) mod_gzipにセキュリティホールが発見されました。 現在最新の1.3.26.1aにまで影響しますので、それが修正されるまで待つべき と思われます。

    サーバ関連へ


    Mimori Yuki <mimori@puni.net>
    $Id: mod_gzip.html,v 1.2 2003/06/04 08:45:03 s-v Exp $