<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML><HEAD>
<TITLE>New features with Apache 1.3</TITLE>
</HEAD>

<!-- English revision: 1.84 -->
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" 
      VLINK="#000080" ALINK="#FF0000">
    <div align="CENTER">
      <img src="images/sub.gif" alt="[APACHE DOCUMENTATION]" /> 

      <h3>Apache HTTP Server</h3>
    </div>


<H1 ALIGN="CENTER">Apache 1.3 の新機能の概要</H1>

<P>今回のリリースでの新しい特徴として、Apache の機能性の拡張について
ここでは説明します。
コア部分のコードが大きく変わりましたので、初期のバージョンの Apache
(および NCSA httpd) が受け付けたものでも、
新しい Apache では受けつけないものがあります。
なんらかの問題がある場合には 
<A HREF="misc/compat_notes.html">互換性に関して</a>でチェックしてく
ださい。</P>

<P>Apache 1.2 からのアップグレードは
<a href="upgrading_to_1_3.html">「アップグレードに関して」</a>
を読むと良いでしょう。
</P>

<P>拡張: <A HREF="#core">コア</A> |
<A HREF="#performance">パフォーマンス</A> |
<A HREF="#config">設定</A> |
<A HREF="#mod">モジュール</A> |
<A HREF="#api">API</A> |
<A HREF="#misc">その他</A></P>

<HR>

<H2><A NAME="core">コアの拡張:</A></H2>

<DL>
<DT><STRONG><A HREF="dso.html">Dynamic Shared Object (DSO) のサポート</A></STRONG>
<DD>実行時にApache のモジュールをロードすることが可能になりました。
    これにより、モジュールは必要なときだけサーバのメモリ領域に
    読みこまれることになり、Apache 全体のメモリの使用をかなり減らすことに
    なります。
    DSO は現在 FreeBSD, OpenBSD, NetBSD, Linux, Solaris, SunOS,
    Digital UNIX, IRIX, HP/UX, UnixWare, NetWare, AIX, ReliantUnix,
    純粋な SVR4 プラットフォームでサポートされています。

<DT><STRONG><A HREF="windows.html">Windows NT/95 のサポート</A></STRONG>
<DD>Apache は Windows NT と Windows 2000 をサポートするようになりました。
    Windows 95, 98, ME でも Apache は動作するかもしれませんが、これらの
    コンシューマ製品の環境での使用は推奨していません。そして、その使用
    についての状態は、実験的なものとしたままです。Windows 上で動作
    している 1.3.15 より前のすべてのバージョンの Apache は、ベータ版
    品質のリリースだと考えてください。

<DT><STRONG><A HREF="netware.html">NetWare 5.x のサポート</A></STRONG>
<DD>Apache は NetWare 5.x を実験的にサポートするようになりました。

<DT><STRONG><A HREF="sourcereorg.html">ソースの再構成</A></STRONG>
<DD>Apache のソースファイルは再構成されました。
    Apache のユーザにとって主要な変更点は <CODE>Configuration</CODE>
    における "Module" 行がが "AddModule" で置き換わり、構文が少し変わった
    ことです。モジュールの作者にとっては、ユーザがモジュールを容易に
    追加できるようにするための変更がいくつかなされています。

<DT><STRONG>信頼性のあるパイプされたログ</STRONG>
<DD>ほとんどすべての Unix アーキテクチャで Apache は「信頼性のある」
    パイプされたログを <A HREF="mod/mod_log_config.html">mod_log_config</A>
    で実装しています。ここで、信頼性のあるとは、ログを収集している
    子プロセスが何らかの理由で死んだときに、Apache はサーバ全体を
    再起動することなく、そこから回復してログ用プロセスを再起動することが
    できるという意味です。更に、ログを収集している子プロセスが
    "詰まって" しまい、パイプを十分な回数読んでいないときも Apache は
    それを再起動します。これで、ログのローテーションやヒットの選別をしたり、
    複数の vhost (訳注: バーチャルホスト) のログを別々にリアルタイムで
    分けたり、その場での非同期の DNS 解決をしたりする機会ができます。
</DL>

<HR>

<H2><A NAME="performance">性能の改善</A></H2>

