Apache設定 · 3 min read · Sep 14, 2025

mod_gzip - Apacheウェブサーバーによる圧縮コンテンツの提供 - ページ 6

著者: Michael Schröpl

要求された機能の正確な量は、mod_gzipモジュールの統合によって利用可能になる追加のApache設定ディレクティブによって説明されます。

これらのディレクティブの効果に関する完全なドキュメントは現在利用できません; 一般的に以下のことを想定してください。

  • ほぼすべてのものがすべての環境で使用できる、つまり - 完全なサーバースコープで、
  • 別々の仮想ホストで、
  • ディレクトリ内またはさらには
  • .htaccessファイル内で、
  • 基本的にApacheの標準上書き手順が適用されます - 圧縮するコンテンツの選択を指定するディレクティブを除いて、そこでは少し複雑になります。

以下に説明する設定は本当に自分の設定に盲目的にコピーするためのものではありません - その意図は、どれだけのオプションが提供されているかを感じ取ってもらうことです。そしてたくさんのオプションがあります - 少なくとも「圧縮された出力データを得たいだけ」の場合は…

| ロード中 | 責任 | 事前圧縮 | 官僚主義 | データ管理 | ファイルサイズ | 要件 | フィルター | 転送エンコーディング | ロギング | プロキシ |

#######################################  
### Apache設定ディレクティブ ###  
###   mod_gzip 1.3.26.1a        ###  
#######################################  

  
##########################  
### モジュールのロード ###  
##########################  
  
# ---------------------------------------------------------------------  
# DLLをロード / Win32:  
# LoadModule gzip_module modules/ApacheModuleGzip.dll  
#  
# DSOをロード / UNIX:  
# LoadModule gzip_module modules/mod_gzip.so  
#  
# (どちらもモジュールが静的にコンパイルされている場合は不要;  
# 正確なファイル名は、このモジュールに使用される正確なコンパイル方法によって異なる場合があります  
#  
# ---------------------------------------------------------------------  
    

########################  


### 責任 ###  
########################  
  
# ---------------------------------------------------------------------  
# mod_gzipを使用しますか?  
  mod_gzip_on                   Yes  
# (このディレクティブを使用して、中央サーバー設定内でmod_gzipを特に有効にし、  
#  一部のディレクトリや仮想ホスト内で無効にすることができます。)  
# ---------------------------------------------------------------------  


######################################  
### 静的事前圧縮ファイル ###  
######################################  
  
# ---------------------------------------------------------------------  
# mod_gzipに「部分的コンテンツネゴシエーション」を実行させますか?  
  mod_gzip_can_negotiate        Yes  
# (このオプションがアクティブで、圧縮された静的ファイルを提供する場合、  
#  mod_gzipはこのファイルの静的事前圧縮バージョンを定義された追加の拡張子で探します - 次の  
#  ディレクティブを参照 - それが優先的に配信されます。これにより、同じ静的ファイルを繰り返し圧縮することを避け、  
#  CPU時間を節約できます。  
#  このファイルの動的キャッシングは提供されていません; 現在、ユーザー自身が  
#  事前圧縮ファイルの内容を作成および更新する責任があります。
# バージョン1.3.19.2aから、mod_gzipは自動的に  
#  静的事前圧縮ファイルがその非圧縮オリジナルよりも古いかどうかを認識し、  
#  この場合、オリジナルファイルの内容を非圧縮形式で提供します -  
#  正しいデータを提供する方が古いデータを提供するよりも重要です...)  
# ---------------------------------------------------------------------  
# 静的事前圧縮ファイルの拡張子 (サフィックス)  
  mod_gzip_static_suffix        .gz  
  AddEncoding              gzip .gz  
# (効果: 前のディレクティブを参照; この文字列は  
#  オリジナルファイルの名前に追加されます。  
#  この拡張子のエンコーディング「gzip」も設定してください。  
#  mod_gzipはコンテンツ自体を提供するのではなく、単にこのURLへのApache内部リダイレクションを生成します。  
#  したがって、残りのApache設定が「Content-Encoding」  
#  ヘッダーを適切に設定する責任があります...  
#  バージョン1.3.19.2a以前は、この値は設定可能ではありませんでした。)
# ---------------------------------------------------------------------  
# 静的事前圧縮ファイルの自動更新  
  mod_gzip_update_static        No  
