Apache 2.2 の新機能の概要 - Apache HTTP サーバ バージョン 2.2

Apache Server 2.2

<-

Apache 2.2 の新機能の概要

この文書では、Apache HTTP サーババージョン 2.0 と 2.2 の主な違いについて 記述しています。 バージョン 1.3 からの新機能 については 2.0 の新機能 の文書をご覧下さい。

top

コア機能の拡張

Authn/Authz
認証と認可のモジュールは再構成されました。 新しい mod_authn_alias モジュールは認証の設定を 非常に簡単化してくれます。 モジュール名の変更開発者向けの変更 を見てください。 そこには、 これらの変更がどのようにユーザとモジュール開発者に影響するかが 書いてあります。
キャッシュ
mod_cachemod_disk_cache そして、 mod_mem_cache はとても多くの変更を受けていて、 製品としての品質があると考えられます。 htcacheclean が導入され、 mod_disk_cache の設定がシンプルになりました。
設定
デフォルトの設定レイアウトは簡単化されモジュラー化されました。 共通して使用される機能に使われる設定の断片は、今や Apache に 組み込まれていて、メインのサーバ設定に容易に追加することが できます。
緩やかな停止
最新の 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 の サポートを提供します。
正規表現ライブラリの更新
Perl Compatible Regular Expression Library (PCRE: Perl 互換正規表現ライブラリ) の バージョン 5.0 を入れました。 httpd の configure 時に --with-pcre のフラグを渡すことで、システムが インストールしている PCRE を利用するように設定できます。
高機能フィルター
mod_filter は、出力フィルターの連鎖に動的な 設定を導入しています。 これは、2.0 アーキテクチャにある、ややこしい依存と順序問題を 回避するために、リクエスト又はレスポンスヘッダや環境変数に 基づいて、フィルターを条件付きで挿入できるようにしています。
大ファイルサポート
httpd は、最新の 32-bit Unix システムでの 2GB より大きなファイルのサポートを取り入れてビルドされます。 >2GB であるリクエストボディの扱いも追加されています。
Event MPM
event MPM は、 Keep Alive のリクエストを受け付けて 処理するのに、別個のスレッドを使います。伝統的には Keep Alive の リクエストを扱うのに、ワーカを使用する必要がありました。 Keep Alive のタイムアウトが来るまでは、そのワーカを再利用 できませんでした。
SQL データベースのサポート

mod_dbdと、 apr_dbd の枠組みを 併用することで、SQL を必要とするモジュールを直接サポートします。 スレッド MPM でコネクションプールをサポートします。

top

モジュールの拡張

Authn/Authz
aaa ディレクトリのモジュールは名前を変えられ、ダイジェスト認証を よりよくサポートするようになっています。 例えば、 mod_authmod_auth_basicmod_authn_file に分けられ、 mod_auth_dbmmod_authn_dbm と名前を変更し、 mod_access は、 mod_authz_hostと名前を変えられています。 また、新しいモジュール mod_authn_alias ができて、 ある種の認証設定を簡単化します。
mod_authnz_ldap
このモジュールは 2.0 モジュールmod_auth_ldap の 2.2 Authn/Authz 枠組みへの取り込みです。 LDAP の属性値と複雑な検索フィルターを使って Require ディレクティブに 取り込むことを新機能として含んでいます。
mod_authz_owner
ファイルシステムの所有者に基づいてファイルへのアクセスを認可する 新しいモジュールです。
mod_version
稼働するサーバのバージョン数に基づいて設定ブロックを有効にする、 新しいモジュールです。
mod_info
新しく、 ?config 引数を追加しました。 これは、Apache によって解析される設定ディレクティブを、ファイル名と 行数を付けて表示します。 また、モジュールは httpd -V と同様の、リクエストフックの 順序と追加のビルド情報を表示します。
mod_ssl
RFC 2817 に従って、非暗号クリアテキストから TLS 暗号へのコネクション グレードアップを追加しました。
mod_imagemap
mod_imap は、ユーザの混同を避けるため、 mod_imagemap へと名前の変更を行いました。
top

プログラムの拡張

httpd
新しくコマンドラインのオプションとして -M が追加されました。このオプションでは現在の設定で読み込まれる 全てのモジュールがリストされます。 -l オプションとは違って、このリストには mod_so で読み込まれる DSO を含んでいます。
httxt2dbm
テキストの入力から dbm ファイルを生成するのに使われる、新しい プログラムです。 RewriteMap で使われる dbm のマップタイプに使用されます。
top

モジュール開発者向けの変更

APR 1.0 API
Apache 2.2 は APR 1.0 API を使用します。 使われなくなった関数とシンボルは APRAPR-Utilから削除されました。 詳細については APR Webサイトを見てください。
Authn/Authz
付属の認証と認可のモジュールは次のように名前を変更しました:
  • mod_auth_* -> HTTP 認証メカニズムを実装する モジュール
  • mod_authn_* -> 認証バックエンドを提供する モジュール
  • mod_authz_* -> 認可(又はアクセスの制御)を 実装するモジュール
  • mod_authnz_* -> 認証と認可の両方を実装する モジュール
新しい認証バックエンド提供のスキームがあって、新しいバックエンドの 構築を非常にやさしくしてくれます。
接続エラーのログ
新しい関数 ap_log_cerror が、クライアントの接続の 際のエラーを記録するために追加されました。ログの出力メッセージには クライアントの IP アドレスが含まれます。
設定テストのフックを追加
あたらしいフックである test_config が追加されました。 これにより、ユーザが -thttpd の 起動時に与えた時だけに実行される、特別なコードを入れることが できます。
スレッド MPM's のスタックサイズ設定
新しいディレクティブである、 ThreadStackSize が全てのスレッド MPM のスタックサイズの 設定に追加されました。これはサードパーティのモジュールで、 デフォルトのスタックサイズが小さいことがあるために、必要と なりました。
出力フィルターのプロトコルハンドリング
過去においては、個々のフィルターは、それぞれが影響をおよぼす ところでは、応答ヘッダを正しく生成する責任がありました。 フィルターは、今は、共通するプロトコル管理を ap_register_output_filter_protocol 又は ap_filter_protocol を呼び出して mod_filter に 委任することができます。
モニターフックを追加
モニターフックを使って、モジュールを親 (root) のプロセスで レギュラー又はスケジュールのジョブを実行することが できます。
正規表現の API を変更
pcreposix.h ヘッダは既に削除されました; 新しい ap_regex.h によって置き換えました。 古いヘッダである POSIX.2 regex.h によって 公開されている実装は、今は、ap_regex.hap_ 名前空間の下に存在します。 regcomp と、 regexec 等々への呼び出しは ap_regcomp, ap_regexec などに置き換え られます。
DBD フレームワーク (SQL データベース API)

Apache 1.x と 2.0 では、SQL バックエンドを必要とするモジュールは それを自分で管理する責任がありました。車輪の再発明の問題を除いても、 これはとても非効率的なことです。例えばそれぞれのモジュールが自分 で接続を維持しなければなりません。

Apache 2.1 とその後は、 ap_dbd API が提供されており、 これを使ってデータベースの接続(スレッド化された又はスレッドでない MPM に最適化した戦略を含んで)を管理することができます。 一方、APR 1.2 および以降では apr_dbd API でデータ ベースとのやりとりを提供しています。

新しいモジュールはこれらを全ての SQL データベースの運用に利用する べきです。現存のアプリケーションは、実現可能であればどこでもこれらを 使うように更新され、透過的にあるいは推奨オプションとして ユーザに提供されるべきです。