<UL>
 <LI>IP に基づいたバーチャルホストはハッシュテーブルを用いて調べられます。
 <LI>&lt;Directory&gt; 解析の速度向上。
 <LI>静的なリクエストに対するクリティカルパスのシステムコール数が減りました。
     これは通常すべてのリクエストで役立ちます。 (よくチューンされた
     設定において、1.2 では静的なリクエストでシステムコールが 45 あったのに
    対して、1.3 では 22 です)。
 <LI>スループット向上のために
     <A HREF="mod/mod_proxy.html#proxyreceivebuffersize">
     <CODE>ProxyReceiveBufferSize</CODE></A> ディレクティブは、
     <CODE>mod_proxy</CODE> からの外部接続に対して、
     より大きなネットワークバッファを与えます。
 <LI>複数の書き込みを一つのシステムコールですませるために低レベル I/O
     のルーチンでは (使用可能であれば) <CODE>writev</CODE> を
     使うようになっています。このルーチンでは
     メモリのバッファへのコピーもできるだけ避けています。
     その結果、大きなファイルの転送に使われる CPU 時間が少なくなります。
 <LI>静的なリクエストは <CODE>mmap</CODE> を用いて処理されます。
     これで、バイトはカーネルによりディスクのバッファからネットワークの
     バッファへ直接コピーされるだけになります。プログラムは、
     バイトのあちこちへのコピーをしません。
     (使用可能かつテストされているときのみ。) それは CPU 時間を減少させて
     させてしまいます。
 <LI>負荷が急激に増加したとき、サーバは速く子プロセスを起動して、
     素早く適応します。
 <LI>モジュールをディスパッチするコードは API の特定の部分を実装しない
     モジュールを繰り返しスキップするのを避けるよう最適化されています。
     (デフォルトのモジュールを組合せたサーバのプロファイルでは、
     このスキップはで CPU 時間の 5% を使用していました。)
 <LI>Unix のスコアボードの管理コードを再構成しました。
     これにより、多くの場合で子プロセスの数を数える時間が短くなりました。
     以前は各ヒットに対してスキャンが実行されていましたが、今は1秒に1回
     実行されます。多くのの子プロセスのある負荷の高いサーバでは、その違いが
     顕著だと思います。
 <LI>新しいシリアライズの方法を選択したことで Linux と IRIX での
    性能が改善されました。
 <LI><CODE><A
     HREF="mod/mod_log_config.html">mod_log_config</A></CODE> は
     コンパイル時にバッファへ書き込みをするように設定できるようになりました。
 <LI><CODE>strncpy()</CODE> を結果全体を 0 で埋める必要のない
     <CODE>ap_cpystrn()</CODE> で置き換えました。これは
     <CODE>mod_include</CODE> の速度に劇的な効果があります。
 <LI>内部の "table" API (キー/値 の文字列の対を保持するのに使われています)
     への追加により、多くの状況で最大 20% の性能の改善をもたらすように
     なりました。
</UL>

<P>詳しい情報は<A HREF="misc/perf-tuning.html">性能についての新しい
ドキュメント</A> を参照してください。
</P>

<HR>

<H2><A NAME="config">設定の拡張</A></H2>

<DL>
<DT><STRONG>サーバの設定ファイルの一元化</STRONG></DT>
<DD><EM>(Apache 1.3.4)</EM> 三つのサーバ設定ファイル
    (<SAMP>httpd.conf</SAMP>, <SAMP>srm.conf</SAMP>, <SAMP>access.conf</SAMP>)
    が <SAMP>httpd.conf</SAMP> ファイル一つにまとめられました。
    <SAMP>srm.conf</SAMP> と <SAMP>access.conf</SAMP> ファイルは、
    ウェブマスターが <SAMP>httpd.conf</SAMP> を見るようコメントが
    あるだけで、後は空になっています。更に、まとめられた
    <SAMP>httpd.conf</SAMP> ファイルでは、
    ディレクティブがより直感的で意味のある順番になるように
    再構成されました。
</DD>
<DT><STRONG>設定ファイルでの継続した行</STRONG></DT>
<DD>設定ファイルにおけるディレクティブの行は Unix の継続行を扱う
    通常の方法、すなわち '\' をその行の空白以外の最後の文字として
    置くことで、次の行をつなぐ形式を用いて、複数の行に分けることが
    できるようになりました。
</DD>
<DT><STRONG>Apache Autoconf-style Interface (APACI)</STRONG>
<DD>Apache 1.3 になるまでは、 Apache パッケージ全部を展開したらすぐに、
    ビルドしてインストールするようなバッチ的手順は提供されて
    いませんでした。しかし、トップディレクトリにある
    <CODE>configure</CODE> スクリプトと、それに対応する
    トップディレクトリの <CODE>Makefile.tmpl</CODE> ファイルで、
    それが実現されました。この目的は、GNU の Autoconf 形式の
    フロントエンドを提供することです。しして、これまでの
    <CODE>src/Configure</CODE> 関連要素のバッチ処理と、GNU 流の
    ディレクトリ構成でのパッケージインストールの両方が可能になります。
    古い設定方法で可能だったものオプションすべてに加えて、
    Apache 柔軟にカスタマイズするためのたくさんの新しいオプションが
    使用可能です。<BR>
    <STRONG>注意:</STRONG> デフォルトのインストールの構成は
    Apache 1.3.4 で変更されました。詳細については
    <CODE>README.configure</CODE> と <CODE>INSTALL</CODE> ファイルを
    参照してください。

<DT><STRONG>APache eXtenSion (APXS) サポートツール</STRONG>
<DD>Apache は実行時に dynamic shared object (DSO) ファイルから
    モジュールをロードすることを完全にサポートするようになりました。
    そこで、DSO に基づいたモジュールを Apache のソースとは
    別の場所でビルド、インストール、アクティブ化を行なう新しい
    サポートツール <CODE>apxs</CODE> が作成されました。
    これにより、プラットフォームに依存した DSO ビルド用のコマンドは
    ユーザから完全に隠され、Apache のソースツリーの外でモジュールを
    ビルドすることが容易になっています。
    これを達成するために、APACI は Apache の C のヘッダファイルを
    <CODE>apxs</CODE> と一緒にインストールします。
 
<DT><A HREF="install.html#install"><STRONG>Apache のデフォルト
    ディレクトリパスを <CODE>/usr/local/apache/</CODE>へ変更</STRONG></A><BR>
<DD>Apache のデフォルトの ServerRoot ディレクトリが、NCSA 互換の
    <CODE>/usr/local/etc/httpd/</CODE>から <CODE>/usr/local/apache/</CODE>
    に変更されました。これはデフォルトの設定 (とドキュメント) の変更
    だけです。もちろん、Apache を起動するときに <A HREF="invoking.html"> -d
    <EM>ServerRoot</EM> と -f <EM>httpd.conf</EM></A> を指定することで
    変更することができます。

