Apache 2.0 の新機能の概要

この文書では、Apache HTTP サーババージョン 1.3 と 2.0 の主な違いについて記述しています。

1.3 から 2.0 へのアップグレード
コア機能の拡張
Unix のスレッド
POSIX スレッドをサポートしている Unix システム上では、 Apache はマルチプロセス、マルチスレッドのハイブリッドモードで 実行できるようになりました。これにより 多くの設定においてスケーラビリティが向上します。
新しいビルドシステム
ビルドシステムは autoconflibtool に基づいたものになるように、 新しく書き直されました。これにより、Apache の configure のシステムは 他のパッケージと似たものになりました。
マルチプロトコルサポート
Apache に複数のプロトコルを扱うための機構が備わりました。 例として mod_echo が書かれています。
Unix 以外のプラットフォームのサポートの改善
Apache 2.0 は BeOS、OS/2、Windows などの Unix 以外の プラットフォームで、より速く、より安定して動作するようになりました。 プラットフォーム特有の マルチプロセッシングモジュール (MPM) と Apache Portable Runtime (APR) の導入により、 ネイティヴの API で実装されるようになり、 バグが多く、性能の悪いことが多い POSIX エミュレーションレイヤの使用を 回避することができました。
新しい Apache API
2.0 ではモジュールの API が大きく変わりました。 1.3 にあったモジュールの順番/優先度の問題の多くは なくなっているはずです。2.0 は優先度の選択をほとんどを自動的に行ない、 モジュールの順番はより柔軟性を高めるためにフック毎に行なわれるように なりました。また、コア Apache サーバにパッチをあてることなく 追加のモジュール機能を提供することができるように新しい関数が 追加されました。
IPv6 サポート
Apache が使用している Apache Portable Runtime library が IPv6 をサポートしているシステムでは Apache は デフォルトで IPv6 のソケットを listen します。さらに、 Listen, NameVirtualHost, VirtualHost の各ディレクティブが IPv6 のアドレスを サポートするようになりました (例えば、 "Listen [2001:db8::1]:8080")。
フィルタ
Apache のモジュールはサーバから送られてきたり、サーバへ 送るストリームに対して動作するフィルタとして書くことができるように なりました。これにより、例えば CGI スクリプトの出力を mod_includeINCLUDES フィルタを使って Server Side Include のディレクティブを解析する、 というようなことが可能になりました。mod_ext_filter で外部プログラムをフィルタとして動作させることができます。 これは CGI プログラムをハンドラとして動作させるのと よく似た方法でできます。
多言語エラー応答
ブラウザへのエラー応答のメッセージが、SSI の文書を使って 複数の言語で提供されるようになりました。見ための一貫性を保つために 管理者がカスタマイズすることもできます。
設定の簡素化
多くの混乱を招きがちなディレクティブが簡素化されました。 よく混乱を引き起こしていた Port ディレクティブと Bind ディレクティブは なくなりました。Listen ディレクティブのみが IP アドレスのバインドに使われます。 ServerName ディレクティブでは リダイレクトと vhost の認識のためだけにサーバの名前とポート番号を 指定します。
Windows NT のネイティヴ Unicode サポート
Windows NT 上の Apache 2.0 はファイル名の文字エンコード全てに utf-8 を使うようになりました。これらは Unicode ファイルシステムに 直接変換されるので、Windows 2000 と Windows XP を含む、全ての Windows NT 系で多言語サポートが提供されます。 このサポートは、ファイルシステムのアクセス時にローカルの コードページを使う Windows 95, 98, ME には適用されません。
正規表現ライブラリのアップデート
Apache 2.0 は Perl 互換正規表現ライブラリ (PCRE) を含んでいます。 正規表現の評価には、より強力になった Perl 5 構文を使用します。
モジュールの拡張
mod_ssl
Apache 2.0 の新モジュール。このモジュールは OpenSSL が 提供する SSL/TLS 暗号プロトコルへのインタフェースです。
mod_dav
Apache 2.0 の新モジュール。このモジュールはウェブコンテンツを 送り、維持するための規格 HTTP Distributed Authoring and Versioning (DAV) を実装しています。
mod_deflate
Apache 2.0 の新モジュール。送信前に送信内容を圧縮して ネットワーク帯域を節約する、というリクエストをブラウザが 要求できるようにします。
mod_auth_ldap
Apache 2.0.41 の新モジュール。HTTP 基本認証の証明書を保存するのに、 LDAP データベースを使用できるようになります。 関連モジュールの mod_ldap で、 コネクションのプール機能と結果のキャッシュ機能が提供されます。
mod_auth_digest
このモジュールは共有メモリを使うことにより、プロセスをまたいだ セッションのキャッシュをサポートするようになりました。
mod_charset_lite
Apache 2.0 の新モジュール。この実験的なモジュールは キャラクタセットの変換や再符号化を可能にします。
mod_file_cache
Apache 2.0 の新モジュール。このモジュールには、 Apache 1.3 における mod_mmap_static 機能が含まれ、 また、追加のキャッシュ機能が加わっています。
mod_headers
このモジュールは Apache 2.0 で非常に柔軟性が 高くなりました。mod_proxy で使われるリクエストのヘッダを変更できるようになりましたし、 応答ヘッダを条件に応じて設定できるようになりました。
mod_proxy
proxy モジュールは新しいフィルタの機構を利用するためと、 より信頼できる、HTTP/1.1 に準拠した proxy を実装するために 完全に書き直されました。さらに、新しい Proxy 設定セクションがproxy されるサイトのより読みやすく (内部的にもより速い) 設定を提供します。オーバーロードされた <Directory "proxy:... > 設定はサポートされていません。このモジュールは proxy_connect, proxy_ftp, proxy_http といった、特定のプロトコルをサポートする モジュールに分割されるようになりました。
mod_negotiation
クライアントが NOT ACCEPTABLE や MULTIPLE CHOICES 応答の 代わりに常に単独の文書を受けとるようにするために、新しいディレクティブ ForceLanguagePriority を使うことができるようになりました。 さらに、より一貫性のある結果を提供するために ネゴシエーションと MultiViews のアルゴリズムが改善され、 文書の内容を含めることのできる、新しい形式のタイプマップが 提供されるようになりました。
mod_autoindex
Autoindex されるディレクトリの内容一覧が、 きれいに表示されるために HTML のテーブルを使うように 設定できるようになりました。また、バージョンによるソーティングなど、 より細かいソーティングの制御ができるようになり、ディレクトリ の内容一覧をワイルドカードにより選別することができるようにもなりました。
mod_include
新しいディレクティブにより、SSI のデフォルトの開始タグと終了タグを 変更できるようになりました。また、エラーと時刻の形式の設定が SSI の 文書中ではなく、主設定ファイル中で行なえるようになりました。 正規表現の解析とグループ化の結果 (Perl の正規表現の構文に 基づいたものになりました) を mod_include の変数 $0 .. $9 により取得できるようになりました。
mod_auth_dbm
AuthDBMType ディレクティブにより、複数の DBM 型のデータベースをサポートする ようになりました。