Apache HTTP サーバ バージョン 2.0
Apache 2.0 の新機能の概要
この文書では、Apache HTTP サーババージョン 1.3 と 2.0 の主な違いについて記述しています。
コア機能の拡張
- Unix のスレッド
- POSIX スレッドをサポートしている Unix システム上では、 Apache はマルチプロセス、マルチスレッドのハイブリッドモードで 実行できるようになりました。これにより 多くの設定においてスケーラビリティが向上します。
- 新しいビルドシステム
- ビルドシステムは
autoconf
とlibtool
に基づいたものになるように、 新しく書き直されました。これにより、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_include
のINCLUDES
フィルタを使って 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 型のデータベースをサポートする ようになりました。