<DT><STRONG>HTTP/1.1 形式のバーチャルホストの改善</STRONG>
<DD><A
    HREF="mod/core.html#namevirtualhost"><CODE>NameVirtualHost</CODE></A>
    という新しいディレクティブを仕様して IP アドレス:ポートの対を
    指定することで、
    HTTP/1.1 形式のバーチャルホストとは、クライアントからの
    <CODE>Host:</CODE> ヘッダにバーチャルホスト基づくものです。
    以前はこのアドレスは暗黙の内にマシンの "メインアドレス" と
    同じにしていましたが、これは数多くの問題を引き起こし、また
    機能も十分ではありませんでした。設定の詳細についは
    <A HREF="vhosts/">「Apache バーチャルホストドキュメンント」</A>
    を参照してください。

<DT><STRONG><CODE>Include</CODE> ディレクティブ</STRONG>
<DD>設定ファイルのパースの途中で
    <A HREF="mod/core.html#include" ><CODE>Include</CODE></A>
    ディレクティブに出会うと、直ちに他の設定ファイルをその場所に
    挿入します。

<DT><STRONG>バーチャルホストの設定のデバッグのための
     -S コマンドラインオプション</STRONG>
<DD>コマンドラインオプション <CODE>-S</CODE> を付けて Apache を
    起動すると、<CODE>VirtualHost</CODE> をどのようにパース
    したかという情報を表示します。
    これはバーチャルホストの設定をデバッグしようとする場合に
    便利です。

<DT><STRONG>HTTP メッソドの制御</STRONG>
<DD><A HREF="mod/core.html#limitexcept">&lt;LimitExcept&gt; と
    &lt;/LimitExcept&gt;</A> はアクセス制御命令のグループを囲み、
    引数として指定していない HTTP アクセスメッソドについてその
    アクセス制御命令が適用されます。すなわち、これは &lt;Limit&gt;
    セクションの逆で、標準のメソッドと非標準ないしは認識できない
    メソッドの両方を制御するために使うことができます。
</DL>

<HR>

<H3><A NAME="mod">モジュールの拡張</A></H3>

<DL>
<DT><A HREF="mod/mod_negotiation.html"><STRONG>mod_negotiation の改善
    </STRONG></A><BR>
<DD>オプショナルのコンテントネゴシエーション (MultiViews) モジュールが
    Apache 1.3.4 で全体的に修正され、最新の HTTP/1.1 改訂版と
    実験的に RFC 2295 と RFC 2296 の Transparent Content Negotiation 機能が
    追加されました。

<DT><A HREF="mod/mod_speling.html"><STRONG>NEW -
    綴り修正モジュール (訳注: mod_speling)</STRONG></A><BR>
<DD>このオプショナルなモジュールは、サーバから要求されたドキュメントの
    パス名でしばしば見られる綴りや大文字小文字の間違いを修正します。

<DT><A HREF="mod/mod_setenvif.html"><STRONG>NEW -
    条件付き環境変数の設定 (訳注: mod_setenvif)</STRONG></A><BR>
<DD><A HREF="mod/mod_setenvif.html#SetEnvIf">
    <CODE>SetEnvIf</CODE></A> ディレクティブと
    <A HREF="mod/mod_setenvif.html#SetEnvIfNoCase">
    <CODE>SetEnvIfNoCase</CODE></A> ディレクティブが追加されました。
    これにより、
    リクエストの属性に応じてサーバと CGI の環境変数を設定することができます。

<DT><STRONG><A HREF="mod/mod_mime_magic.html">NEW - "Magic"
MIME タイプ (訳注: mod-mime_magic)</A></STRONG>
    <DD>オプショナルな <CODE>mod_mime_magic</CODE> が追加されました。
    このモジュールは、"マジックナンバー" やファイルの内容から得られる情報
    を使用して、対象となるコンテンツの属性を調べます。
    この情報は、ファイルの拡張子からそのファイルのメディアタイプを
    決定できない場合に使用されます。

<DT><STRONG><A HREF="mod/mod_unique_id.html">NEW - 一意に識別可能な
    ID (訳注: mod_unique_id)</A></STRONG>
<DD><A HREF="mod/mod_unique_id.html">mod_unique_id</A>
    mod_unique_id を組み込むことで、あるヒットと他のヒットとを区別する
    ユニークな識別子を生成するようになります
    (ここでの 「ユニークな」にはいくつか制限があります。) 
    その識別子は、環境変数
    <CODE>UNIQUE_ID</CODE> として参照することができます。

<DT><STRONG>mod_proxy の拡張:</STRONG>
<dd>
<UL>
<LI>ftp proxy のログインでのより簡単かつ安全な認証:
    接続先の ftp サーバが要求しているのに、URL として ftp にユーザ名と
    パスワードが指定されていない場合、Apache は
    "[401] Authorization Required" ステータスを返すようになりました。
    このステータスコードをクライアントが受け取ると、通常は
    「ユーザ名とパスワードを入力してください」 というダイアログを
    表示し、そこで入力されたユーザ認証を用いたリクエストが再び
    行なわれます。こうすることで、リクエスト URL に認証情報を
    含ませて指定する方法 (古い proxy サーバでは平文でログに記録されてしまう
    可能性があります) よりも若干安全になっています。

<LI>新規の <SAMP>AllowCONNECT</SAMP> ディレクティブにより、proxy
    CONNECT メソッドが接続可能なポートが指定できるようになりました。
    これにより、Apache 1.3.2 以前ではエラーメッセージが返されていた
    https://some.server:8443/ について proxy することができるようになります。
