Apache HTTP サーバ バージョン 2.2

この文書では、Apache HTTP サーババージョン 2.0 と 2.2 の主な違いについて 記述しています。 バージョン 1.3 からの新機能 については 2.0 の新機能 の文書をご覧下さい。
mod_authn_alias モジュールは認証の設定を
非常に簡単化してくれます。 モジュール名の変更
と 開発者向けの変更 を見てください。 そこには、
これらの変更がどのようにユーザとモジュール開発者に影響するかが
書いてあります。mod_cache と
mod_disk_cache そして、
mod_mem_cache はとても多くの変更を受けていて、
製品としての品質があると考えられます。
htcacheclean が導入され、
mod_disk_cache の設定がシンプルになりました。prefork と、worker
そして event MPM は httpd
を、
graceful-stop
のシグナル経由で、緩やかにシャットダウンさせます。
GracefulShutdownTimeout
のディレクティブがオプションのタイムアウトとして追加され、これに
よってhttpd は、サービス中リクエストの
状態如何に関わらず強制終了します。mod_proxy_balancer は、
負荷分散サービスを mod_proxy に提供します。
新しいモジュール mod_proxy_ajp は、
Apache Tomcat
で使われる、 Apache JServ Protocol version 1.3 の
サポートを提供します。httpd の configure 時に
--with-pcre のフラグを渡すことで、システムが
インストールしている PCRE を利用するように設定できます。mod_filter は、出力フィルターの連鎖に動的な
設定を導入しています。
これは、2.0 アーキテクチャにある、ややこしい依存と順序問題を
回避するために、リクエスト又はレスポンスヘッダや環境変数に
基づいて、フィルターを条件付きで挿入できるようにしています。httpd は、最新の 32-bit Unix システムでの 2GB
より大きなファイルのサポートを取り入れてビルドされます。
>2GB であるリクエストボディの扱いも追加されています。event MPM は、 Keep Alive のリクエストを受け付けて
処理するのに、別個のスレッドを使います。伝統的には Keep Alive の
リクエストを扱うのに、ワーカを使用する必要がありました。
Keep Alive のタイムアウトが来るまでは、そのワーカを再利用
できませんでした。mod_dbdと、 apr_dbd の枠組みを
併用することで、SQL を必要とするモジュールを直接サポートします。
スレッド MPM でコネクションプールをサポートします。
mod_auth は
mod_auth_basic と
mod_authn_file に分けられ、
mod_auth_dbm は
mod_authn_dbm と名前を変更し、
mod_access は、
mod_authz_hostと名前を変えられています。
また、新しいモジュール mod_authn_alias ができて、
ある種の認証設定を簡単化します。
mod_authnz_ldapmod_auth_ldap の
2.2 Authn/Authz 枠組みへの取り込みです。
LDAP の属性値と複雑な検索フィルターを使って
Require ディレクティブに
取り込むことを新機能として含んでいます。mod_authz_ownermod_versionmod_info?config 引数を追加しました。
これは、Apache によって解析される設定ディレクティブを、ファイル名と
行数を付けて表示します。
また、モジュールは httpd -V と同様の、リクエストフックの
順序と追加のビルド情報を表示します。mod_sslmod_imagemapmod_imap は、ユーザの混同を避けるため、
mod_imagemap へと名前の変更を行いました。httpd-M
が追加されました。このオプションでは現在の設定で読み込まれる
全てのモジュールがリストされます。
-l オプションとは違って、このリストには
mod_so で読み込まれる DSO を含んでいます。httxt2dbmRewriteMap
で使われる dbm のマップタイプに使用されます。APR と
APR-Utilから削除されました。
詳細については
APR Webサイトを見てください。mod_auth_* -> HTTP 認証メカニズムを実装する
モジュールmod_authn_* -> 認証バックエンドを提供する
モジュールmod_authz_* -> 認可(又はアクセスの制御)を
実装するモジュールmod_authnz_* -> 認証と認可の両方を実装する
モジュールap_log_cerror が、クライアントの接続の
際のエラーを記録するために追加されました。ログの出力メッセージには
クライアントの IP アドレスが含まれます。test_config が追加されました。
これにより、ユーザが -t を httpd の
起動時に与えた時だけに実行される、特別なコードを入れることが
できます。ThreadStackSize が全てのスレッド MPM のスタックサイズの
設定に追加されました。これはサードパーティのモジュールで、
デフォルトのスタックサイズが小さいことがあるために、必要と
なりました。ap_register_output_filter_protocol 又は
ap_filter_protocol を呼び出して
mod_filter に 委任することができます。pcreposix.h ヘッダは既に削除されました;
新しい ap_regex.h によって置き換えました。
古いヘッダである POSIX.2 regex.h によって
公開されている実装は、今は、ap_regex.h の
ap_ 名前空間の下に存在します。
regcomp と、 regexec 等々への呼び出しは
ap_regcomp, ap_regexec などに置き換え
られます。Apache 1.x と 2.0 では、SQL バックエンドを必要とするモジュールは それを自分で管理する責任がありました。車輪の再発明の問題を除いても、 これはとても非効率的なことです。例えばそれぞれのモジュールが自分 で接続を維持しなければなりません。
Apache 2.1 とその後は、 ap_dbd API が提供されており、
これを使ってデータベースの接続(スレッド化された又はスレッドでない
MPM に最適化した戦略を含んで)を管理することができます。
一方、APR 1.2 および以降では apr_dbd API でデータ
ベースとのやりとりを提供しています。
新しいモジュールはこれらを全ての SQL データベースの運用に利用する べきです。現存のアプリケーションは、実現可能であればどこでもこれらを 使うように更新され、透過的にあるいは推奨オプションとして ユーザに提供されるべきです。