# (「Yes」に設定すると、このディレクティブ (バージョン1.3.26.1aで新しい) は、  
#  mod_gzipがリクエスト中に古いバージョンの静的事前圧縮ファイルを自動的に更新し、  
#  つまり、元のリクエストされたファイルを圧縮し、  
#  事前圧縮バリアントファイルをそれで「上書き」します!  
#  このタイプの自動更新ごとに、mod_gzipはApacheのerror_logに「通知」レベルのメッセージを書き込みます。  
#  その際、mod_gzipは元のファイルの内容を直接読み取ります。  
#  したがって、この内容はリクエスト中に他のApacheモジュールによって解釈されることはできません。  
#  これはおそらく*あなたが望むものではない*かもしれません - ほとんどのユーザーが望むものであることを願っています。  
#  これはこの方法で*速く*動作します。  
#  この設定は非常に注意して使用し、URLツリー内の貴重なファイルが  
#  上書きされないようにしてください。  
#  これはマスホスティングサーバーで使用される機能ではありません、特に  
#  mod_gzipがそこでアクセス制御の問題に直面する可能性があるためです -  
#  Apacheプロセスが実行されているユーザーIDは、すべてのユーザーの事前圧縮ファイルに書き込みアクセスを持っている必要がありますが、  
#  これは自動的にそうなるとは限りません。)  
# [この状況でのmod_gzipのエラーハンドリング??? 何が提供されますか?]
# ---------------------------------------------------------------------  


###################  
### 官僚主義 ###  
###################  
  
# ---------------------------------------------------------------------  
# mod_gzipのステータスを表示  
  mod_gzip_command_version      '/mod_gzip_status'  
# (mod_gzipのステータスを表示するURLを定義します;  
#  各インストールごとに個別に指定でき、プライバシーの理由から  
#  セクションを介してアクセスから保護できます)  
# ---------------------------------------------------------------------  
# ステータス表示は次のようになります:  
#       mod_gzipは利用可能です...  
#       mod_gzip_version = 1.3.26.1a  
#       mod_gzip_on = Yes/No  
# したがって、次の情報を提供します  
# - mod_gzipがサーバーにインストールされており、正しく動作していること、  
# - どのバージョンがインストールされているか、  
# - mod_gzipがこのLocationに対して「アクティブ」に設定されているかどうか  
#   (-> mod_gzip_on)  
# ---------------------------------------------------------------------  


#######################  
### データ管理 ###  
#######################  
  
# ---------------------------------------------------------------------  
# 一時ファイルと圧縮キャッシュの作業ディレクトリ  
# 指定されていない場合、次のデフォルト値が使用されます:  
# [Win32=c:\temp], [UNIX=/tmp]  
# mod_gzip_temp_dir             /tmp  
# (このディレクトリはすでに存在している必要があり、  
#  Apacheサーバーを実行するために使用されるユーザーIDは  
#  このディレクトリに対して読み取りおよび書き込みアクセスを持っている必要があります。  
#  他のApacheディレクティブとは異なり、ここでは絶対パス名を指定する必要があります;  
#  相対値はServerRootに対して相対的に解釈されません。  
#  このパス名は「/」で終わってはいけません。  
#  最大パフォーマンスのために、このディレクトリはRAMディスク上に配置する必要があります、  
#  ファイルシステムがすでに効率的にキャッシュされていない場合  
# ---------------------------------------------------------------------  
# 一時作業ファイルを保存 [Yes, No]  
  mod_gzip_keep_workfiles       No  
# (HTTPリクエストごとに1ファイル - デバッグ目的でのみ「yes」に設定!)  
# ---------------------------------------------------------------------  


##################  
### ファイルサイズ ###  
##################  
  
# ---------------------------------------------------------------------  
# 圧縮されるファイルの最小サイズ (バイト単位)  
  mod_gzip_minimum_file_size    500  
# (非常に小さなファイルの場合、圧縮は小さな絶対的な利益しか生み出しません  
#  [コンテンツの約50%はまだ保存されますが、追加の  
#  500バイトのHTTPおよびTCPヘッダーは常に非圧縮のままです]、  
#  しかし、クライアントとサーバーの両方にCPU負荷を生じさせます。  
#  mod_gzipはこのディレクティブに対して300バイト未満の値を自動的に  
#  正確にこの値300に設定します。)  
# ---------------------------------------------------------------------  
# 圧縮されるファイルの最大サイズ (バイト単位)  
  mod_gzip_maximum_file_size    500000  