<LI>RFC2068 で指定されている HTTP/1.1 の "Via:" ヘッダを
    サポートするようになりました。新規の
    <A HREF="mod/mod_proxy.html#proxyvia"><CODE>ProxyVia</CODE></A>
    ディレクティブで "Via:" のサポートのオン/オフを切り替えることができます。
    また、プライバシー上の理由から、外に出て行くヘッダから "Via:"
    を削るようにすることができます。
<LI>HTTP/1.1 で規定されている "Max-Forwards:" TRACE ヘッダを
    サポートするようになりました。それにより、
    (他の proxy サーバでもサポートしていれば) プロキシーの
    連鎖をたどってリクエストのパスをトレースすることができます。
<LI><A
    HREF="mod/mod_proxy.html#noproxy"><CODE>NoProxy</CODE></A> ディレクティブ
    と <A HREF="mod/mod_proxy.html#proxydomain"><CODE>ProxyDomain</CODE></A>
    ディレクティブが追加されました。
    イントラネットでの利用に便利です。
<LI><CODE><A HREF="mod/mod_proxy.html#proxypassreverse">
    ProxyPassReverse</A></CODE> ディレクティブ命令が新規に追加されました。
    これにより、HTTP のリダイレクトレスポンスにおける <TT>Location:</TT>
    ヘッダ中の URL を調整することができます。
<LI>FTP サーバのディレクトリツリーでの移動が、より簡単になりました。
</UL>

<DT><A HREF="mod/mod_include.html#flowctrl"><STRONG><CODE>mod_include</CODE>
    の文字列比較の拡張</STRONG></A><BR>
<DD>文字列に基づいた server-side include (SSI) のフロー制御
    ディレクティブに未満 (&lt;)、以下 (&lt;=)、より大きい (&gt;)、
    以上 (&gt;=) が含められました。以前は等しいか等しくないかの
    比較しかできませんでした。

<DT><STRONG>ServerRoot からの相対パスでの auth ファイル名指定</STRONG>
<DD>様々な認証モジュールの auth ファイル名の指定は、フルパスで無い場合は
    ServerRoot からの相対パスとして扱われるようになりました。

<DT><A HREF="mod/mod_autoindex.html"><STRONG>ディレクトリのインデックスの拡張:
(訳注: mod_autoindex)</STRONG></A>

<DD><UL>
    <LI><STRONG>コードの分割:</STRONG> <CODE>mod_dir</CODE> モジュールが、
        ディレクトリのインデックスファイルを扱う <A
        HREF="mod/mod_dir.html">mod_dir</A> と、ディレクトリ内のファイル一覧を
        作成する <A HREF="mod/mod_autoindex.html">mod_autoindex</A> の
        二つに分割されました。これにより、クリティカルなサーバから
        インデックスの機能を外すことができます。

    <LI><STRONG>ソート可能:</STRONG> カラムのタイトルをクッリクすると
        そのカラム値によるリストのソートを行ないます。この機能は
        <A HREF="mod/mod_autoindex.html#indexoptions">IndexOptions</A>
        の <CODE>SuppressColumnSorting</CODE> キーワードで無効にできます。

    <LI>README.html ファイルに HTML のヘッダが記述されている場合は、
        <A HREF="mod/mod_autoindex.html#indexoptions:suppresshtmlpreamble">
        <CODE><STRONG>SuppressHTMLPreamble</STRONG></CODE></A> を
        使うことができます。

    <LI>The <A HREF="mod/mod_autoindex.html#indexoptions">
        <CODE><STRONG>IndexOptions</STRONG></CODE></A> ディレクティブは、
        キーワード引数に対してインクリメンタルプレフィックス
        を使用できるようになりました
        (<A HREF="mod/core.html#options">Options</A>
        ディレクティブと同様に、機能に対するキーワードの機能の追加を +/- で
        指定します)。
        これにより、同じディレクトリに適用される複数の IndexOptions
        ディレクティブを一つにまとめることができます。

    <LI><A HREF="mod/mod_autoindex.html#indexoptions:iconheight"
        ><STRONG><CODE>IconHeight</CODE></STRONG></A> と
	<A HREF="mod/mod_autoindex.html#indexoptions:iconwidth"
        ><STRONG><CODE>IconWidth</CODE></STRONG></A>
        でディレクトリの一覧表示での
        <CODE>&lt;IMG&gt;</CODE> タグの height 属性と width
        属性を設定できます。

    <LI><A HREF="mod/mod_autoindex.html#indexoptions">IndexOptions</A>
        ディレクティブに新規に追加された
        <A HREF="mod/mod_autoindex.html#indexoptions:namewidth"
        ><STRONG><CODE>NameWidth</CODE></STRONG></A> キーワードで、
	<A HREF="mod/mod_autoindex.html#indexoptions:fancyindexing">"凝った"
        ディレクトリ内容一覧</A> の桁数を設定できます。
        アスタリスク `*' に設定すると、名前 (訳注: Name の部分) の幅は
        自動的に調整されます。

    <LI><A HREF="mod/mod_autoindex.html#fancyindexing"
        ><SAMP>FancyIndexing</SAMP></A> ディレクティブは設定済みの
        <SAMP>IndexOptions</SAMP> ディレクティブの効果を置き換えてしまう
        ことなく、正しく
        <A HREF="mod/mod_autoindex.html#indexoptions:fancyindexing"><SAMP>IndexOptions&nbsp;FancyIndexing</SAMP></A>
        と同じ効果になるようになりました。

    <LI>1.3.15 からは、IndexOptions に
	<A HREF="mod/mod_autoindex.html#trackmodified">
        <SAMP>TrackModified</SAMP></A> ディレクティブが含まれている場合は、
        サーバはディレクトリのリクエストを受けたときに、キャッシュを制御する
        ETag と LastModified を付けて返します。
        そのリクエストが変更されていないとクライアントが判断したときには、
        サーバはその一覧を生成する必要がありません。
        これにより、性能が向上します。この機能は実験的なものなので、
        デフォルトでは使用可能にはなっていません。

    </UL>

<DT><STRONG>CGI スクリプトの出力のバッファリングの減少</STRONG>
<DD>以前のバージョンの Apache では、CGI スクリプトからの出力は、サーバが
    内部的にバッファをしていて、バッファが一杯になるか CGI スクリプトが
    終了するまではクライアントに送られませんでした。Apache 1.3 では、
    クライアントへのデータのバッファは、バッファ中に何かがあって、
    サーバがスクリプトからのさらなる出力を待っているときにいつでも
    フラッシュされます。これにより、CGI スクリプトは
    長い処理操作の間に部分的なステータス報告が可能になります。

<DT><STRONG><A HREF="mod/mod_alias.html"><CODE>Alias</CODE> と
    <CODE>Redirect</CODE>での正規表現のサポート
    </A></STRONG>
<DD>新規の <A HREF="mod/mod_alias.html#aliasmatch"><CODE>AliasMatch</CODE></A>,
    <A HREF="mod/mod_alias.html#scriptaliasmatch"
    ><CODE>ScriptAliasMatch</CODE></A>, と
    <A HREF="mod/mod_alias.html#redirectmatch"><CODE>RedirectMatch</CODE></A>
    ディレクティブで、正規表現でのパターンマッチを指定できるようになりました。
    更に、新規の
    <A HREF="mod/core.html#directorymatch"
    ><CODE>&lt;DirectoryMatch&gt;</CODE></A>,
    <A HREF="mod/core.html#locationmatch"
    ><CODE>&lt;LocationMatch&gt;</CODE></A>,
    <A HREF="mod/core.html#filesmatch"><CODE>&lt;FilesMatch&gt;</CODE></A>
    セクションにより、正規表現を用いたセクション指定ができる新しい構文が
    提供されます。

<DT><STRONG><A
    HREF="mod/mod_info.html">mod_info</A> への
    <A
    HREF="mod/mod_info.html#addmoduleinfo"><CODE>AddModuleInfo</CODE></A>
    ディレクティブの追加</STRONG>
<DD>指定されたモジュールについて、表示させる追加情報を指定できるように
    なりました。

<DT><STRONG><CODE>TransferLog</CODE> が無い場合のログ収集の抑制</STRONG>
<DD><A HREF="mod/mod_log_config.html#transferlog"
    ><CODE>TransferLog</CODE></A> ディレクティブが無い場合はログは
    収集されません。これは他のログ用モジュールとの共用をサポートします。

<DT><STRONG>ログの書式に名前を付ける機能</STRONG>
<DD><A
    HREF="mod/mod_log_config.html#logformat"><CODE>LogFormat</CODE></A>
    ディレクティブが拡張され、特定のログフォーマットにニックネームを
    付けることを可能になりました。毎回ログフォーマットの文字列を書く代わりに、
    このニックネームを他の <CODE>LogFormat</CODE> ディレクティブの指定や
    <A HREF="mod/mod_log_config.html#customlog"
    ><CODE>CustomLog</CODE></A> ディレクティブの指定で使うことができます。

<DT><STRONG>条件付きログ収集</STRONG>
<DD><A HREF="mod/mod_log_config.html#customlog-conditional">mod_log_config</A>
    が環境変数に基づいたログ収集をサポートするようになりました。
    mod_log_referer と mod_log_agent は使用しないことが推奨されています。

<DT><STRONG>mod_cern_meta をディレクトリ毎に設定可能</STRONG>
<DD><A HREF="mod/mod_cern_meta.html">mod_cern_meta</A> をディレクトリ毎に
    設定することができるようになりました。

<DT><STRONG>
    <A HREF="mod/mod_rewrite.html#RewriteMap"><CODE>RewriteMap</CODE></A>
    ディレクティブの新しいマップタイプ</STRONG>
<DD>mod_rewrite の <CODE>RewriteMap</CODE> ディレクティブに新しいマップ型
    `Randomized Plain Text' と `Internal Function' が追加されました。
    これらのマップ型は二つの機能を提供します: 一つは、書き換え用マップで
    参照される値から対応する値をランダムに選択することができるように
    なりました (Reverse Proxy において、バックエンドのサーバを選ぶ場合に
    便利です)。もう一つは、URL の一部を大文字か小文字のどちらかに
    変換することができるようになりました (mod_rewrite を用いて大規模な
    バーチャルホスティングを行なう場合に便利です)。

<DT><STRONG>CIDR と Netmask によるアクセス制御</STRONG>
<DD><A HREF="mod/mod_access.html">mod_access</A> ディレクティブは
    CIDR (Classless Inter-Domain Routing) 形式のプレフィックスの指定と、
    IP のアクセスリストの制御をより細かく設定できるネットマスクを
    サポートするようになりました。
</DL>
<HR>

<H3><A NAME="api">API の追加と変更</A></H3>

<P>モジュール作者とコードハッカー向け情報:</P>