# (非常に大きなファイルの場合、圧縮にはかなりの時間がかかる可能性があり、  
#  したがって、送信の開始が遅れる可能性があります。  
#  さらに、この時点での制限により、サーバーは  
#  CGIスクリプト内の無限ループの発生時に無制限のサイズの出力を生成することを防ぎます -  
#  またはストリーミングデータを圧縮しようとすること -  
#  そうしないと、一時ファイルが任意のサイズで作成され、  
#  ハードディスク全体が埋まる可能性があります。  
#  一方で、圧縮は大きなファイルに対しては  
#  より顕著な主観的効果を持ちます...  
#  したがって、これを要件に応じて微調整してください。)  
# ---------------------------------------------------------------------  
# メモリ内で圧縮されるファイルの最大サイズ (バイト単位)  
  mod_gzip_maximum_inmem_size   60000  
# (大きなファイルは一時ファイルディレクトリに圧縮されます;  
#  この値をサーバーの利用可能なメインメモリに適応させてください。  
#  mod_gzip 1.3.19.xでは、大きな値は自動的に  
#  60000に制限されます。なぜなら、  
#  一部のオペレーティングシステムは  
#  一度に64kb以上のメモリを割り当てるのに問題があると言われているからです。  
# ---------------------------------------------------------------------  


####################  
### 要件 ###  
####################  
  
# (これらのディレクティブを使用する際の問題については、キャッシングに関する章を参照してください。)  
# ---------------------------------------------------------------------  
# クライアントの必要なHTTPバージョン  
# 可能な値: 1000 = HTTP/1.0, 1001 = HTTP/1.1, ...  
# このディレクティブは、Apacheが内部で使用するのと同じ数値プロトコル値を使用します  
  mod_gzip_min_http             1000  
# (このディレクティブを使用することで、古いブラウザや検索エンジン  
# などを圧縮手順から除外できます: ユーザーエージェントが  
#  ここで指定されたHTTPレベルを理解できる能力を宣言しない場合、  
#  圧縮されていないデータのみが配信されます - 何ができると主張しても関係ありません。  
#  値「1001」は特にNetscape 4.xや多くのプロキシサーバーを除外します。)  
# ---------------------------------------------------------------------  
# 処理されるHTTPメソッド  
# 可能な値: 'GET', 'POST'または両方の値のリスト。  
  mod_gzip_handle_methods        GET POST  
# (このディレクティブを使用することで、特にPOSTリクエストを  
#  圧縮手順から除外できます。  
#  以前のmod_gzipバージョンによるこれらのリクエストの処理に  
#  問題が発生することが知られています。  
#  バージョン1.3.19.2a以前は、この値は設定可能ではありませんでした。)
# ---------------------------------------------------------------------  


###############  
### フィルター ###  
###############  
  
# ---------------------------------------------------------------------  
# どのファイルを圧縮しますか?  
#  
# 各フェーズ中の処理順序は重要ではありませんが、  
#  リクエストのコンテンツの圧縮をトリガーするには、このリクエストが  
#  a) *両方のフェーズのいずれかのインクルードルールに  
#  一致する必要があります*  
#  b) *両方のフェーズのいずれかの除外ルールに一致してはならない。*  
#  これらのルールは最小限ではなく、あくまで例として提供されています。  
#
# このセクションのディレクティブのすべてのパラメータ値は  
# 正規表現として評価され、*大文字小文字を区別しません。  
# ---------------------------------------------------------------------  
# フェーズ1: (reqheader, uri, file, handler)  
# ========================================  
# NO:   gzippedコンテンツを要求するが、  
#       正しく処理できない特別な壊れたブラウザ  
  mod_gzip_item_exclude         reqheader  "User-agent: Mozilla/4.0[678]"
# バージョン1.3.19.2a以降、私は*フィルターの使用を避けることをお勧めします*  
# *ユーザーエージェント*に対して、これはHTTPヘッダー「Vary: User-Agent」を生成し、  
#  プロキシサーバーにとってより困難にします。
#  
# JA:   HTMLドキュメント  
  mod_gzip_item_include         file       \.html$  
#  
# NO:   インクルードファイル / JavaScript & CSS (Netscape4のバグのため)  
  mod_gzip_item_exclude         file       \.js$  
  mod_gzip_item_exclude         file       \.css$  
#  
# YES:  CGIスクリプト  
  mod_gzip_item_include         file       \.pl$  
  mod_gzip_item_include         handler    ^cgi-script$  
#  
# フェーズ2: (mime, rspheader)  
# ===========================  
# YES:  通常のHTMLファイル、通常のテキストファイル、Apacheディレクトリリスト  
  mod_gzip_item_include         mime       ^text/html$  
  mod_gzip_item_include         mime       ^text/plain$  
  mod_gzip_item_include         mime       ^httpd/unix-directory$  