<DL>
<DT><STRONG><CODE>child_init</CODE></STRONG>
<DD>"heavy-weight process" につき1回呼ばれる Apache API の新規フェーズです。
    この後でリクエストの処理を行ないます。
    これをすることで、モジュールがプロセス毎に行なう
    必要のあることをすべて設定することができます。たとえば、
    データベースへの接続があります。

<DT><STRONG><CODE>child_exit</CODE></STRONG>
<DD>"heavy-weight process" につき1回呼ばれる新規のフェーズで、
    プロセスの終了時に呼ばれます。
    致命的な状況では (たとえばセグメンテーションフォールトや kill -9 された
    場合) 呼ばれないことに注意してください。<CODE>child_init</CODE> 関数と
    <CODE>child_exit</CODE> 関数は、子プロセスの生存期間と
    (Apache が回復できる見込みのない完全に致命的なイベントを除いて)
    同じ生存期間を持つプールを渡されます。対照的に、
    モジュールの <CODE>init</CODE> 関数は親プロセスが終了したり
    再起動したりすると消滅するプールを渡されます。

<DT><STRONG><CODE>child_terminate</CODE></STRONG>
<DD>現在のリクエストを終了した後に子プロセスが終了すべきであることを
    示すために子プロセスで使われます。

<DT><STRONG><CODE>register_other_child</CODE></STRONG>
<DD><CODE>http_main.h</CODE> を参照してください。これは親プロセスで使用し、
    監視する子プロセスを登録します。親プロセスは
    与えられたコールバック関数に状態を報告します。この関数を使用すると、
    モジュールが生成する子プロセスは、httpd の他の子プロセスと共に
    監視されるようになります。

<DT><STRONG><CODE>piped_log</CODE></STRONG>
<DD><CODE>http_log.h</CODE> を参照してください。この API は、
    パイプされたログを実装するための共通のコードを提供します。特に、
    アーキテクチャがサポートしている場合は (<EM>つまり</EM>
    現時点では Unix)、信頼性のあるパイプされたログを実装しています。

<DT><STRONG>スコアボードの形式変更</STRONG>
<DD>スコアボードの形式はかなり変更されました。普通スコアボードは
    "private" なインターフェースだとされているので、ここでは
    紹介するにとどめておきます。

<DT><STRONG><CODE>set_last_modified</CODE> を三つに分割</STRONG>
<DD>古い <CODE>set_last_modified</CODE> 関数は、<CODE>Last-Modified</CODE>
    ヘッダや、<CODE>Etag</CODE> ヘッダの設定、(If-Modified-Since のような)
    条件付きリクエストの処理など、複数の仕事をしていました。
    これらの機能は三つの関数、
    <CoDE>set_last_modified</CODE>, <CODE>set_etag</CODE>,
    <CODE>meets_conditions</CODE> に分割されました。
    <CODE>meets_conditions</CODE> 関数の
    処理を簡単にするために <CODE>requrest_rec</CODE> 構造体に
    <CODE>mtime</CODE>がフィールドが追加されました。

<DT><STRONG>エラーログ収集用の新規関数: <CODE>ap_log_error</CODE></STRONG>
<DD>ログ収集用の古い関数はすべて非推奨となっています。これらの関数を
    <CODE>ap_log_error</CODE> という単独の関数で置き換えようとしています。
    これはまだ作業中です。

<DT><STRONG>設定解析のための <CODE>set_file_slot</CODE></STRONG>
<DD><CODE>set_file_slot</CODE> ルーチンは、絶対パスになっていないパスの
    前に ServerRoot を追加するための標準ルーチンを提供します。

<DT><STRONG><CODE>post_read_request</CODE> モジュール API</STRONG>
<DD>このリクエストフェーズはリクエスト (ヘッダ) を読み込んだ直後や、
    内部リダイレクトを作成した直後に置こります
    その後の段階に影響する環境変数を設定するために一番役に立ちます。

<DT><STRONG><CODE>psocket</CODE> と <CODE>popendir</CODE></STRONG>
<DD>socket の生成において、競合状態が起こらないようにリソースの
    トラッキングをする <CODE>psocket</CODE> 関数と <CODE>pclosesocket</CODE>
    関数が容易されました。
    同様に、<CODE>popendir</CODE> 関数と <CODE>pclosedir</CODE> 関数は
    ディレクトリの読み込みを保護します。

<DT><STRONG><CODE>is_initial_req</CODE></STRONG>
<DD>リクエストが初期リクエスト (<EM>すなわち</EM>、クライアントから来るもの)
    であるかどうかを判定します。

<DT><STRONG><CODE>kill_only_once</CODE></STRONG>
<DD><CODE>ap_spawn_child</CODE> 関数のオプションで、Apache が子プロセスを
    積極的に kill しようとすることを抑制します。

<DT><STRONG><CODE>alloc デバッグ用コード</CODE></STRONG>
<DD><CODE>ALLOC_DEBUG</CODE> を定義すると原始的なメモリデバッガが提供されます。
    これを使う場合、生存中のサーバに与える影響が少なく済みます。
    それは、割り当てられてるメモリおよび解放されるメモリのバイト数をすべて
    0xa5 に設定します。
    <CODE>ALLOC_USE_MALLOC</CODE> を定義すると、alloc コードが
    それぞれのオブジェクトに対して <CODE>malloc()</CODE> と
    <CODE>free()</CODE> を使うようになります。
    これはずっとコストが高く、Electric Fence や Purify のようなツールを
    使ってテストをするときにのみ使われるべきものです。詳細は
    <CODE>main/alloc.c</CODE> を参照してください。

<DT><STRONG><CODE>ap_cpystrn</CODE></STRONG>
<DD>新しい <CODE>strncpy</CODE> のようなものですが、バッファ全体を
    0 で満たす必要が無いために <CODE>strncpy</CODE> よりずっと速い点で
    若干違います。

<DT><STRONG><CODE>table_addn</CODE>, <CODE>table_setn</CODE>,
    <CODE>table_mergen</CODE></STRONG>
<DD>これらの新しい関数は、引数に対して <CODE>pstrdup</CODE> を
    呼び<STRONG>ません</STRONG>。これは大きな速度向上をもたらします。
    コードがそれらを適切に使用していることを確かめるためのデバッグの
    サポートもあります。詳しい情報は <CODE>src/CHANGES</CODE> を
    参照してください。

<DT><STRONG><CODE>construct_url</CODE></STRONG>
<DD>この関数のプロトタイプが <CODE>server_rec *</CODE> から
    <CODE>request_rec *</CODE> を引数として取るように変わりました。

<DT><STRONG><CODE>get_server_name</CODE>, <CODE>get_server_port</CODE></STRONG>
<DD>リクエストに対応するサーバ名とポート番号を取得する際に
    <A HREF="mod/core.html#usecanonicalname">UseCanonicalName</A>
    ディレクティブを扱うためのラッパーです。

<DT><STRONG><CODE>ap_bspawn_child</CODE> と <CODE>ap_call_exec</CODE>
    のプロトタイプの変更</STRONG>
<DD>Win32 で子プロセスが正しく動作するように、<CODE>spawn</CODE> 関数
    (<CODE>ap_bspawn_child</CODE> に渡される) と <CODE>ap_call_exec</CODE>
    関数に <CODE>child_info *</CODE> を追加しました。また、
    <CODE>spawn_child_err</CODE> を単に <CODE>ap_spawn_child</CODE> で
    置き換え、<CODE>spawn_child_err_buff</CODE> を単に
    <CODE>ap_bspawn_child</CODE> で置き換えることで、関数名を少し整理しました。

<DT><STRONG><CODE>ap_add_version_component()</CODE></STRONG>
<DD>この API 関数は <CODE>Server:</CODE> ヘッダに出力される
    サーバトークンを、モジュールが自身が追加できるようにします。
    以前の 1.3beta バージョンではコンパイル時に
    <CODE>#define</CODE> された <CODE>SERVER_SUBVERSION</CODE> を
    定義してこの機能を実現していました。トークンが実際に表示されるかどうかは
    新しい <CODE>SeverTokens</CODE> ディレクティブで制御されます。

</DL>

<HR>

<H3><A NAME="misc">その他の拡張</A></H3>

<DL>
<DT><STRONG><A HREF="ebcdic.html">BS2000/OSD を実行している
    EBCDIC メインフレームマシンへの移植</A></STRONG>
<DD>(訳注: メインフレームマシンへの移植の)
    手始めとして、このバージョンの Apache では、EBCDIC 文字セットを
    ネイティブコードセットとして使用するメインフレームマシンへの
    移植のベータ版が付いています (IBM/390 互換のプロセッサー上で
    BS2000/OSD オペレーティングシステムを実行している SIEMENS の
    メインフレームファミリーです。このメインフレームの OS は、最近では
    SVR4 ライクの POSIX のサブシステムの機能があります)。

<DT><STRONG><A HREF="mod/core.html#accessfilename"><CODE>AccessFileName</CODE>
    の拡張</A></STRONG>
<DD><CODE>AccessFileName</CODE> ディレクティブは、複数のファイル名を
    受け付けるようになりました。これにより、NFS を用いて
    複数の Apache サーバでページを提供しているサーバでの設定に応じた
    アクセスを設定できるようになります。(訳注: NFS を用いて、
    同じコンテンツ空間を複数のサーバで共有していると、それらのサーバの
    AccessFileName が同じとは限りません。共有しているコンテンツに対する
    アクセス制御は同じ設定を使いたいときに、この機能が役に立ちます)。

<DT><STRONG><CODE>HostNameLookups</CODE> のデフォルトを "Off" に変更</STRONG>
<DD><A
    HREF="mod/core.html#hostnamelookups"><CODE>HostNameLookups</CODE></A>
    ディレクティブはデフォルトで "Off" になりました。明示的に
    on にしない限り、サーバは IP アドレスの名前解決を行なわない
    ということです。
    この変更はインターネットにおいてを不必要な DNS トラフィックを
    発生させないために行なわれました。

<DT><STRONG>DNS の二重逆引きの強制機能</STRONG>
<DD><A
    HREF="mod/core.html#hostnamelookups"><CODE>HostnameLookups</CODE></A>
    ディレクティブは DNS の二重逆引きをサポートするようになりました。
    (tcp_wrapper の用語では <EM>PARANOID</EM> として知られているものです)。
    IP アドレスに対して逆引きを行ない、さらに正引きして得られる IP
    アドレスのリストに元の IP アドレスが含まれていれば、二重逆引きのテストを
    通過します。HostnameLookup の設定に関わらず、
    <A HREF="mod/mod_access.html">mod_access</A> アクセス制御の設定で
    DNS 名を使用している場合、すべての名前が DNS の二重逆引きテストに
    合格することを<STRONG>要求</STRONG>します。(以前のバージョンの
    Apache では、DNS の二重逆引きを可能にするためにコンパイル時のスイッチが
    必要でした。)