#  
# NO:   画像 (GIFなど、ほとんどの場合何も節約できません)  
  mod_gzip_item_exclude         mime       ^image/  
# ---------------------------------------------------------------------  
# 実際、mod_gzipは最初のオペランドの最初の4文字のみをチェックしています  
# (uriの場合は最初の2文字のみ)  
# ---------------------------------------------------------------------  
# mod_gzip_itemルールのテーブル (includeおよびexclude)には  
# 256エントリを超えることはできません; この数を超えると、mod_gzipは  
#  "mod_gzip: ERROR: Item index is full"というメッセージを出力し、  
#  Apacheサーバーに設定エラーを報告します。  
# ---------------------------------------------------------------------  
# ここで説明されているディレクティブ値は、圧縮のために選択されたリクエストを  
# *最も正確に*記述することを目的としています。  
# 特にmimeルールについては、HTTP  
# ヘッダー「Content-Type」(mod_gzipがこのルールのためにチェックするもの)が  
# いくつかのケースではMIMEタイプだけでなく、  
# 追加の文字セット記述(charset)を含む場合があります。  
# この場合、処理されるリクエストについては、  
# それに対応する値の末尾の「$」文字を削除する必要があります。  
# そうすれば、今度はこの値のプレフィックスのみが一致するかどうかがテストされます。  
# ---------------------------------------------------------------------  


##########################  
### 転送エンコーディング ###  
##########################  
  
# ---------------------------------------------------------------------  
# mod_gzipにHTTPヘッダーを排除させる  
#    'Transfer-encoding: chunked'  
#  チャンクを1つの(圧縮可能な)パケットに結合させる  
  mod_gzip_dechunk              Yes  
# (これは、特にCGIおよびSSIページ、  
#  さらには一部のJava Servletインタープリターによって生成されたページの  
#  処理に必要です。  
# ---------------------------------------------------------------------  


###############  
### ロギング ###  
###############  
  
# ---------------------------------------------------------------------  
# 圧縮効果をテストするための拡張ログ形式  
  LogFormat                     "%h %l %u %t \"%V %r\" %  
# ---------------------------------------------------------------------  
# 追加のログファイルを作成  
  CustomLog                     logs/mod_gzip.log common_with_mod_gzip_info2  
# (もちろん、通常のログファイル形式を再定義できますが、  
#  標準のWeb分析ツールによる評価のために  
#  その形式を標準互換のままにしておくことができます。  
#  したがって、別のログファイルを作成します。)  
# ---------------------------------------------------------------------  
# Apacheのaccess_log内で配信されたファイルのボリューム計算:  
# HTTPヘッダーサイズ(バイト単位)を総出力サイズの一部としてカウント  
  mod_gzip_add_header_count     Yes  
# (これは純粋なドキュメントコンテンツよりも多くなりますが、  
#  HTTPリクエストの総出力トラフィックをより現実的に記述します)  
# ---------------------------------------------------------------------

###############  
### プロキシ ###  
###############  
  
# ---------------------------------------------------------------------  
# 'Vary' HTTPヘッダーを送信  
  mod_gzip_send_vary            On  
# (このディレクティブに関するキャッシングの章を参照してください。)  
#  *これを変更しないでください、あなたが何をしているかを完全に理解している場合を除いて!*  
# ---------------------------------------------------------------------
  

モジュールのロード順序

このモジュールを動的に追加する際には、mod_gzipを最後の複数のLoadModuleディレクティブの1つとして指定する必要があることを考慮してください。

これは、ApacheがLoadModuleディレクティブからスタックを内部的に構築し、後でそれを逆順で評価するためです。

mod_gzipはApacheのtype_checkerルーチンにフックしますが、リクエストの処理を担当することを宣言するすべてのモジュールの最初のものだけが、実際にApacheによってアクティブ化されます。したがって、mod_gzipは、出力を自分自身にリダイレクトし、その後に後処理を行いたいモジュールの前にアクティブ化される必要があります。これらのモジュールが同じtype_checkerインターフェースを使用しようとする限り… そうでない場合は、このディレクティブの順序から独立して動作することが*できるかもしれません。

Apacheの起動メッセージ中(例えばApacheのエラーログ内に見つけることができます)には、個別のバージョン仕様を持つモジュールが、モジュールチェーン内に表示される順序で正確にリストされる場合があります; そこでmod_gzipは、圧縮することを意図された他のモジュールの前にリストされる必要があります。

この文書の元の場所: http://www.schroepl.net/projekte/mod_gzip/config.htm

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。