<DT><STRONG>LogLevel と syslog のサポート</STRONG>
<DD>Apache は<A HREF="mod/core.html#loglevel">エラーのログ収集レベルを
    設定</A>できる機能が追加されました。また、<A
    HREF="mod/core.html#errorlog">syslogd(8) によるエラーのログ収集</A>
    をサポートするようになりました。
    
<DT><STRONG>標準入力/標準出力/標準エラー出力からの切離し</STRONG>
<DD>Apache は、ブート時に標準入力/標準出力/標準エラー出力を切り離すように
    なりました。標準エラー出力は、
    設定ファイルの読み込みに成功するまで切り離しません。
    ですから、設定ファイルのエラーは目にすることになるでしょう。
    これにより、rsh や crontab で Apache を起動しやすくなっているはずです。

<DT><A NAME="y2k"><STRONG>2000 年問題の改善</STRONG></A>
<DD><A
    HREF="mod/mod_include.html"><CODE>mod_include</CODE></A> で使われる
    デフォルトの <CODE>timefmt</CODE> 文字列が、以前使われていた2桁ではなく
    4桁を使うように修正されました。<A
    HREF="mod/mod_autoindex.html"><CODE>mod_autoindex</CODE></A>
    モジュールも FancyIndex されたディレクトリ一覧表示に4桁の年を
    表示するように修正されました。

<DT><STRONG>共通のルーチンを独立したライブラリに分離</STRONG>
<DD>オペレーティングシステムによるライブラリのルーチンの違いを
    補完したり置き換えたりする関数やルーチンが、Apache プロジェクトのために
    数多く開発されています。ほとんどのものは Apache サーバ
    自身でのみで使用されていますが、中には <CODE>htdigest</CODE> のような
    サポート用アプリケーションで参照されているものもあります。
    そして、そのルーチンはサーバにのみ組込まれているために、
    このような別アプリケーションはビルドに失敗します。これらのルーチンを
    別のサブディレクトリで別のライブラリに移動しました。
    これにより、サーバだけでなく他のアプリケーションからも使えるように
    なりました。<CODE>src/ap/</CODE> サブディレクトリを参照してください。

<DT><STRONG>新しい <CODE><A HREF="mod/core.html#serversignature">
    ServerSignature</A></CODE> ディレクティブ</STRONG>
<DD>このディレクティブはサーバが作成したページ (エラードキュメント、
    FTP のディレクトリ内容一覧、mod_info の出力 <EM>など</EM>)
    にサーバのバージョンとバーチャルホスト名を含む行をオプションで追加します。
    これにより、特に pxory の連鎖 (イントラネットの環境ではよくあります)
    があるときに、どのサーバがエラーメッセージを出したのかをユーザが
    簡単に知ることができるようになります。

<DT><STRONG>新しい <CODE><A HREF="mod/core.html#usecanonicalname">
    UseCanonicalName</A></CODE> ディレクティブ</STRONG>
<DD>このディレクティブは、Apache がどのように自分自身を参照する URL を
    作成するかを制御します。以前の Apache では、<A
    HREF="mod/core.html#servername"> ServerName</A> ディレクティブと <A
    HREF="mod/core.html#port">Port</A> ディレクティブを
    常に指定することで "正規化された" サーバの名を生成していました。
    <CODE>UseCanonicalName off</CODE>
    で、クライアントから提供されたホスト名とポート番号がある場合、
    Apache はそれを使用するようになります。

<DT><STRONG><CODE>SERVER_VERSION</CODE> の定義が抽象化と
    サーバのビルド日時の追加</STRONG> 
<DD>以前のバージョンでは、<CODE>SERVER_VERSION</CODE> で定義された値を
    通じて、モジュールは Apache サーバのバージョンを参照することができました。
    コアサーバとモジュールが違う時にコンパイル
    された場合でもこの値の一貫性を保つために、この情報はコア API ルーチン
    <CODE>ap_get_server_version()</CODE> で得ることができるようになりました。
    <CODE>SERVER_VERSION</CODE> シンボルの仕様は非推奨です。
    また、<CODE>ap_get_server_built()</CODE> はコアサーバがリンクされた
    時刻を表す文字列を返します。
 
<DT><A HREF="mod/core.html#servertokens"><STRONG>サーバの ID に
    オペレーティングシステムを含める</STRONG></A><BR>
<DD>新しいディレクティブ <CODE>ServerTokens</CODE> により、
    クライアントに送り返される <CODE>Server</CODE> レスポンスヘッダ
    フィールドの値をウェブマスターが変更できるようになりました。
    <CODE>ServerTokens</CODE> ディレクティブでは、
    サーバが動作しているオペレーティングシステムの種類についての
    詳しすぎない程度の情報を、モジュール情報と同様にサーバ ID に含めるか
    どうかを制御します。Apache 1.3 では、この追加の情報が
    デフォルトで含まれるようになっています。

<br><br>

<DT><STRONG>Netscape 形式の SHA1 で暗号化されたパスワードのサポート</STRONG><BR>
<DD>(Apache に組込まれている MD5 や、OS 固有の crypt(3) 関数と異なり)
    パスワードが SHA1 で暗号化されるような BasicAuth パスワード
    方式の移行や統合を促進するため、<CODE>{SHA1}</CODE> が前に付いている
    パスワードは Base64 で符号化された SHA1 パスワードとして解釈されます。
    さらなる情報や Netscape の ldap/ldif エントリを変換するための
    ユーティリティーは、support/SHA1 にあります。
</DL>


    <hr />

    <h3 align="CENTER">Apache HTTP Server</h3>
    <a href="./"><img src="images/index.gif" alt="Index" /></a>

</BODY>
</HTML>

