diff options
Diffstat (limited to 'docs')
96 files changed, 13467 insertions, 13467 deletions
diff --git a/docs/manual/bind.xml.ja b/docs/manual/bind.xml.ja index 74572ab2a0..55f5f42477 100644 --- a/docs/manual/bind.xml.ja +++ b/docs/manual/bind.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp" ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 327999:587444 (outdated) --> @@ -22,17 +22,17 @@ <manualpage metafile="bind.xml.meta"> - <title>$B%P%$%s%I(B</title> + <title>バインド</title> <summary> - <p>Apache $B$,;HMQ$9$k%"%I%l%9$H%]!<%H$N@_Dj$r$7$^$9!#(B</p> + <p>Apache が使用するアドレスとポートの設定をします。</p> </summary> - <seealso><a href="vhosts/">$B%P!<%A%c%k%[%9%H(B</a></seealso> - <seealso><a href="dns-caveats.html">DNS $B$NLdBj(B</a></seealso> + <seealso><a href="vhosts/">バーチャルホスト</a></seealso> + <seealso><a href="dns-caveats.html">DNS の問題</a></seealso> <section id="overview"> - <title>$B35MW(B</title> + <title>概要</title> <related> <modulelist> @@ -46,36 +46,36 @@ </related> - <p>Apache $B$O5/F0;~$K!"%m!<%+%k%^%7%s$N$"$k%]!<%H$*$h$S%"%I%l%9(B - $B$KBP$7$F@\B3$7!"%j%/%(%9%H$,Mh$k$N$rBT$A$^$9!#(B - $B%G%U%)%k%H$G$O%^%7%s$N$9$Y$F$N%"%I%l%9$KBP$7$F(B listen $B$7$^$9!#(B - $B$7$+$7$J$,$i!"FCDj$N%]!<%H$+!"FCDj$N%"%I%l%9$N$_$+!"(B - $B$^$?$O$=$l$i$NAH$_9g$o$;$N$$$:$l$+$r(B listen $B$9$k$h$&$K$9$kI,MW$,$"$j$^$9!#(B - $B$3$l$O!"0[$J$k(B IP $B%"%I%l%9!"%[%9%HL>!"%]!<%H$KBP$9$k(B Apache - $B$N1~EzJ}K!$r7hDj$9$k%P!<%A%c%k%[%9%H5!G=$HAH$_9g$o$;$F;H$o$l$^$9!#(B</p> + <p>Apache は起動時に、ローカルマシンのあるポートおよびアドレス + に対して接続し、リクエストが来るのを待ちます。 + デフォルトではマシンのすべてのアドレスに対して listen します。 + しかしながら、特定のポートか、特定のアドレスのみか、 + またはそれらの組み合わせのいずれかを listen するようにする必要があります。 + これは、異なる IP アドレス、ホスト名、ポートに対する Apache + の応答方法を決定するバーチャルホスト機能と組み合わせて使われます。</p> <p><directive module="mpm_common">Listen</directive> - $B%G%#%l%/%F%#%V$G!"FCDj$N%]!<%H$d%"%I%l%9!&%]!<%H$NAH$+$i$N$_F~$C$F$/$k(B - $B%j%/%(%9%H$r<u$1IU$1$k$h$&$K$G$-$^$9!#(B - $B$b$7%]!<%HHV9f$N$_$,(B <directive module="mpm_common">Listen</directive> - $B%G%#%l%/%F%#%V$G;XDj$5$l$?>l9g$O!"(B - $B$9$Y$F$N%$%s%?!<%U%'!<%9$NM?$($i$l$?%]!<%HHV9f$r(B - listen $B$7$^$9!#(B IP $B%"%I%l%9$,%]!<%HHV9f$HF1;~$KM?$($i$l$?>l9g$O!"(B - $B%5!<%P$OM?$($i$l$?%]!<%H$H%$%s%?!<%U%'!<%9$r(B listen $B$7$^$9!#(B - $BJ#?t$N(B <directive module="mpm_common">Listen</directive> $B%G%#%l%/%F%#%V$rMQ$$$F(B - $B$$$/$D$+$N(B listen $B$9$k%"%I%l%9$H%]!<%H$r;XDj$G$-$^$9!#(B - $B%5!<%P$O%j%9%H$5$l$?%"%I%l%9$d%]!<%H$+$i$N$9$Y$F$N%j%/%(%9%H$K(B - $BBP$7$F1~Ez$7$^$9!#(B</p> - - <p>$B$?$H$($P!"%]!<%H(B 80 $B$H(B 8000 $B$NN>J}$KBP$7$F$N@\B3$r<u$1IU$1$k$K$O(B</p> + ディレクティブで、特定のポートやアドレス・ポートの組からのみ入ってくる + リクエストを受け付けるようにできます。 + もしポート番号のみが <directive module="mpm_common">Listen</directive> + ディレクティブで指定された場合は、 + すべてのインターフェースの与えられたポート番号を + listen します。 IP アドレスがポート番号と同時に与えられた場合は、 + サーバは与えられたポートとインターフェースを listen します。 + 複数の <directive module="mpm_common">Listen</directive> ディレクティブを用いて + いくつかの listen するアドレスとポートを指定できます。 + サーバはリストされたアドレスやポートからのすべてのリクエストに + 対して応答します。</p> + + <p>たとえば、ポート 80 と 8000 の両方に対しての接続を受け付けるには</p> <example> Listen 80<br /> Listen 8000 </example> - <p>$B$H$7$^$9!#(B - $BFs$D$N;XDj$5$l$?%$%s%?%U%'!<%9$H%]!<%HHV9f$KBP$7$F$N@\B3$r<u$1IU$1$k$K$O!"(B + <p>とします。 + 二つの指定されたインタフェースとポート番号に対しての接続を受け付けるには、 </p> <example> @@ -83,8 +83,8 @@ Listen 192.0.2.5:8000 </example> - <p>$B$H$7$^$9!#(B - IPv6 $B%"%I%l%9$O!"3Q3g8L$G<!$NNc$N$h$&$K0O$^$J$1$l$P$$$1$^$;$s!#(B</p> + <p>とします。 + IPv6 アドレスは、角括弧で次の例のように囲まなければいけません。</p> <example> Listen [2001:db8::a00:20ff:fea7:ccea]:80 @@ -92,82 +92,82 @@ </section> <section id="ipv6"> - <title>IPv6 $B$NFC5-;v9`(B</title> - - <p>$BB?$/$N%W%i%C%H%[!<%`$G(B IPv6 $B$,%5%]!<%H$5$l$F$-$F$$$F!"(B - <glossary>APR</glossary> $B$O$3$l$i$N$[$H$s$I$G(B IPv6 $B$r%5%]!<%H$7$F$$$k$N$G!"(B - Apache $B$O(B IPv6 $B%=%1%C%H$r3d$jEv$F$F(B IPv6 - $B7PM3$GAw$i$l$F$-$?%j%/%(%9%H$r07$&$3$H$,$G$-$^$9!#(B</p> - - <p>IPv6 $B%=%1%C%H$,(B IPv4 $B$H(B IPv6 $B%3%M%/%7%g%s$NN>J}$r07$&$3$H$,$G$-$k$+(B - $B$I$&$+$O!"(BApache $B4IM}<T$K$H$C$FLq2p$JLdBj$G$9!#(B - IPv4 $B%3%M%/%7%g%s$r(B IPv6 $B%=%1%C%H$G07$&>l9g$O!"(B - IPv4 $B%^%C%W$5$l$?(B IPv6 $B%"%I%l%9$r;HMQ$7$F$$$F!"(B - $B$[$H$s$I$N%W%i%C%H%[!<%`$G$O%G%U%)%k%H$G;HMQ2DG=$G$9$,!"(B - FreeBSD, NetBSD, OpenBSD $B$G$O!"%7%9%F%`A4BN$H$7$F$N%]%j%7!<$H$N@09g@-$+$i!"(B - $B%G%U%)%k%H$G$O;HMQIT2D$K@_Dj$5$l$F$$$^$9!#(B - $B$3$l$i$N%G%U%)%k%H$G;HMQIT2D$N%W%i%C%H%[!<%`$G$"$C$F$b!"(B - $BFCJL$J(B <program>configure</program> $B$N(B - $B@_Dj%Q%i%a!<%?$G(B Apache $B$N5sF0$rJQ2=$5$;$k$3$H$,$G$-$^$9!#(B</p> - - <p>$B0lJ}$G!"(BLinux $B$d(B Tru64 $B$H$$$C$?%W%i%C%H%[!<%`$G(B IPv4 $B$H(B IPv6 - $B$NN>J}$r07$&$K$O!"%^%C%W%H%"%I%l%9$r;HMQ$9$k(B<strong>$B0J30$NJ}K!$O$"$j$^$;$s(B</strong>$B!#(B - IPv4 $B$H(B IPv6 $B$N%3%M%/%7%g%s$r:G>.8B$N%=%1%C%H$G07$$$?$$$N$G$"$l$P!"(B - IPv4 $B%^%C%W$N(B IPv6 $B%"%I%l%9$r;HMQ$9$kI,MW$,$"$j!"(B + <title>IPv6 の特記事項</title> + + <p>多くのプラットホームで IPv6 がサポートされてきていて、 + <glossary>APR</glossary> はこれらのほとんどで IPv6 をサポートしているので、 + Apache は IPv6 ソケットを割り当てて IPv6 + 経由で送られてきたリクエストを扱うことができます。</p> + + <p>IPv6 ソケットが IPv4 と IPv6 コネクションの両方を扱うことができるか + どうかは、Apache 管理者にとって厄介な問題です。 + IPv4 コネクションを IPv6 ソケットで扱う場合は、 + IPv4 マップされた IPv6 アドレスを使用していて、 + ほとんどのプラットホームではデフォルトで使用可能ですが、 + FreeBSD, NetBSD, OpenBSD では、システム全体としてのポリシーとの整合性から、 + デフォルトでは使用不可に設定されています。 + これらのデフォルトで使用不可のプラットホームであっても、 + 特別な <program>configure</program> の + 設定パラメータで Apache の挙動を変化させることができます。</p> + + <p>一方で、Linux や Tru64 といったプラットホームで IPv4 と IPv6 + の両方を扱うには、マップトアドレスを使用する<strong>以外の方法はありません</strong>。 + IPv4 と IPv6 のコネクションを最小限のソケットで扱いたいのであれば、 + IPv4 マップの IPv6 アドレスを使用する必要があり、 <code>--enable-v4-mapped</code> <program>configure</program> - $B%*%W%7%g%s$r;XDj$7$^$9!#(B</p> + オプションを指定します。</p> - <p><code>--enable-v4-mapped</code> $B$O!"(B - FreeBSD, NetBSD, OpenBSD $B0J30$NA4$F$N%W%i%C%H%[!<%`$G$N%G%U%)%k%H$G$9!#(B - $B$G$9$+$i!"$*$=$i$/$*<j85$N(B Apache $B$O$3$N@_Dj$G%S%k%I$5$l$F$$$k$G$7$g$&!#(B</p> + <p><code>--enable-v4-mapped</code> は、 + FreeBSD, NetBSD, OpenBSD 以外の全てのプラットホームでのデフォルトです。 + ですから、おそらくお手元の Apache はこの設定でビルドされているでしょう。</p> - <p>$B%W%i%C%H%U%)!<%`$d(B APR $B$,2?$r%5%]!<%H$9$k$+$K4X$o$i$:!"(B - IPv4 $B%3%M%/%7%g%s$N$_$r07$&$h$&$K$7$?$$>l9g$O!"(B - $B<!$NNc$N$h$&$KA4$F$N(B - <directive module="mpm_common">Listen</directive> $B%G%#%l%/%F%#%V$G(B - IPv4 $B%"%I%l%9$r;XDj$7$F$/$@$5$$!#(B</p> + <p>プラットフォームや APR が何をサポートするかに関わらず、 + IPv4 コネクションのみを扱うようにしたい場合は、 + 次の例のように全ての + <directive module="mpm_common">Listen</directive> ディレクティブで + IPv4 アドレスを指定してください。</p> <example> Listen 0.0.0.0:80<br /> Listen 192.0.2.1:80 </example> - <p>$B>r7o$rK~$?$9%W%i%C%H%[!<%`$G!"(BApache $B$,(B - IPv4 $B$H(B IPv6 $B$N%3%M%/%7%g%s$r8DJL$N%=%1%C%H$G07$&$h$&$K$7$?$$>l9g(B - ($B$D$^$j(B IPv4 $B%^%C%W$N%"%I%l%9$rL58z$K$7$?$$>l9g(B) - $B$O!"(B<code>--disable-v4-mapped</code> + <p>条件を満たすプラットホームで、Apache が + IPv4 と IPv6 のコネクションを個別のソケットで扱うようにしたい場合 + (つまり IPv4 マップのアドレスを無効にしたい場合) + は、<code>--disable-v4-mapped</code> <program>configure</program> - $B%*%W%7%g%s$r;XDj$7$F!"<!$N$h$&$K8DJL;XDj$N(B + オプションを指定して、次のように個別指定の <directive module="mpm_common">Listen</directive> - $B%G%#%l%/%F%#%V$r;HMQ$7$F$/$@$5$$!#(B - <code>--disable-v4-mapped</code> $B$O!"(B - FreeBSD, NetBSD, OpenBSD $B%W%i%C%H%[!<%`$G$N%G%U%)%k%H$G$9!#(B</p> + ディレクティブを使用してください。 + <code>--disable-v4-mapped</code> は、 + FreeBSD, NetBSD, OpenBSD プラットホームでのデフォルトです。</p> </section> <section id="virtualhost"> - <title>$B%P!<%A%c%k%[%9%H$KBP$7$F$I$&F/$/$N$+(B</title> + <title>バーチャルホストに対してどう働くのか</title> <p><directive module="mpm_common">Listen</directive> - $B$G%P!<%A%c%k%[%9%H$,<BAu$5$l$k$o$1$G$O$"$j$^$;$s!#(B - Listen $B$OC1$K%a%$%s%5!<%P$K$I$N%"%I%l%9$H%]!<%H$r(B listen $B$9$Y$-$+$r(B - $B65$($k$@$1$G$9!#(B + でバーチャルホストが実装されるわけではありません。 + Listen は単にメインサーバにどのアドレスとポートを listen すべきかを + 教えるだけです。 <directive module="core" type="section">VirtualHost</directive> - $B%G%#%l%/%F%#%V$,;H$o$l$J$$>l9g$O!"(B - $B<u$1F~$l$?%j%/%(%9%H$9$Y$F$KBP$7$FA4$/F1$85sF0$r$7$^$9!#(B - $B$7$+$7$J$,$i(B + ディレクティブが使われない場合は、 + 受け入れたリクエストすべてに対して全く同じ挙動をします。 + しかしながら <directive module="core" type="section">VirtualHost</directive> - $B$r;H$C$F!"(B - $B0l$D0J>e$N%"%I%l%9$d%]!<%H$KBP$7$F0[$J$k5sF0$r$9$k$h$&$K(B - $B;XDj$9$k$3$H$,$G$-$^$9!#(B - VirtualHost $B$r<BAu$9$k$K$O!";HMQ$9$k%"%I%l%9$H%]!<%H$r(B - $B$^$:=i$a$K%5!<%P$KDLCN$7$J$1$l$P$J$j$^$;$s!#(B - $B$=$7$F!"$=$N;XDj$7$?%"%I%l%9$H%]!<%H$G$N(B - $B$3$N%P!<%A%c%k%[%9%H$N5sF0$r@_Dj$9$k$?$a$K!"(B + を使って、 + 一つ以上のアドレスやポートに対して異なる挙動をするように + 指定することができます。 + VirtualHost を実装するには、使用するアドレスとポートを + まず初めにサーバに通知しなければなりません。 + そして、その指定したアドレスとポートでの + このバーチャルホストの挙動を設定するために、 <directive module="core" type="section">VirtualHost</directive> - $B%;%/%7%g%s$r:n$j$^$9!#$b$7(B + セクションを作ります。もし <directive module="core" type="section">VirtualHost</directive> - $B$,(B listen $B$7$F$$$J$$%"%I%l%9$H%]!<%H$KBP$7$F(B - $B@_Dj$5$l$F$7$^$&$H!"(B - $B$=$l$K$O%"%/%;%9$G$-$J$$$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + が listen していないアドレスとポートに対して + 設定されてしまうと、 + それにはアクセスできないということに注意してください。</p> </section> </manualpage> diff --git a/docs/manual/configuring.xml.ja b/docs/manual/configuring.xml.ja index 2cfae944ae..0bded6155e 100644 --- a/docs/manual/configuring.xml.ja +++ b/docs/manual/configuring.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -22,15 +22,15 @@ <manualpage metafile="configuring.xml.meta"> - <title>$B@_Dj%U%!%$%k(B</title> + <title>設定ファイル</title> <summary> -<p>$B$3$NJ8=q$G$O!"(BApache HTTP $B%5!<%P$r@_Dj$9$k$N$K;HMQ$9$k%U%!%$%k$K$D$$$F(B -$B5-=R$7$F$$$^$9!#(B</p> +<p>この文書では、Apache HTTP サーバを設定するのに使用するファイルについて +記述しています。</p> </summary> <section id="main"> - <title>$B%a%$%s$N@_Dj%U%!%$%k(B</title> + <title>メインの設定ファイル</title> <related> <modulelist> <module>mod_mime</module> @@ -42,49 +42,49 @@ </directivelist> </related> - <p>Apache $B$O(B <a href="mod/directives.html" - >$B%G%#%l%/%F%#%V(B</a> $B$r@_Dj%U%!%$%k$KJ?J8$G=q$/$3$H$K$h$j@_Dj$7$^$9!#(B - $B%a%$%s$N@_Dj%U%!%$%k$OIaDL$O(B <code>httpd.conf</code> $B$H$$$&L>A0$G$9!#(B - $B$3$N%U%!%$%k$N0LCV$O%3%s%Q%$%k;~$K@_Dj$5$l$^$9$,!"%3%^%s%I%i%$%s$N(B - <code>-f</code> $B%U%i%0$K$h$j>e=q$-$G$-$^$9!#(B - $B$^$?!"B>$N@_Dj%U%!%$%k$r(B <directive module="core">Include</directive> - $B%G%#%l%/%F%#%V$K$h$C$FDI2C$G$-!"%o%$%k%I%+!<%I$r;HMQ$7$FB??t$N(B - $B@_Dj%U%!%$%k$rDI2C$9$k$3$H$,$G$-$^$9!#(B - $B$I$s$J%G%#%l%/%F%#%V$b!"$3$l$i$N@_Dj%U%!%$%k$I$l$K$G$bF~$l$k$3$H$,$G$-$^$9!#(B - Apache $B$O5/F0;~$+:F5/F0;~$N$_%a%$%s@_Dj%U%!%$%k$NJQ99$rG'<1$7$^$9!#(B</p> - - <p>$B%5!<%P$O(B MIME - $B%I%-%e%a%s%H%?%$%W$r4^$s$G$$$k%U%!%$%k$bFI$_9~$_$^$9!#%U%!%$%kL>$O(B + <p>Apache は <a href="mod/directives.html" + >ディレクティブ</a> を設定ファイルに平文で書くことにより設定します。 + メインの設定ファイルは普通は <code>httpd.conf</code> という名前です。 + このファイルの位置はコンパイル時に設定されますが、コマンドラインの + <code>-f</code> フラグにより上書きできます。 + また、他の設定ファイルを <directive module="core">Include</directive> + ディレクティブによって追加でき、ワイルドカードを使用して多数の + 設定ファイルを追加することができます。 + どんなディレクティブも、これらの設定ファイルどれにでも入れることができます。 + Apache は起動時か再起動時のみメイン設定ファイルの変更を認識します。</p> + + <p>サーバは MIME + ドキュメントタイプを含んでいるファイルも読み込みます。ファイル名は <directive module="mod_mime">TypesConfig</directive> - $B$G@_Dj$5$l!"%G%U%)%k%H$G$O(B <code>mime.types</code> - $B$K$J$C$F$$$^$9!#(B</p> + で設定され、デフォルトでは <code>mime.types</code> + になっています。</p> </section> <section id="syntax"> - <title>$B@_Dj%U%!%$%k$N9=J8(B</title> + <title>設定ファイルの構文</title> - <p>Apache $B$N@_Dj%U%!%$%k$O(B 1 $B9T$K(B 1 $B$D$N%G%#%l%/%F%#%V$+$i$J$j$^$9!#(B - $B%P%C%/%9%i%C%7%e(B "\" $B$O%G%#%l%/%F%#%V$,<!$N9T$K7QB3$7$F$$$k$3$H$r(B - $B<($9$?$a$K9T$N:G8e$NJ8;z$H$7$F;H$o$l$F$$$k$+$b$7$l$^$;$s!#(B - $B9T$N:G8e$H%P%C%/%9%i%C%7%e$N4V$KB>$NJ8;z$d6uGr$,$"$C$F$O$$$1$^$;$s!#(B + <p>Apache の設定ファイルは 1 行に 1 つのディレクティブからなります。 + バックスラッシュ "\" はディレクティブが次の行に継続していることを + 示すために行の最後の文字として使われているかもしれません。 + 行の最後とバックスラッシュの間に他の文字や空白があってはいけません。 </p> - <p>$B@_Dj%U%!%$%k$N%G%#%l%/%F%#%V$OBgJ8;z>.J8;z$r6hJL$7$^$;$s$,!"(B - $B0z?t$K$O$7$P$7$P6hJL$9$k$b$N$,$"$j$^$9!#%O%C%7%eJ8;z(B "#" - $B$G;O$^$k9T$O%3%a%s%H$H8+$J$5$l$FL5;k$5$l$^$9!#(B - $B@_Dj%G%#%l%/%F%#%V$N8e$N9T$G$O%3%a%s%H$,4^$^$l$F$$$F$O(B<strong - >$B$$$1$^$;$s(B</strong>$B!#%G%#%l%/%F%#%V$NA0$N6u9T$H6uGr$OL5;k$5$l$^$9$N$G!"(B - $B$o$+$j$d$9$/$9$k$?$a$K%G%#%l%/%F%#%V$r%$%s%G%s%H$7$F$b9=$$$^$;$s!#(B + <p>設定ファイルのディレクティブは大文字小文字を区別しませんが、 + 引数にはしばしば区別するものがあります。ハッシュ文字 "#" + で始まる行はコメントと見なされて無視されます。 + 設定ディレクティブの後の行ではコメントが含まれていては<strong + >いけません</strong>。ディレクティブの前の空行と空白は無視されますので、 + わかりやすくするためにディレクティブをインデントしても構いません。 </p> - <p>$B@_Dj%U%!%$%k$N9=J8%(%i!<$O!"(B + <p>設定ファイルの構文エラーは、 <code>apachectl configtest</code> - $B$+%3%^%s%I%i%$%s%*%W%7%g%s(B - <code>-t</code> $B$r;H$C$FD4$Y$i$l$^$9!#(B</p> + かコマンドラインオプション + <code>-t</code> を使って調べられます。</p> </section> <section id="modules"> - <title>$B%b%8%e!<%k(B</title> + <title>モジュール</title> <related> <modulelist> @@ -96,28 +96,28 @@ </directivelist> </related> - <p>Apache $B$O%b%8%e!<%k2=$5$l$?%5!<%P$G$9!#(B - $B%3%"%5!<%P$K$O:G$b4pK\E*$J5!G=$@$1$,4^$^$l$F$$$^$9!#3HD%5!G=$O(B - Apache $B$K%m!<%I$5$l$k(B<a href="mod/">$B%b%8%e!<%k(B</a - >$B$H$7$FMxMQ2DG=$G$9!#%G%U%)%k%H$G$O!"%3%s%Q%$%k;~$K%b%8%e!<%k$N(B - <a href="mod/module-dict.html#Status">Base</a> $B%;%C%H(B ($B4pK\%;%C%H(B) $B$,(B - $B%5!<%P$K4^$^$l$^$9!#%5!<%P$,(B<a href="dso.html">$BF0E*%m!<%I(B</a - >$B%b%8%e!<%k$r;H$&$h$&$K%3%s%Q%$%k$5$l$F$$$k>l9g$O!"(B - $B%b%8%e!<%k$rJL$K%3%s%Q%$%k$7$F!"$$$D$G$b(B + <p>Apache はモジュール化されたサーバです。 + コアサーバには最も基本的な機能だけが含まれています。拡張機能は + Apache にロードされる<a href="mod/">モジュール</a + >として利用可能です。デフォルトでは、コンパイル時にモジュールの + <a href="mod/module-dict.html#Status">Base</a> セット (基本セット) が + サーバに含まれます。サーバが<a href="dso.html">動的ロード</a + >モジュールを使うようにコンパイルされている場合は、 + モジュールを別にコンパイルして、いつでも <directive module="mod_so">LoadModule</directive> - $B%G%#%l%/%F%#%V$r;H$C$FDI2C$G$-$^$9!#(B - $B$=$&$G$J$$>l9g$O!"%b%8%e!<%k$NDI2C$d:o=|$r$9$k$?$a$K$O(B Apache - $B$r:F%3%s%Q%$%k$9$kI,MW$,$"$j$^$9!#@_Dj%G%#%l%/%F%#%V$O(B <directive + ディレクティブを使って追加できます。 + そうでない場合は、モジュールの追加や削除をするためには Apache + を再コンパイルする必要があります。設定ディレクティブは <directive module="core" type="section">IfModule</directive> - $B%V%m%C%/$KF~$l$k$3$H$GFCDj$N%b%8%e!<%k$,B8:_$9$k$H$-$@$1(B - $B@_Dj%U%!%$%k$K4^$^$l$k$h$&$K$9$k$3$H$,$G$-$^$9!#(B</p> + ブロックに入れることで特定のモジュールが存在するときだけ + 設定ファイルに含まれるようにすることができます。</p> - <p>$B%3%^%s%I%i%$%s%*%W%7%g%s(B <code>-l</code> $B$r;H$C$F8=;~E@$G(B - $B$I$N%b%8%e!<%k$,%5!<%P$K%3%s%Q%$%k$5$l$F$$$k$+$rCN$k$3$H$,$G$-$^$9!#(B</p> + <p>コマンドラインオプション <code>-l</code> を使って現時点で + どのモジュールがサーバにコンパイルされているかを知ることができます。</p> </section> <section id="scope"> - <title>$B%G%#%l%/%F%#%V$NE,MQHO0O(B</title> + <title>ディレクティブの適用範囲</title> <related> <directivelist> @@ -131,40 +131,40 @@ </directivelist> </related> - <p>$B%a%$%s@_Dj%U%!%$%k$K$"$k%G%#%l%/%F%#%V$O%5!<%PA4BN$KE,MQ$5$l$^$9!#(B - $B%5!<%P$N0lItJ,$N@_Dj$@$1$rJQ99$7$?$$>l9g$O(B <directive module="core" + <p>メイン設定ファイルにあるディレクティブはサーバ全体に適用されます。 + サーバの一部分の設定だけを変更したい場合は <directive module="core" type="section">Directory</directive>, <directive module="core" type="section">DirectoryMatch</directive>, <directive module="core" type="section">Files</directive>, <directive module="core" type="section">FilesMatch</directive>, <directive module="core" type="section">Location</directive>, <directive module="core" type="section">LocationMatch</directive> - $B%;%/%7%g%s$NCf$KCV$/$3$H$GE,MQHO0O$r7h$a$i$l$^$9!#(B - $B$3$l$i$N%;%/%7%g%s$O$=$NCf$K$"$k%G%#%l%/%F%#%V$NE,MQHO0O$r(B - $BFCDj$N%U%!%$%k%7%9%F%`$N0LCV$d(B URL $B$K8BDj$7$^$9!#(B - $BHs>o$K:YN3EY$N@_Dj$r2DG=$K$9$k$?$a$K!"(B - $B%;%/%7%g%s$rF~$l;R$K$9$k$3$H$b$G$-$^$9!#(B</p> - - <p>Apache $B$OF1;~$KB?$/$N0c$&%&%'%V%5%$%H$r07$&G=NO$,$"$j$^$9!#(B - $B$3$l$O(B <a href="vhosts/">$B%P!<%A%c%k%[%9%H(B</a> $B$H8F$P$l$F$$$^$9!#(B - $BFCDj$N%&%'%V%5%$%H$K$N$_E,MQ$5$l$k$h$&$K$9$k$?$a$K!"(B - $B%G%#%l%/%F%#%V$O(B + セクションの中に置くことで適用範囲を決められます。 + これらのセクションはその中にあるディレクティブの適用範囲を + 特定のファイルシステムの位置や URL に限定します。 + 非常に細粒度の設定を可能にするために、 + セクションを入れ子にすることもできます。</p> + + <p>Apache は同時に多くの違うウェブサイトを扱う能力があります。 + これは <a href="vhosts/">バーチャルホスト</a> と呼ばれています。 + 特定のウェブサイトにのみ適用されるようにするために、 + ディレクティブは <directive module="core" type="section">VirtualHost</directive> - $B%;%/%7%g%s$NCf$KCV$/$3$H$G$bE,MQHO0O$rJQ$($k$3$H$,$G$-$^$9!#(B</p> - - <p>$B$[$H$s$I$N%G%#%l%/%F%#%V$O$I$N%;%/%7%g%s$K$G$b=q$1$^$9$,!"(B - $BCf$K$O%3%s%F%-%9%H$K$h$C$F$O0UL#$r$J$5$J$$$b$N$b$"$j$^$9!#(B - $BNc$($P!"%W%m%;%9$N:n@.$r@)8f$7$F$$$k%G%#%l%/%F%#%V$O%a%$%s%5!<%P$N(B - $B%3%s%F%-%9%H$K$N$_=q$/$3$H$,$G$-$^$9!#(B - $B$I$N%G%#%l%/%F%#%V$r$I$N%;%/%7%g%s$K=q$/$3$H$,$G$-$k$+$rCN$k$?$a$K$O(B - $B%G%#%l%/%F%#%V$N(B <a href="mod/directive-dict.html#Context" - >$B%3%s%F%-%9%H(B</a> $B$rD4$Y$F$/$@$5$$!#>\$7$$>pJs$O!"(B + セクションの中に置くことでも適用範囲を変えることができます。</p> + + <p>ほとんどのディレクティブはどのセクションにでも書けますが、 + 中にはコンテキストによっては意味をなさないものもあります。 + 例えば、プロセスの作成を制御しているディレクティブはメインサーバの + コンテキストにのみ書くことができます。 + どのディレクティブをどのセクションに書くことができるかを知るためには + ディレクティブの <a href="mod/directive-dict.html#Context" + >コンテキスト</a> を調べてください。詳しい情報は、 <a href="sections.html">Directory, Location, Files - $B%;%/%7%g%s$NF0:nK!(B</a>$B$K$"$j$^$9!#(B</p> + セクションの動作法</a>にあります。</p> </section> <section id="htaccess"> - <title>.htaccess $B%U%!%$%k(B</title> + <title>.htaccess ファイル</title> <related> <directivelist> @@ -173,30 +173,30 @@ </directivelist> </related> - <p>Apache $B$G$O%&%'%V%D%j!<$NCf$KCV$+$l$?FCJL$J%U%!%$%k$r;H$C$F(B - $BHsCf1{=88"E*$J@_Dj4IM}$r$G$-$^$9!#$=$NFCJL$J%U%!%$%k$OIaDL$O(B - <code>.htaccess</code> $B$H$$$&L>A0$G!"(B + <p>Apache ではウェブツリーの中に置かれた特別なファイルを使って + 非中央集権的な設定管理をできます。その特別なファイルは普通は + <code>.htaccess</code> という名前で、 <directive module="core">AccessFileName</directive> - $B%G%#%l%/%F%#%V$G$I$s$JL>A0$K$G$b;XDj$G$-$^$9!#(B + ディレクティブでどんな名前にでも指定できます。 <code>.htaccess</code> - $B%U%!%$%k$K=q$+$l$?%G%#%l%/%F%#%V$O%U%!%$%k$rCV$$$?(B - $B%G%#%l%/%H%j$H$=$NA4$F$N%5%V%G%#%l%/%H%j$KE,MQ$5$l$^$9!#(B - <code>.htaccess</code> $B%U%!%$%k$O!"%a%$%s$N@_Dj%U%!%$%k$HF1$8(B - $B9=J8$r;H$$$^$9!#(B + ファイルに書かれたディレクティブはファイルを置いた + ディレクトリとその全てのサブディレクトリに適用されます。 + <code>.htaccess</code> ファイルは、メインの設定ファイルと同じ + 構文を使います。 <code>.htaccess</code> - $B%U%!%$%k$O$9$Y$F$N%j%/%(%9%H$GFI$_9~$^$l$k$?$a!"(B - $BJQ99$O$9$0$KH?1G$5$l$^$9!#(B</p> + ファイルはすべてのリクエストで読み込まれるため、 + 変更はすぐに反映されます。</p> - <p>$B$I$N%G%#%l%/%F%#%V$,(B <code>.htaccess</code> - $B%U%!%$%k$K=q$1$k$+$rD4$Y$k$K$O!"%G%#%l%/%F%#%V$N(B<a - href="mod/directive-dict.html#Context">$B%3%s%F%-%9%H(B</a> - $B$rD4$Y$F$/$@$5$$!#%5!<%P4IM}<T$O$5$i$K%a%$%s@_Dj%U%!%$%k$N(B + <p>どのディレクティブが <code>.htaccess</code> + ファイルに書けるかを調べるには、ディレクティブの<a + href="mod/directive-dict.html#Context">コンテキスト</a> + を調べてください。サーバ管理者はさらにメイン設定ファイルの <directive module="core">AllowOverride</directive> - $B$r@_Dj$9$k$3$H$G$I$N%G%#%l%/%F%#%V$r(B <code>.htaccess</code> - $B%U%!%$%k$K=q$1$k$h$&$K$9$k$+$r@)8f$9$k$3$H$,$G$-$^$9!#(B</p> + を設定することでどのディレクティブを <code>.htaccess</code> + ファイルに書けるようにするかを制御することができます。</p> - <p><code>.htaccess</code> $B%U%!%$%k$K4X$9$k>\$7$$>pJs$O(B - <a href="howto/htaccess.html">.htaccess $B%A%e!<%H%j%"%k(B</a> - $B$r;2>H$7$F$/$@$5$$!#(B</p> + <p><code>.htaccess</code> ファイルに関する詳しい情報は + <a href="howto/htaccess.html">.htaccess チュートリアル</a> + を参照してください。</p> </section> </manualpage> diff --git a/docs/manual/content-negotiation.xml.ja b/docs/manual/content-negotiation.xml.ja index bdf8928428..093bf03b5d 100644 --- a/docs/manual/content-negotiation.xml.ja +++ b/docs/manual/content-negotiation.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 395228:655869 (outdated) --> @@ -22,127 +22,127 @@ <manualpage metafile="content-negotiation.xml.meta"> -<title>$B%3%s%F%s%H%M%4%7%(!<%7%g%s(B</title> +<title>コンテントネゴシエーション</title> <summary> - <p>Apache $B$O(B HTTP/1.1 $B$N5,3J$K5-=R$5$l$F$$$k%3%s%F%s%H%M%4%7%(!<%7%g%s$r(B - $B%5%]!<%H$7$F$$$^$9!#(B - $B%V%i%&%6$K$h$jDs6!$5$l$?%a%G%#%"%?%$%W!"(B - $B8@8l!"J8;z%;%C%H!"%(%s%3!<%G%#%s%0$NM%@h798~$K4p$E$$$F!"(B - $B:GE,$J%j%=!<%9$NI=8=$rA*Br$G$-$^$9!#(B - $B$^$?!"IT40A4$J%M%4%7%(!<%7%g%s>pJs$rAw$C$F$/$k%V%i%&%6$+$i$N%j%/%(%9%H$r(B - $B$b$C$H8-$/<h$j07$($k$h$&!"$$$/$D$+5!G=$b<BAu$7$F$"$j$^$9!#(B</p> + <p>Apache は HTTP/1.1 の規格に記述されているコンテントネゴシエーションを + サポートしています。 + ブラウザにより提供されたメディアタイプ、 + 言語、文字セット、エンコーディングの優先傾向に基づいて、 + 最適なリソースの表現を選択できます。 + また、不完全なネゴシエーション情報を送ってくるブラウザからのリクエストを + もっと賢く取り扱えるよう、いくつか機能も実装してあります。</p> - <p>$B%3%s%F%s%H%M%4%7%(!<%7%g%s$O(B + <p>コンテントネゴシエーションは <module>mod_negotiation</module> - $B%b%8%e!<%k$K$h$C$FDs6!$5$l$F$$$F!"%G%U%)%k%H$GAH$_9~$^$l$F$$$^$9!#(B</p> + モジュールによって提供されていて、デフォルトで組み込まれています。</p> </summary> -<section id="about"><title>$B%3%s%F%s%H%M%4%7%(!<%7%g%s$K$D$$$F(B</title> - - <p>$B%j%=!<%9$O!"4v$D$+0[$J$C$?I=8=$GMxMQ$G$-$k>l9g$,$"$j$^$9!#(B - $BNc$($P!"0[$J$k8@8l$d0[$J$k%a%G%#%"%?%$%W!"(B - $B$^$?$O$=$l$i$NAH$_9g$o$;$GMxMQ$G$-$k$+$bCN$l$^$;$s!#(B - $B$b$C$H$bE,$7$?A*Br$r$9$kJ}K!$N0l$D$K$O!"%$%s%G%C%/%9%Z!<%8$r(B - $B%f!<%6$K8+$;$F!"%f!<%6$KA*$s$G$b$i$&J}K!$,$"$j$^$9!#(B - $B$7$+$7!"%5!<%P$,<+F0E*$KA*$V$3$H$,$G$-$k>l9g$,B?$/$"$j$^$9!#(B - $B$3$l$O!"%V%i%&%6$,%j%/%(%9%HKh$K!"(B - $B$I$NI=8=$rSO9%$9$k$+$H$$$&>pJs$rAw$k$3$H$GF0:n$7$F$$$^$9!#(B - $BNc$($P%V%i%&%6$O!"2DG=$J$i%U%i%s%98l$G>pJs$r8+$?$$!"(B - $BIT2DG=$J$i$=$NBe$o$j$K1Q8l$G$b$h$$$H!"(B - $B<+J,$NSO9%$rCN$i$;$k$3$H$,$G$-$^$9!#(B - $B%V%i%&%6$O%j%/%(%9%H$N%X%C%@$G<+J,$NM%@h798~$rCN$i$;$^$9!#(B - $B%U%i%s%98l$N$_$NI=8=$rMW5a$9$k>l9g$O!"%V%i%&%6$O<!$rAw$j$^$9!#(B</p> +<section id="about"><title>コンテントネゴシエーションについて</title> + + <p>リソースは、幾つか異なった表現で利用できる場合があります。 + 例えば、異なる言語や異なるメディアタイプ、 + またはそれらの組み合わせで利用できるかも知れません。 + もっとも適した選択をする方法の一つには、インデックスページを + ユーザに見せて、ユーザに選んでもらう方法があります。 + しかし、サーバが自動的に選ぶことができる場合が多くあります。 + これは、ブラウザがリクエスト毎に、 + どの表現を嗜好するかという情報を送ることで動作しています。 + 例えばブラウザは、可能ならフランス語で情報を見たい、 + 不可能ならその代わりに英語でもよいと、 + 自分の嗜好を知らせることができます。 + ブラウザはリクエストのヘッダで自分の優先傾向を知らせます。 + フランス語のみの表現を要求する場合は、ブラウザは次を送ります。</p> <example>Accept-Language: fr</example> - <p>$B$3$NM%@h798~$O!"A*Br2DG=$JI=8=$,B8:_$7$F!"(B - $B8@8l$K$h$C$FMM!9$JI=8=$,$"$k>l9g$K$N$_E,MQ$5$l$k(B - $B$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + <p>この優先傾向は、選択可能な表現が存在して、 + 言語によって様々な表現がある場合にのみ適用される + ということに注意してください。</p> - <p>$B$b$C$HJ#;($J%j%/%(%9%H$NNc$r5s$2$^$7$g$&!#(B - $B$3$N%V%i%&%6$O%U%i%s%98l$H1Q8l$r<u$1IU$1$k!"$7$+$7%U%i%s%98l$r9%$`!"(B - $B$=$7$FMM!9$J%a%G%#%"%?%$%W$r<u$1IU$1$k$,!"(B - $B%W%l%$%s%F%-%9%H$dB>$N%?%$%W$h$j$O(B HTML $B$r9%$`!"(B - $BB>$N%a%G%#%"%?%$%W$h$j$O(B GIF $B$d(B JPEG $B$r9%$`!"$7$+$7:G=*<jCJ$H$7$F(B - $BB>$N%a%G%#%"%?%$%W$b<u$1IU$1$k!"$H@_Dj$5$l$F$$$^$9!#(B</p> + <p>もっと複雑なリクエストの例を挙げましょう。 + このブラウザはフランス語と英語を受け付ける、しかしフランス語を好む、 + そして様々なメディアタイプを受け付けるが、 + プレインテキストや他のタイプよりは HTML を好む、 + 他のメディアタイプよりは GIF や JPEG を好む、しかし最終手段として + 他のメディアタイプも受け付ける、と設定されています。</p> <example> Accept-Language: fr; q=1.0, en; q=0.5<br /> Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1 </example> - <p>Apache $B$O(B HTTP/1.1 $B5,3J$GDj5A$5$l$F$$$k(B 'server - driven' $B%3%s%F%s%H%M%4%7%(!<%7%g%s$r%5%]!<%H$7$F$$$^$9!#(B + <p>Apache は HTTP/1.1 規格で定義されている 'server + driven' コンテントネゴシエーションをサポートしています。 <code>Accept</code>, <code>Accept-Language</code>, <code>Accept-Charset</code>, <code>Accept-Encoding</code> - $B%j%/%(%9%H%X%C%@$r40A4$K%5%]!<%H$7$F$$$^$9!#(BApache $B$O(B - 'transparent' $B%3%s%F%s%H%M%4%7%(!<%7%g%s$b%5%]!<%H$7$F$$$^$9$,!"(B - $B$3$l$O(B RFC 2295 $B$H(B RFC 2296 $B$GDj5A$5$l$F$$$k;n83E*$J(B - $B%M%4%7%(!<%7%g%s%W%m%H%3%k$G$9!#(B - $B$3$l$i$N(B RFC$B$GDj5A$5$l$F$$$k(B 'feature negotiation' - $B$O%5%]!<%H$7$F$$$^$;$s!#(B</p> - - <p><strong>$B%j%=!<%9(B</strong>$B$H$O(B URI - $B$GFCDj$5$l$k35G0>e$N$b$N$N$3$H$G$9(B (RFC 2396)$B!#(B Apache - $B$N$h$&$J(B HTTP $B%5!<%P$O!"$=$NL>A06u4V$NCf$G$N(B - $B%j%=!<%9$N(B<strong>$BI=8=(B</strong>$B$X$N%"%/%;%9$rDs6!$7$^$9!#(B - $B$=$l$>$l$NI=8=$O(B - $BDj5A$5$l$?%a%G%#%"%?%$%W!"J8;z%;%C%H!"%(%s%3!<%G%#%s%0Ey$N(B - $BIUB0$7$?!"%P%$%HNs$N7A<0$G$9!#(B - $B$=$l$>$l$N%j%=!<%9$O$"$k;~E@$G(B 0 $B8D!"(B1 $B8D!"$=$l0J>e$NI=8=$H(B - $B4XO"IU$1$i$l$k2DG=@-$,$"$j$^$9!#J#?t$NI=8=$,MxMQ$G$-$k>l9g$O!"(B - $B%j%=!<%9$O(B<strong>$B%M%4%7%(!<%7%g%s2DG=$G$"$k(B</strong>$B$H$5$l!"(B - $B8D!9$NI=8=$O(B <strong>variant</strong> $B$H8F$P$l$^$9!#(B - $B%M%4%7%(!<%7%g%s2DG=$J%j%=!<%9$N(B variant $B$,0[$J$k!"(B - $B$=$N>uBV$r;X$7$F!"(B - $B%M%4%7%(!<%7%g%s$N(B<strong>$B<!85(B</strong>$B$H8F$S$^$9!#(B</p> + リクエストヘッダを完全にサポートしています。Apache は + 'transparent' コンテントネゴシエーションもサポートしていますが、 + これは RFC 2295 と RFC 2296 で定義されている試験的な + ネゴシエーションプロトコルです。 + これらの RFCで定義されている 'feature negotiation' + はサポートしていません。</p> + + <p><strong>リソース</strong>とは URI + で特定される概念上のもののことです (RFC 2396)。 Apache + のような HTTP サーバは、その名前空間の中での + リソースの<strong>表現</strong>へのアクセスを提供します。 + それぞれの表現は + 定義されたメディアタイプ、文字セット、エンコーディング等の + 付属した、バイト列の形式です。 + それぞれのリソースはある時点で 0 個、1 個、それ以上の表現と + 関連付けられる可能性があります。複数の表現が利用できる場合は、 + リソースは<strong>ネゴシエーション可能である</strong>とされ、 + 個々の表現は <strong>variant</strong> と呼ばれます。 + ネゴシエーション可能なリソースの variant が異なる、 + その状態を指して、 + ネゴシエーションの<strong>次元</strong>と呼びます。</p> </section> -<section id="negotiation"><title>Apache $B$K$*$1$k%M%4%7%(!<%7%g%s(B</title> +<section id="negotiation"><title>Apache におけるネゴシエーション</title> - <p>$B%j%=!<%9$r%M%4%7%(!<%7%g%s$9$k$?$a$K$O!"(B - $B%5!<%P$O(B variant $B$=$l$>$l$K$D$$$F$N>pJs$rCN$C$F$*$/I,MW$,$"$j$^$9!#(B - $B$3$l$O0J2<$NFs$D$NJ}K!$N$I$A$i$+$G9T$o$l$^$9!#(B</p> + <p>リソースをネゴシエーションするためには、 + サーバは variant それぞれについての情報を知っておく必要があります。 + これは以下の二つの方法のどちらかで行われます。</p> <ul> - <li>$B%?%$%W%^%C%W(B - (<em>$B$9$J$o$A(B</em> <code>*.var</code> $B%U%!%$%k(B) - $B$r;H$&J}K!!#(B $B$3$l$O(B variant - $B$rL@<(E*$K5s$2$F$$$k%U%!%$%k$r;XDj$7$^$9!#(B</li> + <li>タイプマップ + (<em>すなわち</em> <code>*.var</code> ファイル) + を使う方法。 これは variant + を明示的に挙げているファイルを指定します。</li> <li>'Multiviews' - $B$r;H$C$F!"%5!<%P$,0EL[$NFb$K%U%!%$%kL>$K%Q%?!<%s>H9g$r(B - $B9T$J$C$F$=$N7k2L$+$iA*Br$9$kJ}K!!#(B</li> + を使って、サーバが暗黙の内にファイル名にパターン照合を + 行なってその結果から選択する方法。</li> </ul> - <section id="type-map"><title>type-map $B%U%!%$%k$r;H$&(B</title> + <section id="type-map"><title>type-map ファイルを使う</title> - <p>$B%?%$%W%^%C%W$O(B <code>type-map</code> $B%O%s%I%i(B - ($B$b$7$/$O!"8E$$(B Apache - $B$N@_Dj$H2<0L8_49$G$"$k(B <glossary ref="mime-type">MIME $B%?%$%W(B</glossary> + <p>タイプマップは <code>type-map</code> ハンドラ + (もしくは、古い Apache + の設定と下位互換である <glossary ref="mime-type">MIME タイプ</glossary> <code>application/x-type-map</code>) - $B$K4XO"IU$1$i$l$?%I%-%e%a%s%H$G$9!#(B - $B$3$N5!G=$r;H$&$?$a$K$O!"$"$k%U%!%$%k$N3HD%;R$r(B + に関連付けられたドキュメントです。 + この機能を使うためには、あるファイルの拡張子を <code>type-map</code> - $B$H$7$FDj5A$9$k$h$&$J%O%s%I%i$r!"(B - $B@_Dj%U%!%$%kCf$KCV$/I,MW$,$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B - $B$3$l$O(B</p> + として定義するようなハンドラを、 + 設定ファイル中に置く必要があることに注意してください。 + これは</p> <example>AddHandler type-map .var</example> - <p>$B$r%5!<%P@_Dj%U%!%$%kCf$K=q$/$3$H$,0lHVNI$$J}K!$G$9!#(B</p> + <p>をサーバ設定ファイル中に書くことが一番良い方法です。</p> - <p>$B%?%$%W%^%C%W%U%!%$%k$O5-=R$9$k%j%=!<%9$HF1$8L>A0$r;}$C$F$$$F!"(B - $BMxMQ2DG=$J(B variant $B$=$l$>$l$N%(%s%H%j$r;}$C$F$$$kI,MW$,$"$j$^$9!#(B - $B$=$7$F!"$3$N%(%s%H%j$OO"B3$7$?(B HTTP $B$N%X%C%@9T$G9=@.$5$l$^$9!#(B - $B0[$J$k(B variant $B$N$?$a$N%(%s%H%j$O6u9T$G6h@Z$i$l$F$$$^$9!#(B - $B%(%s%H%jCf$K6u9T$,J#?t$"$C$F$O$$$1$^$;$s!#(B - $B=,47E*$K$O!"%^%C%W%U%!%$%k$OA4BN$r7k9g$7$?$b$N$N%(%s%H%j$+$i;O$^$j$^$9(B - ($B$7$+$7$3$l$OI,?\$G$O$J$/!"$"$C$?$H$7$F$bL5;k$5$l$k$b$N$G$9(B)$B!#(B - $B<!$KNc$r<($7$^$9!#$3$N%U%!%$%k$O%j%=!<%9(B <code>foo</code> - $B$r5-=R$7$F$$$k$N$G!"(B<code>foo.var</code> $B$H$$$&L>A0$K$J$j$^$9!#(B</p> + <p>タイプマップファイルは記述するリソースと同じ名前を持っていて、 + 利用可能な variant それぞれのエントリを持っている必要があります。 + そして、このエントリは連続した HTTP のヘッダ行で構成されます。 + 異なる variant のためのエントリは空行で区切られています。 + エントリ中に空行が複数あってはいけません。 + 習慣的には、マップファイルは全体を結合したもののエントリから始まります + (しかしこれは必須ではなく、あったとしても無視されるものです)。 + 次に例を示します。このファイルはリソース <code>foo</code> + を記述しているので、<code>foo.var</code> という名前になります。</p> <example> URI: foo<br /> @@ -155,12 +155,12 @@ Content-type: text/html;charset=iso-8859-2<br /> Content-language: fr, de<br /> </example> - <p>$B$?$H$((B MultiViews $B$r;HMQ$9$k$h$&$K$J$C$F$$$?$H$7$F$b!"(B - $B%U%!%$%kL>$N3HD%;R$h$j%?%$%W%^%C%W$NJ}$,M%@h8"$r;}$D$H$$$&$3$H$K$b(B - $BCm0U$7$F$/$@$5$$!#(B - variant $B$NIJ<A$,0c$&$H$-$O!"$3$N2hA|$N$h$&$K(B (JPEG, GIF, ASCII - $B%"!<%H$,$"$j$^$9(B) $B%a%G%#%"%?%$%W$N(B "qs" - $B%Q%i%a!<%?$G;XDj$5$l$^$9!#(B</p> + <p>たとえ MultiViews を使用するようになっていたとしても、 + ファイル名の拡張子よりタイプマップの方が優先権を持つということにも + 注意してください。 + variant の品質が違うときは、この画像のように (JPEG, GIF, ASCII + アートがあります) メディアタイプの "qs" + パラメータで指定されます。</p> <example> URI: foo<br /> @@ -175,362 +175,362 @@ Content-type: text/plain; qs=0.01<br /> </example> - <p>qs $BCM$NHO0O$O(B 0.000 $B$+$i(B 1.000 $B$G$9!#(Bqs $BCM$,(B - 0.000 $B$N(B variant $B$O7h$7$F(B - $BA*Br$5$l$J$$$3$H$KCm0U$7$F$/$@$5$$!#(B'qs' $BCM$N$J$$(B variant - $B$O(B qs $BCM(B 1.0 $B$r(B $BM?$($i$l$^$9!#(Bqs - $B%Q%i%a!<%?$O%/%i%$%"%s%H$NG=NO$K4X78L5$/!"B>$N(B variant $B$H(B - $BHf3S$7$?$H$-$N(B variant - $B$NAjBPE*$J!VIJ<A!W$r<($7$^$9!#(B - $BNc$($P!"<L??$rI=8=$7$h$&$H$7$F$$$k$H$-$O(B JPEG - $B%U%!%$%k$NJ}$,IaDL$O(B ASCII - $B%U%!%$%k$h$j$b9b$$IJ<A$K$J$j$^$9!#$7$+$7!"%j%=!<%9$,85!9(B - ASCII $B%"!<%H$GI=8=$5$l$F$$$k$H$-$O!"(BASCII $B%U%!%$%k$N(B - $BJ}$,(B JPEG $B%U%!%$%k$h$j$b9b$$IJ<A$K$J$j$^$9!#$3$N$h$&$K!"(Bqs - $B$O(B $BI=8=$5$l$k%j%=!<%9$N@-<A$K$h$C$F(B variant - $BKh$KFCM-$NCM$r<h$j$^$9!#(B</p> - - <p>$BG'<1$5$l$k%X%C%@$N0lMw$O(B + <p>qs 値の範囲は 0.000 から 1.000 です。qs 値が + 0.000 の variant は決して + 選択されないことに注意してください。'qs' 値のない variant + は qs 値 1.0 を 与えられます。qs + パラメータはクライアントの能力に関係無く、他の variant と + 比較したときの variant + の相対的な「品質」を示します。 + 例えば、写真を表現しようとしているときは JPEG + ファイルの方が普通は ASCII + ファイルよりも高い品質になります。しかし、リソースが元々 + ASCII アートで表現されているときは、ASCII ファイルの + 方が JPEG ファイルよりも高い品質になります。このように、qs + は 表現されるリソースの性質によって variant + 毎に特有の値を取ります。</p> + + <p>認識されるヘッダの一覧は <a href="mod/mod_negotiation.html#typemaps">mod_negotiation</a> - $B%I%-%e%a%s%H$K$"$j$^$9!#(B</p> + ドキュメントにあります。</p> </section> <section id="multiviews"><title>Multiviews</title> - <p><code>MultiViews</code> $B$O%G%#%l%/%H%jKh$N%*%W%7%g%s$G!"(B - <code>httpd.conf</code>$B%U%!%$%k$N(B + <p><code>MultiViews</code> はディレクトリ毎のオプションで、 + <code>httpd.conf</code>ファイルの <directive module="core" type="section">Directory</directive>, <directive module="core" type="section">Location</directive>, <directive module="core" type="section">Files</directive> - $B%;%/%7%g%sCf$d!"(B(<directive module="core">AllowOverride</directive> - $B$,E,@Z$JCM$K(B $B@_Dj$5$l$F$$$k$H(B) <code>.htaccess</code> - $B%U%!%$%k$G(B <directive module="core">Options</directive> - $B%G%#%l%/%F%#%V$K$h$C$F@_Dj$9$k$3$H$,$G$-$^$9!#(B - <code>Options All</code> $B$O(B + セクション中や、(<directive module="core">AllowOverride</directive> + が適切な値に 設定されていると) <code>.htaccess</code> + ファイルで <directive module="core">Options</directive> + ディレクティブによって設定することができます。 + <code>Options All</code> は <code>MultiViews</code> - $B$r%;%C%H$7$J$$$3$H$KCm0U$7$F$/$@$5$$!#L@<(E*$K(B - $B$=$NL>A0$r=q$/I,MW$,$"$j$^$9!#(B</p> - - <p><code>MultiViews</code> $B$N8z2L$O0J2<$N$h$&$K$J$j$^$9(B: - $B%5!<%P$,(B <code>/some/dir/foo</code> - $B$X$N%j%/%(%9%H$r<u$1<h$j!"(B<code>/some/dir</code> $B$G(B - <code>MultiViews</code> $B$,M-8z$G$"$C$F!"(B - <code>/some/dir/foo</code> $B$,B8:_(B<em>$B$7$J$$(B</em>$B>l9g!"(B - $B%5!<%P$O%G%#%l%/%H%j$rFI$s$G(B <code>foo.*</code> - $B$K$"$F$O$^$kA4$F$N%U%!%$%k$rC5$7!"(B - $B;v<B>e$=$l$i$N%U%!%$%k$r%^%C%W$9$k%?%$%W%^%C%W$r:n$j$^$9!#(B - $B$=$N$H$-!"%a%G%#%"%?%$%W$H%3%s%F%s%H%(%s%3!<%G%#%s%0$O!"$=$N%U%!%$%kL>$r(B - $BD>@\;XDj$7$?$H$-$HF1$8$b$N$,3d$jEv$F$i$l$^$9!#(B - $B$=$l$+$i%/%i%$%"%s%H$NMW5a$K0lHV9g$&$b$N$rA*$S$^$9!#(B</p> - - <p>$B%5!<%P$,%G%#%l%/%H%j$N:w0z$r:n$m$&$H$7$F$$$k>l9g!"(B + をセットしないことに注意してください。明示的に + その名前を書く必要があります。</p> + + <p><code>MultiViews</code> の効果は以下のようになります: + サーバが <code>/some/dir/foo</code> + へのリクエストを受け取り、<code>/some/dir</code> で + <code>MultiViews</code> が有効であって、 + <code>/some/dir/foo</code> が存在<em>しない</em>場合、 + サーバはディレクトリを読んで <code>foo.*</code> + にあてはまる全てのファイルを探し、 + 事実上それらのファイルをマップするタイプマップを作ります。 + そのとき、メディアタイプとコンテントエンコーディングは、そのファイル名を + 直接指定したときと同じものが割り当てられます。 + それからクライアントの要求に一番合うものを選びます。</p> + + <p>サーバがディレクトリの索引を作ろうとしている場合、 <code>MultiViews</code> - $B$O(B <directive module="mod_dir">DirectoryIndex</directive> - $B%G%#%l%/%F%#%V$G;XDj$5$l$?%U%!%$%k$rC5$92aDx$K$b(B - $BE,MQ$5$l$^$9!#@_Dj%U%!%$%k$K(B</p> + は <directive module="mod_dir">DirectoryIndex</directive> + ディレクティブで指定されたファイルを探す過程にも + 適用されます。設定ファイルに</p> <example>DirectoryIndex index</example> - <p>$B$,=q$+$l$F$$$F!"(B<code>index.html</code> $B$H(B - <code>index.html3</code> $B$,(B - $BN>J}B8:_$7$F$$$k$H!"%5!<%P$O$=$NCf$+$i$I$A$i$+$rE,Ev$KA*$S$^$9!#(B - $B$b$7$=$NN>J}$,B8:_$;$:$K(B <code>index.cgi</code> - $B$,B8:_$7$F$$$k$H!"(B $B%5!<%P$O$=$l$r<B9T$7$^$9!#(B</p> - - <p>$B$b$7%G%#%l%/%H%j$rFI$s$G$$$k:]$K!"(B - $BJ8;z%;%C%H!"%3%s%F%s%H%?%$%W!"8@8l!"%(%s%3!<%G%#%s%0$r(B - $B;XDj$9$k$?$a$N(B <code>mod_mime</code> - $B$GG'<1$G$-$k3HD%;R$r;}$?$J$$%U%!%$%k$,8+$D$+$k$H!"7k2L$O(B + <p>が書かれていて、<code>index.html</code> と + <code>index.html3</code> が + 両方存在していると、サーバはその中からどちらかを適当に選びます。 + もしその両方が存在せずに <code>index.cgi</code> + が存在していると、 サーバはそれを実行します。</p> + + <p>もしディレクトリを読んでいる際に、 + 文字セット、コンテントタイプ、言語、エンコーディングを + 指定するための <code>mod_mime</code> + で認識できる拡張子を持たないファイルが見つかると、結果は <directive module="mod_mime">MultiViewsMatch</directive> - $B%G%#%l%/%F%#%V$N@_Dj$K0MB8$7$^$9!#$3$N%G%#%l%/%F%#%V$O(B - $B%O%s%I%i!"%U%#%k%?!"B>$N%U%!%$%k3HD%;R%?%$%W$N$I$l$,(B - MultiViews $B%M%4%7%(!<%7%g%s$G;HMQ$G$-$k$+$r7hDj$7$^$9!#(B</p> + ディレクティブの設定に依存します。このディレクティブは + ハンドラ、フィルタ、他のファイル拡張子タイプのどれが + MultiViews ネゴシエーションで使用できるかを決定します。</p> </section> </section> -<section id="methods"><title>$B%M%4%7%(!<%7%g%sJ}K!(B</title> +<section id="methods"><title>ネゴシエーション方法</title> - <p>Apache $B$O%j%=!<%9$N(B variant $B$N0lMw$r!"%?%$%W%^%C%W%U%!%$%k$+(B - $B%G%#%l%/%H%jFb$N%U%!%$%kL>$+$i$+$G<hF@$7$?8e!"(B - $B!V:GE,$J!W(B variant $B$r7hDj$9$k$?$a$KFs$D$NJ}K!$N(B - $B$I$A$i$+$r5/F0$7$^$9!#(B - Apache $B$N%3%s%F%s%H%M%4%7%(!<%7%g%s$N5!G=$r;H$&$?$a$K!"(B - $B$I$N$h$&$K$7$F$3$ND4Dd$,9T$o$l$k$+>\:Y$rCN$kI,MW$O$"$j$^$;$s!#(B - $B$7$+$7$J$,$i!"$3$NJ8=q$N;D$j$G$O4X?4$N$"$k?M$N$?$a$K!"(B - $B;HMQ$5$l$F$$$kJ}K!$K$D$$$F@bL@$7$F$$$^$9!#(B</p> + <p>Apache はリソースの variant の一覧を、タイプマップファイルか + ディレクトリ内のファイル名からかで取得した後、 + 「最適な」 variant を決定するために二つの方法の + どちらかを起動します。 + Apache のコンテントネゴシエーションの機能を使うために、 + どのようにしてこの調停が行われるか詳細を知る必要はありません。 + しかしながら、この文書の残りでは関心のある人のために、 + 使用されている方法について説明しています。</p> - <p>$B%M%4%7%(!<%7%g%sJ}K!$OFs$D$"$j$^$9!#(B</p> + <p>ネゴシエーション方法は二つあります。</p> <ol> - <li>$BDL>o$O(B <strong>Apache $B$N%"%k%4%j%:%`$rMQ$$$?(B Server - driven negotiation</strong> $B$,;HMQ$5$l$^$9!#(BApache - $B$N%"%k%4%j%:%`$O8e$K>\:Y$K@bL@$5$l$F$$$^$9!#(B - $B$3$N%"%k%4%j%:%`$,;HMQ$5$l$?>l9g!"(BApache - $B$O$h$jNI$$7k2L$K$J$k$h$&$K!"FCDj$N<!85$K$*$$$FIJ<A$NCM$r(B - $B!VJQ$($k!W$3$H$,$G$-$^$9!#(BApache - $B$,IJ<A$NCM$rJQ$($kJ}K!$O8e$G>\:Y$K@bL@$5$l$F$$$^$9!#(B</li> + <li>通常は <strong>Apache のアルゴリズムを用いた Server + driven negotiation</strong> が使用されます。Apache + のアルゴリズムは後に詳細に説明されています。 + このアルゴリズムが使用された場合、Apache + はより良い結果になるように、特定の次元において品質の値を + 「変える」ことができます。Apache + が品質の値を変える方法は後で詳細に説明されています。</li> <li>RFC 2295 - $B$GDj5A$5$l$F$$$k5!9=$rMQ$$$F%V%i%&%6$,FC$K;XDj$7$?>l9g!"(B + で定義されている機構を用いてブラウザが特に指定した場合、 <strong>transparent content negotiation</strong> - $B$,;HMQ$5$l$^$9!#$3$N%M%4%7%(!<%7%g%sJ}K!$G$O!"!V:GE,$J!W(B - variant $B$N7hDj$r%V%i%&%6$,40A4$K@)8f$9$k$3$H$,$G$-$^$9!#(B - $B$G$9$+$i!"7k2L$O%V%i%&%6$,;HMQ$7$F$$$k%"%k%4%j%:%`$K0MB8$7$^$9!#(B - Transparent negotiation $B$N=hM}$N2aDx$G!"%V%i%&%6$O(B RFC 2296 - $B$G(B $BDj5A$5$l$F$$$k(B 'remote variant selection algorithm' - $B$r<B9T$9$k$h$&$KMj$`$3$H$,$G$-$^$9!#(B</li> + が使用されます。このネゴシエーション方法では、「最適な」 + variant の決定をブラウザが完全に制御することができます。 + ですから、結果はブラウザが使用しているアルゴリズムに依存します。 + Transparent negotiation の処理の過程で、ブラウザは RFC 2296 + で 定義されている 'remote variant selection algorithm' + を実行するように頼むことができます。</li> </ol> -<section id="dimensions"><title>$B%M%4%7%(!<%7%g%s$N<!85(B</title> +<section id="dimensions"><title>ネゴシエーションの次元</title> <table> <columnspec><column width=".15"/><column width=".85"/></columnspec> <tr valign="top"> - <th>$B<!85(B</th> + <th>次元</th> - <th>$B@bL@(B</th> + <th>説明</th> </tr> <tr valign="top"> - <td>$B%a%G%#%"%?%$%W(B</td> + <td>メディアタイプ</td> - <td>$B%V%i%&%6$O(B <code>Accept</code> - $B%X%C%@%U%#!<%k%I$GM%@h798~$r;XDj$7$^$9!#(B - $B%"%$%F%`$=$l$>$l$O!"4XO"$7$?IJ<A?tCM$r;}$D$3$H$,$G$-$^$9!#(B - variant $B$N@bL@$bIJ<A?tCM$r;}$D$3$H$,$G$-$^$9(B - ("qs" $B%Q%i%a!<%?$r$4Mw2<$5$$(B)$B!#(B</td> + <td>ブラウザは <code>Accept</code> + ヘッダフィールドで優先傾向を指定します。 + アイテムそれぞれは、関連した品質数値を持つことができます。 + variant の説明も品質数値を持つことができます + ("qs" パラメータをご覧下さい)。</td> </tr> <tr valign="top"> - <td>$B8@8l(B</td> + <td>言語</td> - <td>$B%V%i%&%6$O(B <code>Accept-Language</code> - $B%X%C%@%U%#!<%k%I$GM%@h798~$r;XDj$7$^$9!#(B - $BMWAG$=$l$>$l$KIJ<A?tCM$r;}$?$;$k$3$H$,$G$-$^$9!#(B - variants $B$O(B 0 $B$+(B 1 $B$D$+$=$l0J>e$N8@8l$H(B - $B4XO"$E$1$k$3$H$,$G$-$^$9!#(B</td> + <td>ブラウザは <code>Accept-Language</code> + ヘッダフィールドで優先傾向を指定します。 + 要素それぞれに品質数値を持たせることができます。 + variants は 0 か 1 つかそれ以上の言語と + 関連づけることができます。</td> </tr> <tr valign="top"> - <td>$B%(%s%3!<%G%#%s%0(B</td> + <td>エンコーディング</td> - <td>$B%V%i%&%6$O(B <code>Accept-Encoding</code> - $B%X%C%@%U%#!<%k%I$GM%@h798~$r;XDj$7$^$9!#(B - $BMWAG$=$l$>$l$KIJ<A?tCM$r;}$?$;$k$3$H$,$G$-$^$9!#(B</td> + <td>ブラウザは <code>Accept-Encoding</code> + ヘッダフィールドで優先傾向を指定します。 + 要素それぞれに品質数値を持たせることができます。</td> </tr> <tr valign="top"> - <td>$BJ8;z%;%C%H(B</td> + <td>文字セット</td> - <td>$B%V%i%&%6$O(B <code>Accept-Charset</code> - $B%X%C%@%U%#!<%k%I$GM%@h798~$r;XDj$7$^$9!#(B - $BMWAG$=$l$>$l$KIJ<A?tCM$r;}$?$;$k$3$H$,$G$-$^$9!#(B - variant $B$O%a%G%#%"%?%$%W$N%Q%i%a!<%?$H$7$FJ8;z%;%C%H$r(B - $B;XDj$9$k$3$H$b$G$-$^$9!#(B</td> + <td>ブラウザは <code>Accept-Charset</code> + ヘッダフィールドで優先傾向を指定します。 + 要素それぞれに品質数値を持たせることができます。 + variant はメディアタイプのパラメータとして文字セットを + 指定することもできます。</td> </tr> </table> </section> -<section id="algorithm"><title>Apache $B%M%4%7%(!<%7%g%s%"%k%4%j%:%`(B</title> +<section id="algorithm"><title>Apache ネゴシエーションアルゴリズム</title> - <p>$B%V%i%&%6$KJV$9!V:GE,$J!W(Bvariant $B$r(B ($B$b$7$"$l$P(B) $BA*Br$9$k$h$&$K(B - Apache $B$O<!$N%"%k%4%j%:%`$r;H$&$3$H$,$G$-$^$9!#(B - $B$3$N%"%k%4%j%:%`$r@_Dj$K$h$jJQ99$9$k$3$H$O$G$-$^$;$s!#(B - $B<!$N$h$&$KF0:n$7$^$9(B:</p> + <p>ブラウザに返す「最適な」variant を (もしあれば) 選択するように + Apache は次のアルゴリズムを使うことができます。 + このアルゴリズムを設定により変更することはできません。 + 次のように動作します:</p> <ol> - <li>$B$^$:$O$8$a$K!"%M%4%7%(!<%7%g%s$N<!85$=$l$>$l$K$D$$$FE,@Z$J(B - <em>Accept*</em> $B%X%C%@%U%#!<%k%I$rD4$Y!"(B - variant $B$=$l$>$l$KIJ<A$r3d$jEv$F$^$9!#(B - $B$b$7$"$k<!85$N(B <em>Accept*</em> $B%X%C%@$G$=$N(B variant - $B$,5vMF$G$-$J$$$3$H$,<($5$l$F$$$l$P!"$=$l$r:o=|$7$^$9!#(B - variant $B$,0l$D$b;D$C$F$$$J$1$l$P!"%9%F%C%W(B 4 $B$K9T$-$^$9!#(B</li> + <li>まずはじめに、ネゴシエーションの次元それぞれについて適切な + <em>Accept*</em> ヘッダフィールドを調べ、 + variant それぞれに品質を割り当てます。 + もしある次元の <em>Accept*</em> ヘッダでその variant + が許容できないことが示されていれば、それを削除します。 + variant が一つも残っていなければ、ステップ 4 に行きます。</li> <li> - $B>C5nK!$G!V:GE,$J!W(B variant $B$rA*$S$^$9!#(B - $B<!$N%F%9%H$,=gHV$KE,MQ$5$l$^$9!#(B - $B%F%9%H$GA*Br$5$l$J$+$C$?(B variant $B$O:o=|$5$l$F$$$-$^$9!#(B - $B%F%9%H8e(B variant $B$,0l$D$@$1;D$C$F$$$l$P!"$=$l$r:GE,$J$b$N$H$7$F(B - $B%9%F%C%W(B 3 $B$K?J$_$^$9!#(B - $BJ#?t(B variant $B$,;D$C$F$$$l$P!"<!$N%F%9%H$K?J$_$^$9!#(B + 消去法で「最適な」 variant を選びます。 + 次のテストが順番に適用されます。 + テストで選択されなかった variant は削除されていきます。 + テスト後 variant が一つだけ残っていれば、それを最適なものとして + ステップ 3 に進みます。 + 複数 variant が残っていれば、次のテストに進みます。 <ol> - <li>variant $B$N%a%G%#%"%?%$%W$NIJ<A?tCM$H(B <code>Accept</code> - $B%X%C%@$NIJ<A?tCM$H$N@Q$r7W;;$7$F!":G9bCM$N(B variant - $B$rA*$S$^$9!#(B</li> + <li>variant のメディアタイプの品質数値と <code>Accept</code> + ヘッダの品質数値との積を計算して、最高値の variant + を選びます。</li> - <li>$B8@8lIJ<A?tCM$,:G9b$N(B variant $B$rA*$S$^$9!#(B</li> + <li>言語品質数値が最高の variant を選びます。</li> - <li>($B$b$7$"$l$P(B) <code>Accept-Language</code> $B%X%C%@$N8@8l=g$+!"(B - ($B$b$7$"$l$P(B) + <li>(もしあれば) <code>Accept-Language</code> ヘッダの言語順か、 + (もしあれば) <directive module="mod_negotiation">LanguagePriority</directive> - $B%G%#%l%/%F%#%V$N8@8l=g$G:GE,$J8@8l$N(B variant $B$rA*$S$^$9!#(B</li> - - <li>$B:G9b!V%l%Y%k!W$N%a%G%#%"%Q%i%a!<%?(B - (text/html $B%a%G%#%"%?%$%W$N%P!<%8%g%s$rM?$($k$?$a$K;H$o$l$^$9(B) - $B$r;}$D(B variant $B$rA*$S$^$9!#(B</li> - - <li><code>Accept-Charset</code> $B%X%C%@9T$GM?$($i$l$F$$$k:G9b$NJ8;z%;%C%H(B - $B%a%G%#%"%Q%i%a!<%?$r;}$D(B variant $B$rA*$S$^$9!#(B - $BL@<(E*$K=|30$5$l$F$$$J$$8B$j!"(BISO-8859-1 - $B$,5vMF$5$l$k$h$&$K$J$C$F$$$^$9!#(B - <code>text/*</code> $B%a%G%#%"%?%$%W$G$"$k$1$l$I$b(B - $BFCDj$NJ8;z%;%C%H$KL@<(E*$K4XO"$E$1$i$l$F$$$k$o$1$G$O$J$$(B - variant $B$O(B ISO-8859-1 $B$G$"$k$H2>Dj$5$l$^$9!#(B</li> - - <li>ISO-8859-1 <em>$B$G$O$J$$(B</em>$BJ8;z%;%C%H%a%G%#%"%Q%i%a!<%?$H(B - $B4XO"$E$1$i$l$F$$$k(B variant $B$rA*$S$^$9!#(B - $B$=$N$h$&$J(B variant $B$,$J$$>l9g$O!"Be$o$j$KA4$F$N(B - variant $B$rA*$S$^$9!#(B</li> - - <li>$B:GE,$J%(%s%3!<%G%#%s%0$N(B variant $B$rA*$S$^$9!#(B - $B$b$7(B user-agent $B$,5vMF$9$k%(%s%3!<%G%#%s%0$,$"$l$P!"(B - $B$=$N(B variant $B$N$_$rA*$S$^$9!#(B - $B$=$&$G$O$J$/!"$b$7%(%s%3!<%I$5$l$?$b$N$H$=$&$G$J$$(B - variant $B$,:.$6$C$FB8:_$7$F$$$?$i%(%s%3!<%I$5$l$F$$$J$$(B - variant $B$N$_$rA*$S$^$9!#(B - variant $B$,A4It%(%s%3!<%I$5$l$F$$$k$+(B - variant $B$,A4It%(%s%3!<%I$5$l$F$$$J$$$H$$$&>l9g$O!"(B - $BA4$F$N(B variant $B$rA*$S$^$9!#(B</li> - - <li>$BFbMF$N:G$bC;$$(B variant $B$rA*$S$^$9!#(B</li> - - <li>$B;D$C$F$$$k(B variant $B$N:G=i$N$b$N$rA*$S$^$9!#(B - $B%?%$%W%^%C%W%U%!%$%k$N:G=i$K%j%9%H$5$l$F$$$k$+!"(B - variant $B$,%G%#%l%/%H%j$+$i:G=i$KFI$_9~$^$l$k;~$K(B - ASCII$B=g$G%=!<%H$7$F%U%!%$%kL>$,@hF,$K$J$C$?$+!"$N$I$A$i$+$G$9!#(B</li> + ディレクティブの言語順で最適な言語の variant を選びます。</li> + + <li>最高「レベル」のメディアパラメータ + (text/html メディアタイプのバージョンを与えるために使われます) + を持つ variant を選びます。</li> + + <li><code>Accept-Charset</code> ヘッダ行で与えられている最高の文字セット + メディアパラメータを持つ variant を選びます。 + 明示的に除外されていない限り、ISO-8859-1 + が許容されるようになっています。 + <code>text/*</code> メディアタイプであるけれども + 特定の文字セットに明示的に関連づけられているわけではない + variant は ISO-8859-1 であると仮定されます。</li> + + <li>ISO-8859-1 <em>ではない</em>文字セットメディアパラメータと + 関連づけられている variant を選びます。 + そのような variant がない場合は、代わりに全ての + variant を選びます。</li> + + <li>最適なエンコーディングの variant を選びます。 + もし user-agent が許容するエンコーディングがあれば、 + その variant のみを選びます。 + そうではなく、もしエンコードされたものとそうでない + variant が混ざって存在していたらエンコードされていない + variant のみを選びます。 + variant が全部エンコードされているか + variant が全部エンコードされていないという場合は、 + 全ての variant を選びます。</li> + + <li>内容の最も短い variant を選びます。</li> + + <li>残っている variant の最初のものを選びます。 + タイプマップファイルの最初にリストされているか、 + variant がディレクトリから最初に読み込まれる時に + ASCII順でソートしてファイル名が先頭になったか、のどちらかです。</li> </ol> </li> - <li>$B%"%k%4%j%:%`$r;H$C$F0l$D$N!V:GE,$J!W(Bvariant $B$rA*$S$^$7$?$N$G!"(B - $B$=$l$r1~Ez$H$7$FJV$7$^$9!#%M%4%7%(!<%7%g%s$N<!85$r;XDj$9$k$?$a$K(B - HTTP $B%l%9%]%s%9%X%C%@(B <code>Vary</code> $B$,@_Dj$5$l$^$9(B - ($B%j%=!<%9$N%-%c%C%7%e$r$9$k;~$K!"(B - $B%V%i%&%6$d%-%c%C%7%e$O$3$N>pJs$r;H$&$3$H$,$G$-$^$9(B)$B!#(B - $B0J>e$G=*$o$j!#(B</li> - - <li>$B$3$3$KMh$?$H$$$&$3$H$O!"(Bvariant $B$,0l$D$bA*Br$5$l$J$+$C$?(B - ($B%V%i%&%6$,5vMF$9$k$b$N$,$J$+$C$?$?$a(B) $B$H$$$&$3$H$G$9!#(B - 406 $B%9%F!<%?%9(B ("No Acceptable representation" $B$r0UL#$9$k(B) - $B$,!"MxMQ2DG=$J(B variant $B$N%j%9%H$N$D$$$?(B HTML - $B%I%-%e%a%s%H$H$H$b$KJV$5$l$^$9!#(B - $BAj0c$N<!85$r<($9(B HTTP <code>Vary</code> $B%X%C%@$b@_Dj$5$l$^$9!#(B</li> + <li>アルゴリズムを使って一つの「最適な」variant を選びましたので、 + それを応答として返します。ネゴシエーションの次元を指定するために + HTTP レスポンスヘッダ <code>Vary</code> が設定されます + (リソースのキャッシュをする時に、 + ブラウザやキャッシュはこの情報を使うことができます)。 + 以上で終わり。</li> + + <li>ここに来たということは、variant が一つも選択されなかった + (ブラウザが許容するものがなかったため) ということです。 + 406 ステータス ("No Acceptable representation" を意味する) + が、利用可能な variant のリストのついた HTML + ドキュメントとともに返されます。 + 相違の次元を示す HTTP <code>Vary</code> ヘッダも設定されます。</li> </ol> </section> </section> -<section id="better"><title>$BIJ<A$NCM$rJQ$($k(B</title> +<section id="better"><title>品質の値を変える</title> - <p>$B>e5-$N(B Apache $B%M%4%7%(!<%7%g%s%"%k%4%j%:%`$N873J$J2r<a$G(B - $BF@$i$l$k$G$"$m$&CM$+$i!"(BApache $B$OIJ<A?tCM$r;~!9JQ$($^$9!#(B - $B$3$l$O!"$3$N%"%k%4%j%:%`$G40A4$G$O$J$$!"$"$k$$$O@53N$G$J$$>pJs$rAw$k(B - $B%V%i%&%68~$1$K$h$j$h$$7k2L$rF@$k$?$a$K9T$o$l$^$9!#(B - $B$+$J$j%]%T%e%i!<$J%V%i%&%6$G!"$b$7$J$$$H4V0c$C$?(B variant - $B$rA*Br$9$k7k2L$K$J$C$F$7$^$&$h$&$J(B <code>Accept</code> - $B%X%C%@>pJs$rAw$k$b$N$b$"$j$^$9!#(B - $B%V%i%&%6$,40A4$G@5$7$$>pJs$rAw$C$F$$$l$P!"(B - $B$3$N?tCMJQ2=$OE,MQ$5$l$^$;$s!#(B</p> + <p>上記の Apache ネゴシエーションアルゴリズムの厳格な解釈で + 得られるであろう値から、Apache は品質数値を時々変えます。 + これは、このアルゴリズムで完全ではない、あるいは正確でない情報を送る + ブラウザ向けによりよい結果を得るために行われます。 + かなりポピュラーなブラウザで、もしないと間違った variant + を選択する結果になってしまうような <code>Accept</code> + ヘッダ情報を送るものもあります。 + ブラウザが完全で正しい情報を送っていれば、 + この数値変化は適用されません。</p> -<section id="wildcards"><title>$B%a%G%#%"%?%$%W$H%o%$%k%I%+!<%I(B</title> +<section id="wildcards"><title>メディアタイプとワイルドカード</title> - <p><code>Accept:</code> $B%j%/%(%9%H%X%C%@$O%a%G%#%"%?%$%W$NM%@h798~$r;XDj$7$^$9!#(B - $B$3$l$O$^$?!"(B"image/*" $B$d(B "*/*" - $B$H$$$C$?!V%o%$%k%I%+!<%I!W%a%G%#%"%?%$%W$r4^$`$3$H$,$G$-$^$9!#(B - $B$3$3$G(B * $B$OG$0U$NJ8;zNs$K%^%C%A$7$^$9!#(B - $B$G$9$+$i!"<!$N(B:</p> + <p><code>Accept:</code> リクエストヘッダはメディアタイプの優先傾向を指定します。 + これはまた、"image/*" や "*/*" + といった「ワイルドカード」メディアタイプを含むことができます。 + ここで * は任意の文字列にマッチします。 + ですから、次の:</p> <example>Accept: image/*, */*</example> - <p>$B$r4^$`%j%/%(%9%H$O!"(B"image/" $B$G$O$8$^$k%?%$%WA4$F$,5vMF$G$-$k!"(B - $B$=$7$FB>$N$I$s$J%?%$%W$b5vMF$G$-$k(B - ($B$3$N>l9g$O$8$a$N(B "image/*" $B$O>iD9$K$J$j$^$9(B) - $B$3$H$r<($7$^$9!#(B - $B07$&$3$H$N$G$-$kL@<(E*$J%?%$%W$K2C$($F!"5!3#E*$K(B - $B%o%$%k%I%+!<%I$rAw$k%V%i%&%6$b$"$j$^$9!#Nc$($P(B:</p> + <p>を含むリクエストは、"image/" ではじまるタイプ全てが許容できる、 + そして他のどんなタイプも許容できる + (この場合はじめの "image/*" は冗長になります) + ことを示します。 + 扱うことのできる明示的なタイプに加えて、機械的に + ワイルドカードを送るブラウザもあります。例えば:</p> <example> Accept: text/html, text/plain, image/gif, image/jpeg, */* </example> - <p>$B$3$&$9$k$3$H$NA@$$$O!"L@<(E*$K%j%9%H$7$F$$$k%?%$%W$,M%@h$5$l$k$1$l$I$b!"(B - $B0[$J$kI=8=$,MxMQ2DG=$G$"$l$P$=$l$G$bNI$$!"$H$$$&$3$H$G$9!#(B - $B$7$+$7$J$,$i!">e$N4pK\E*$J%"%k%4%j%:%`$G$O!"(B - */* $B%o%$%k%I%+!<%I$OB>$NA4$F$N%?%$%W$HA4$/F1Ey$J$N$GM%@h$5$l$^$;$s!#(B - $B%V%i%&%6$O(B */* $B$K$b$C$HDc$$IJ<A(B ($BM%@h(B) - $BCM$rIU$1$F%j%/%(%9%H$rAw$k$Y$-$J$N$G$9!#Nc$($P(B:</p> + <p>こうすることの狙いは、明示的にリストしているタイプが優先されるけれども、 + 異なる表現が利用可能であればそれでも良い、ということです。 + しかしながら、上の基本的なアルゴリズムでは、 + */* ワイルドカードは他の全てのタイプと全く同等なので優先されません。 + ブラウザは */* にもっと低い品質 (優先) + 値を付けてリクエストを送るべきなのです。例えば:</p> <example> Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01 </example> - <p>$BL@<(E*$J%?%$%W$K$OIJ<A?tCM$,IU$1$i$l$F$$$^$;$s$N$G!"(B - $B%G%U%)%k%H$N(B 1.0 ($B:G9bCM(B) $B$NM%@h$K$J$j$^$9!#(B - $B%o%$%k%I%+!<%I(B */* $B$ODc$$M%@hEY(B 0.01 $B$rM?$($i$l$F$$$k$N$G!"(B - $BL@<(E*$K%j%9%H$5$l$F$$$k%?%$%W$K9gCW$9$k(B variant $B$,$J$$>l9g$K$N$_!"(B - $BB>$N%?%$%W$,JV$5$l$^$9!#(B</p> - - <p>$B$b$7(B <code>Accept:</code> $B%X%C%@$,(B q $BCM$rA4$/4^$s$G(B<em>$B$$$J$1$l$P(B</em>$B!"(B - $BK>$_$N5sF0$r$9$k$?$a$K!"(B - Apache $B$O(B "*/*" $B$,$"$l$P(B 0.01 $B$N(B q $BCM$r@_Dj$7$^$9!#(B - $B$^$?!"(B"type/*" $B$N7A$N%o%$%k%I%+!<%I$K$O(B 0.02 $B$N(B q $BCM$r@_Dj$7$^$9(B - ($B$G$9$+$i$3$l$i$O(B "*/*" $B$N%^%C%A$h$j$bM%@h$5$l$^$9(B)$B!#(B - $B$b$7(B <code>Accept:</code> $B%X%C%@Cf$N%a%G%#%"%?%$%W$N$I$l$+$,(B q - $BCM$r4^$s$G$$$l$P!"$3$l$i$NFC<l$JCM$OE,1~(B<em>$B$5$l$:(B</em>$B!"(B - $B@5$7$$>pJs$rAw$k%V%i%&%6$+$i$N%j%/%(%9%H$O4|BTDL$j$K(B - $BF0:n$9$k$h$&$K$J$j$^$9!#(B</p> + <p>明示的なタイプには品質数値が付けられていませんので、 + デフォルトの 1.0 (最高値) の優先になります。 + ワイルドカード */* は低い優先度 0.01 を与えられているので、 + 明示的にリストされているタイプに合致する variant がない場合にのみ、 + 他のタイプが返されます。</p> + + <p>もし <code>Accept:</code> ヘッダが q 値を全く含んで<em>いなければ</em>、 + 望みの挙動をするために、 + Apache は "*/*" があれば 0.01 の q 値を設定します。 + また、"type/*" の形のワイルドカードには 0.02 の q 値を設定します + (ですからこれらは "*/*" のマッチよりも優先されます)。 + もし <code>Accept:</code> ヘッダ中のメディアタイプのどれかが q + 値を含んでいれば、これらの特殊な値は適応<em>されず</em>、 + 正しい情報を送るブラウザからのリクエストは期待通りに + 動作するようになります。</p> </section> -<section id="exceptions"><title>$B8@8l%M%4%7%(!<%7%g%s$NNc30=hM}(B</title> +<section id="exceptions"><title>言語ネゴシエーションの例外処理</title> - <p>Apache 2.0 $B$G$O?7$?$K!"8@8l%M%4%7%(!<%7%g%s$,E,9g$9$k$b$N$r(B - $B8+$D$1$k$N$K<:GT$7$?;~$K!"M%2m$K%U%)!<%k%P%C%/$G$-$k$h$&$J(B - $B%M%4%7%(!<%7%g%s%"%k%4%j%:%`$,4v$D$+DI2C$5$l$^$7$?!#(B</p> + <p>Apache 2.0 では新たに、言語ネゴシエーションが適合するものを + 見つけるのに失敗した時に、優雅にフォールバックできるような + ネゴシエーションアルゴリズムが幾つか追加されました。</p> - <p>$B%5!<%P$N%Z!<%8$r%/%i%$%"%s%H$,%j%/%(%9%H$7$?$1$l$I$b!"(B - $B%V%i%&%6$NAw$C$F$-$?(B <code>Accept-Language</code> $B$K9gCW$9$k%Z!<%8$,0l$D$b(B - $B8+$D$+$i$J$+$C$?>l9g$K!"%5!<%P$O(B "No Acceptable Variant" - $B$+(B "Multiple Choices" $B%l%9%]%s%9$r%/%i%$%"%s%H$KJV$7$^$9!#(B - $B$3$l$i$N%(%i!<%a%C%;!<%8$rJV$5$J$$$h$&$K!"(B - $B$3$N$h$&$J>l9g$K$O(B Apache $B$,(B <code>Accept-Language</code> $B$rL5;k$7$F!"(B - $B%/%i%$%"%s%H$N%j%/%(%9%H$KL@<(E*$K$O9gCW$7$J$$%I%-%e%a%s%H$r(B - $BDs6!$9$k$h$&$K@_Dj$G$-$^$9!#(B + <p>サーバのページをクライアントがリクエストしたけれども、 + ブラウザの送ってきた <code>Accept-Language</code> に合致するページが一つも + 見つからなかった場合に、サーバは "No Acceptable Variant" + か "Multiple Choices" レスポンスをクライアントに返します。 + これらのエラーメッセージを返さないように、 + このような場合には Apache が <code>Accept-Language</code> を無視して、 + クライアントのリクエストに明示的には合致しないドキュメントを + 提供するように設定できます。 <directive module="mod_negotiation">ForceLanguagePriority</directive> - $B%G%#%l%/%F%#%V$O!"$3$l$i$N%(%i!<$N0l$D$+N>J}$r%*!<%P!<%i%$%I$9$k$?$a$K(B - $B;HMQ$G$-$F!"(B + ディレクティブは、これらのエラーの一つか両方をオーバーライドするために + 使用できて、 <directive module="mod_negotiation">LanguagePriority</directive> - $B%G%#%l%/%F%#%V$NFbMF$r;H$C$F%5!<%P$NH=CG$rBe9T$9$k$h$&$K$G$-$^$9!#(B</p> - - <p>$B%5!<%P$OB>$KE,9g$9$k$b$N$,8+$D$+$i$J$1$l$P!"(B - $B8@8l%5%V%;%C%H$GE,9g$9$k$b$N$r;n$=$&$H$b$7$^$9!#(B - $BNc$($P%/%i%$%"%s%H$,1Q9q1Q8l$G$"$k(B <code>en-GB</code> $B8@8l$G(B - $B%I%-%e%a%s%H$r%j%/%(%9%H$7$?>l9g!"%5!<%P$O(B HTTP/1.1 - $B5,3J$G$O!"C1$K(B <code>en</code> $B$H%^!<%/$5$l$F$$$k%I%-%e%a%s%H$r(B - $B%^%C%A$9$k$b$N$H$9$k$3$H$ODL>o$O5v$5$l$F$$$^$;$s!#(B - ($B1Q9q1Q8l$OM}2r$G$-$k$1$I0lHLE*$J1Q8l$OM}2r$G$-$J$$$H$$$&FI$_<j$O(B - $B9M$($i$l$J$$$N$G!"(BAccept-Language $B%X%C%@$G(B <code>en-GB</code> - $B$r4^$s$G(B <code>en</code> $B$r4^$^$J$$$N$O$[$\3N<B$K@_Dj$N4V0c$$$G$"$k!"(B - $B$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B - $B$G$9$,IT9,$J$3$H$K!"B?$/$N%/%i%$%"%s%H$G$O%G%U%)%k%H$G(B - $B$3$N$h$&$J@_Dj$K$J$C$F$$$^$9!#(B) - $B$7$+$7$J$,$i!"B>$N8@8l$K$O%^%C%A$;$:!"(B"No Acceptable Variants" - $B%(%i!<$rJV$7$?$j!"(B + ディレクティブの内容を使ってサーバの判断を代行するようにできます。</p> + + <p>サーバは他に適合するものが見つからなければ、 + 言語サブセットで適合するものを試そうともします。 + 例えばクライアントが英国英語である <code>en-GB</code> 言語で + ドキュメントをリクエストした場合、サーバは HTTP/1.1 + 規格では、単に <code>en</code> とマークされているドキュメントを + マッチするものとすることは通常は許されていません。 + (英国英語は理解できるけど一般的な英語は理解できないという読み手は + 考えられないので、Accept-Language ヘッダで <code>en-GB</code> + を含んで <code>en</code> を含まないのはほぼ確実に設定の間違いである、 + ということに注意してください。 + ですが不幸なことに、多くのクライアントではデフォルトで + このような設定になっています。) + しかしながら、他の言語にはマッチせず、"No Acceptable Variants" + エラーを返したり、 <directive module="mod_negotiation">LanguagePriority</directive> - $B$K%U%)!<%k%P%C%/$7$h$&$H$7$F$$$k$H$-$O!"(B - $B%5%V%;%C%H;XDj$rL5;k$7$F!"(B<code>en-GB</code> $B$r(B <code>en</code> - $B$K%^%C%A$7$^$9!#(B - Apache $B$O%/%i%$%"%s%H$N5vMF8@8l%j%9%H$K0EL[$K(B - $BHs>o$KDc$$IJ<ACM$N?F8@8l$r2C$($k$3$H$K$J$j$^$9!#(B - $B$7$+$7!"%/%i%$%"%s%H$,(B "en-GB; q=0.9, fr; q=0.8" $B$H%j%/%(%9%H$7$F!"(B - $B%5!<%P$,(B "en" $B$H(B "fr" $B$H@_7W$5$l$?%I%-%e%a%s%H$r;}$C$F$$$k>l9g$O!"(B - "fr" $B%I%-%e%a%s%H$,JV$5$l$k$3$H$KCm0U$7$F$/$@$5$$!#(B - $B$3$N$h$&$J=hM}$O!"(BHTTP 1.1 $B5,3J$H$N@09g@-$r0];}$7$F!"(B - $BE,@Z$K@_Dj$5$l$?%/%i%$%"%s%H$H$b$-$A$s$HF0:n$9$k$?$a$K(B - $BI,MW$G$9!#(B</p> - - <p>$B$h$j9bEY$J%F%/%K%C%/(B (Cookie $B$dFC<l$J(B URL $B%Q%9Ey(B) - $B$K$*$$$F$b%f!<%6$N8@8lA*Br$r%5%]!<%H$9$k$?$a!"(B - Apache 2.0.47 $B$+$i$O!"(B<module>mod_negotiation</module> - $B$,(B<a href="env.html">$B4D6-JQ?t(B</a> <code>prefer-language</code> - $B$rG'<1$9$k$h$&$K$J$j$^$7$?!#(B - $B$3$NJQ?t$,B8:_$7$F!"E,@Z$J8@8l%?%0$,BeF~$5$l$F$$$k$N$G$"$l$P!"(B - <module>mod_negotiation</module> $B$O9gCW$9$k(B variant - $B$rA*Br$7$h$&$H$7$^$9!#9gCW$9$k$b$N$,L5$1$l$P!"(B - $BDL>o$N%M%4%7%(!<%7%g%s<j=g$,E,MQ$5$l$^$9!#(B</p> + にフォールバックしようとしているときは、 + サブセット指定を無視して、<code>en-GB</code> を <code>en</code> + にマッチします。 + Apache はクライアントの許容言語リストに暗黙に + 非常に低い品質値の親言語を加えることになります。 + しかし、クライアントが "en-GB; q=0.9, fr; q=0.8" とリクエストして、 + サーバが "en" と "fr" と設計されたドキュメントを持っている場合は、 + "fr" ドキュメントが返されることに注意してください。 + このような処理は、HTTP 1.1 規格との整合性を維持して、 + 適切に設定されたクライアントともきちんと動作するために + 必要です。</p> + + <p>より高度なテクニック (Cookie や特殊な URL パス等) + においてもユーザの言語選択をサポートするため、 + Apache 2.0.47 からは、<module>mod_negotiation</module> + が<a href="env.html">環境変数</a> <code>prefer-language</code> + を認識するようになりました。 + この変数が存在して、適切な言語タグが代入されているのであれば、 + <module>mod_negotiation</module> は合致する variant + を選択しようとします。合致するものが無ければ、 + 通常のネゴシエーション手順が適用されます。</p> <example><title>Example</title> SetEnvIf Cookie "language=(.+)" prefer-language=$1 @@ -539,39 +539,39 @@ </section> <section id="extensions"><title>Transparent Content Negotiation -$B$N3HD%(B</title> - -<p>Apache $B$O(B transparent content negotiation $B%W%m%H%3%k(B -(RFC 2295) $B$r<!$N$h$&$K3HD%$7$F$$$^$9!#(B -$BFCDj$N%3%s%F%s%H%(%s%3!<%G%#%s%0$N$_$,MxMQ2DG=$G$"$k(B variant -$B$K0u$rIU$1$k$?$a$K!"?7$?$K(B <code>{encoding ..}</code> -$BMWAG$r(B variant $B%j%9%HCf$K;H$C$F$$$^$9!#(B -$B%j%9%HCf$N%(%s%3!<%I$5$l$?(B variant $B$rG'<1$7!"(B -<code>Accept-Encoding</code> $B%j%/%(%9%H%X%C%@$K=>$C$F5vMF$5$l$k(B -$B%(%s%3!<%I$r$b$C$?(B variant $B$O!"$I$l$G$b8uJd(B variant -$B$H$7$F;HMQ$9$k$h$&$K!"(B -RVSA/1.0 $B%"%k%4%j%:%`(B (RFC 2296) $B$N<BAu$,3HD%$5$l$^$7$?!#(B -RVSA/1.0 $B$N<BAu$G$O!":GE,$J(B variant $B$,8+$D$+$k$^$G!"(B -$B7W;;$7$?IJ<A?tCM$O>.?tE@0J2<(B 5 $B7e$^$G4]$a$^$;$s!#(B</p> +の拡張</title> + +<p>Apache は transparent content negotiation プロトコル +(RFC 2295) を次のように拡張しています。 +特定のコンテントエンコーディングのみが利用可能である variant +に印を付けるために、新たに <code>{encoding ..}</code> +要素を variant リスト中に使っています。 +リスト中のエンコードされた variant を認識し、 +<code>Accept-Encoding</code> リクエストヘッダに従って許容される +エンコードをもった variant は、どれでも候補 variant +として使用するように、 +RVSA/1.0 アルゴリズム (RFC 2296) の実装が拡張されました。 +RVSA/1.0 の実装では、最適な variant が見つかるまで、 +計算した品質数値は小数点以下 5 桁まで丸めません。</p> </section> -<section id="naming"><title>$B%j%s%/$HL>A0$NJQ49$K4X$9$kCm0UE@(B</title> +<section id="naming"><title>リンクと名前の変換に関する注意点</title> - <p>$B8@8l%M%4%7%(!<%7%g%s$r;H$C$F$$$k>l9g$O!"(B - $B%U%!%$%k$,0l$D0J>e$N3HD%;R$r;}$F$F!"(B - $B3HD%;R$N=gHV$ODL>o$O9MN8$5$l$J$$(B - ($B>\:Y$O(B <a href="mod/mod_mime.html#multipleext">mod_mime</a> - $B$r;2>H(B) $B$N$G!"(B - $B4v$D$+$N0[$J$kL>A0$NJQ49$rA*$Y$k$3$H$K$J$j$^$9!#(B</p> + <p>言語ネゴシエーションを使っている場合は、 + ファイルが一つ以上の拡張子を持てて、 + 拡張子の順番は通常は考慮されない + (詳細は <a href="mod/mod_mime.html#multipleext">mod_mime</a> + を参照) ので、 + 幾つかの異なる名前の変換を選べることになります。</p> - <p>$BE57?E*$J%U%!%$%k$G$O!"(BMIME $B%?%$%W3HD%;R(B (<em>$BNc$($P(B</em> - <code>html</code>) $B$r;}$C$F$$$F!"%(%s%3!<%G%#%s%03HD%;R(B - (<em>$BNc$($P(B</em> <code>gz</code>) $B$r;}$C$F$$$k$+$b$7$l$J$/$F!"(B - $B$3$N%U%!%$%k$K0[$J$k8@8l(B variant $B$rMQ0U$7$F$$$l$P!"(B - $B$b$A$m$s8@8l3HD%;R(B (<em>$BNc$($P(B</em> <code>en</code>) - $B$r;}$C$F$$$k$G$7$g$&!#(B</p> + <p>典型的なファイルでは、MIME タイプ拡張子 (<em>例えば</em> + <code>html</code>) を持っていて、エンコーディング拡張子 + (<em>例えば</em> <code>gz</code>) を持っているかもしれなくて、 + このファイルに異なる言語 variant を用意していれば、 + もちろん言語拡張子 (<em>例えば</em> <code>en</code>) + を持っているでしょう。</p> - <p>$BNc(B:</p> + <p>例:</p> <ul> <li>foo.en.html</li> @@ -581,17 +581,17 @@ RVSA/1.0 $B$N<BAu$G$O!":GE,$J(B variant $B$,8+$D$+$k$^$G!"(B <li>foo.en.html.gz</li> </ul> - <p>$B%U%!%$%kL>$H!"$=$l$KBP$7$F;H$($k%j%s%/$H;H$($J$$%j%s%/$NNc$G$9(B:</p> + <p>ファイル名と、それに対して使えるリンクと使えないリンクの例です:</p> <table border="1" cellpadding="8" cellspacing="0"> <columnspec><column width=".2"/><column width=".2"/> <column width=".2"/></columnspec> <tr> - <th>$B%U%!%$%kL>(B</th> + <th>ファイル名</th> - <th>$B;H$($k%j%s%/(B</th> + <th>使えるリンク</th> - <th>$B;H$($J$$%j%s%/(B</th> + <th>使えないリンク</th> </tr> <tr> @@ -652,63 +652,63 @@ RVSA/1.0 $B$N<BAu$G$O!":GE,$J(B variant $B$,8+$D$+$k$^$G!"(B </tr> </table> - <p>$B>e$NI=$r8+$F!"3HD%;R$J$7$N%j%s%/(B (<em>$BNc$($P(B</em> <code>foo</code>) - $B$,$$$D$G$b;H$($k$3$H$K5$$,IU$/$G$7$g$&!#(B - $B$3$NMxE@$O!"%I%-%e%a%s%H$H$7$F1~Ez$9$k%U%!%$%k$N(B - $B<B:]$N%U%!%$%k%?%$%W$r1#JC$7$F!"%j%s%/$N;2>H$rJQ99$9$k$3$H$J$/(B - $B8e$+$i%U%!%$%k$rJQ99$G$-$k!"(B - <em>$BNc$($P(B</em> <code>html</code> $B$+$i(B <code>shtml</code> - $B$K!"$"$k$$$O(B <code>cgi</code> $B$KJQ99$G$-$kE@$G$9!#(B</p> - - <p>$B%j%s%/$K(B MIME $B%?%$%W$r;H$$B3$1$?$$(B (<em>$BNc$($P(B</em> - <code>foo.html</code>)$B;~$O!"8@8l3HD%;R$O(B - ($B%(%s%3!<%G%#%s%03HD%;R$b$"$l$P$=$l$b4^$a$F(B) - MIME $B%?%$%W3HD%;R$N1&B&$K$J$1$l$P$J$j$^$;$s(B - (<em>$BNc$($P(B</em> <code>foo.html.en</code>)$B!#(B</p> + <p>上の表を見て、拡張子なしのリンク (<em>例えば</em> <code>foo</code>) + がいつでも使えることに気が付くでしょう。 + この利点は、ドキュメントとして応答するファイルの + 実際のファイルタイプを隠蔽して、リンクの参照を変更することなく + 後からファイルを変更できる、 + <em>例えば</em> <code>html</code> から <code>shtml</code> + に、あるいは <code>cgi</code> に変更できる点です。</p> + + <p>リンクに MIME タイプを使い続けたい (<em>例えば</em> + <code>foo.html</code>)時は、言語拡張子は + (エンコーディング拡張子もあればそれも含めて) + MIME タイプ拡張子の右側になければなりません + (<em>例えば</em> <code>foo.html.en</code>)。</p> </section> -<section id="caching"><title>$B%-%c%C%7%e$K4X$9$kCm0U;v9`(B</title> - - <p>$B%-%c%C%7%e$,0l$D$NI=8=$rJ]B8$7$F$$$k$H$-$O!"(B - $B%j%/%(%9%H(B URL $B$H4XO"$E$1$i$l$F$$$^$9!#(B - $B<!$K$=$N(B URL $B$,%j%/%(%9%H$5$l$?;~$K!"%-%c%C%7%e$O(B - $BJ]B8$5$l$F$$$kI=8=$r;HMQ$G$-$^$9!#$7$+$7!"(B - $B%j%=!<%9$,%5!<%P$G%M%4%7%(!<%7%g%s2DG=$G$"$l$P!"(B - $B:G=i$N%j%/%(%9%H$G%-%c%C%7%e$5$l$FB3$/%-%c%C%7%e%R%C%H$G$O(B - $B4V0c$C$?1~Ez$rJV$7$F$7$^$&$H$$$&$3$H$K$J$j$+$M$^$;$s!#(B - $B$3$l$rKI$0$?$a$K!"(BApache $B$O%3%s%F%s%H%M%4%7%(!<%7%g%s$N(B - $B8e$KJV$5$l$?1~EzA4$F$K!"(BHTTP/1.0 $B%/%i%$%"%s%H$G$O(B - $B%-%c%C%7%eIT2DG=$N0u$r$D$1$^$9!#(B - $B$^$?!"%M%4%7%(!<%7%g%s$5$l$?1~Ez$N%-%c%C%7%e$r2DG=$K$9$k(B - HTTP/1.1 $B%W%m%H%3%k$N5!G=$b(B Apache $B$O%5%]!<%H$7$^$9!#(B</p> - - <p>HTTP/1.0 $B=`5r$N%/%i%$%"%s%H$+$i$N%j%/%(%9%H$KBP$7$F$O!"(B - ($B%V%i%&%6$G$"$m$&$H%-%c%C%7%e$G$"$m$&$H(B) - $B%M%4%7%(!<%7%g%s$r<u$1$?1~Ez$N%-%c%C%7%e$r5v$9$?$a$K!"(B +<section id="caching"><title>キャッシュに関する注意事項</title> + + <p>キャッシュが一つの表現を保存しているときは、 + リクエスト URL と関連づけられています。 + 次にその URL がリクエストされた時に、キャッシュは + 保存されている表現を使用できます。しかし、 + リソースがサーバでネゴシエーション可能であれば、 + 最初のリクエストでキャッシュされて続くキャッシュヒットでは + 間違った応答を返してしまうということになりかねません。 + これを防ぐために、Apache はコンテントネゴシエーションの + 後に返された応答全てに、HTTP/1.0 クライアントでは + キャッシュ不可能の印をつけます。 + また、ネゴシエーションされた応答のキャッシュを可能にする + HTTP/1.1 プロトコルの機能も Apache はサポートします。</p> + + <p>HTTP/1.0 準拠のクライアントからのリクエストに対しては、 + (ブラウザであろうとキャッシュであろうと) + ネゴシエーションを受けた応答のキャッシュを許すために、 <directive module="mod_negotiation">CacheNegotiatedDocs</directive> - $B%G%#%l%/%F%#%V$r;HMQ$G$-$^$9!#(B - $B$3$N%G%#%l%/%F%#%V$O!"%5!<%P@_Dj%U%!%$%k$d%P!<%A%c%k%[%9%H$K=q$/$3$H$,$G$-!"(B - $B0z?t$r$H$j$^$;$s!#(B - HTTP/1.1 $B%/%i%$%"%s%H$+$i$N%j%/%(%9%H$K$O8zNO$r;}$A$^$;$s!#(B</p> - - <p>HTTP/1.1 $B%/%i%$%"%s%H$KBP$7$F$O!"%l%9%]%s%9$N%M%4%7%(!<%7%g%s<!85(B - $B$r<($9$?$a$K(B <code>Vary</code> HTTP $B%l%9%]%s%9%X%C%@$rAw$j$^$9!#(B - $B%-%c%C%7%e$O!"$3$l$r;H$C$F8eB3$N%j%/%(%9%H$KBP$7$F%m!<%+%k%3%T!<$G1~Ez$G$-$k$+(B - $B$I$&$+$r7hDj$G$-$^$9!#(B - $B%M%4%7%(!<%7%g%s<!85$H$O4X78$J$7$K%m!<%+%k%3%T!<$N;HMQ$rM%@h$9$k$h$&$K$9$k$K$O!"(B - <code>force-no-vary</code> <a href="env.html#special">$B4D6-JQ?t(B</a>$B$r(B - $B@_Dj$7$^$9!#(B</p> + ディレクティブを使用できます。 + このディレクティブは、サーバ設定ファイルやバーチャルホストに書くことができ、 + 引数をとりません。 + HTTP/1.1 クライアントからのリクエストには効力を持ちません。</p> + + <p>HTTP/1.1 クライアントに対しては、レスポンスのネゴシエーション次元 + を示すために <code>Vary</code> HTTP レスポンスヘッダを送ります。 + キャッシュは、これを使って後続のリクエストに対してローカルコピーで応答できるか + どうかを決定できます。 + ネゴシエーション次元とは関係なしにローカルコピーの使用を優先するようにするには、 + <code>force-no-vary</code> <a href="env.html#special">環境変数</a>を + 設定します。</p> </section> -<section id="more"><title>$BDI2C>pJs(B</title> +<section id="more"><title>追加情報</title> - <p>$B%3%s%F%s%H%M%4%7%(!<%7%g%s$K4X$9$kDI2C>pJs$O!"(B - Alan J. Flavell $B$5$s$N(B<a + <p>コンテントネゴシエーションに関する追加情報は、 + Alan J. Flavell さんの<a href="http://ppewww.ph.gla.ac.uk/~flavell/www/lang-neg.html">Language - Negotiation Notes</a> $B$r$4Mw2<$5$$!#$G$9$,!"(B - Apache 2.0 $B$G$NJQ99E@$r4^$`$?$a$K$O99?7$5$l$F$$$J$$$+$b$7$l$J$$(B - $B$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + Negotiation Notes</a> をご覧下さい。ですが、 + Apache 2.0 での変更点を含むためには更新されていないかもしれない + ということに注意してください。</p> </section> </manualpage> diff --git a/docs/manual/custom-error.xml.ja b/docs/manual/custom-error.xml.ja index 2aba3aee4c..b3b2f4df8f 100644 --- a/docs/manual/custom-error.xml.ja +++ b/docs/manual/custom-error.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 420990:558686 (outdated) --> @@ -22,52 +22,52 @@ <manualpage metafile="custom-error.xml.meta"> - <title>$B%+%9%?%`%(%i!<%l%9%]%s%9(B</title> + <title>カスタムエラーレスポンス</title> <summary> - <p>$B%&%'%V%^%9%?!<$,2?$i$+$N%(%i!<$dLdBj$KBP$9$k(B - Apache $B$NH?1~$r@_Dj$G$-$k$h$&$K$9$kDI2C5!G=$rDs6!$7$^$9!#(B</p> + <p>ウェブマスターが何らかのエラーや問題に対する + Apache の反応を設定できるようにする追加機能を提供します。</p> - <p>$B%5!<%P$,%(%i!<$dLdBj$rH/8+$7$?>l9g$NH?1~$r!"(B - $B%+%9%?%^%$%:$7$FDj5A$9$k$3$H$,$G$-$^$9!#(B</p> + <p>サーバがエラーや問題を発見した場合の反応を、 + カスタマイズして定義することができます。</p> - <p>$B%9%/%j%W%H$N<B9T$,<:GT$7$F(B "500 Server Error" - $B$rH/@8$5$;$?$H$7$^$9!#$3$N>l9g$NH?1~$r!"$h$j9%$^$7$$%F%-%9%H$d!"JL$N(B - URL ($BFbIt5Z$S30It(B) $B$X$N%j%@%$%l%/%7%g%s$KCV$-49$($k$3$H$,$G$-$^$9!#(B + <p>スクリプトの実行が失敗して "500 Server Error" + を発生させたとします。この場合の反応を、より好ましいテキストや、別の + URL (内部及び外部) へのリダイレクションに置き換えることができます。 </p> </summary> <section id="behavior"> - <title>$BF0:n(B</title> + <title>動作</title> <section> - <title>$B8E$$F0:n(B</title> + <title>古い動作</title> - <p>NCSA httpd 1.3 $B$O!"8E$/$FB`6~$J%(%i!<(B/$BLdBj%a%C%;!<%8$r(B - $BJV$7$F$$$^$7$?!#$=$l$O$7$P$7$P%f!<%6$K$OL50UL#$G$"$j!"(B - $B$^$?$=$l$rH/@8$5$;$?860x$r5-O?$9$kJ}K!$bDs6!$7$F$$$^$;$s$G$7$?!#(B</p> + <p>NCSA httpd 1.3 は、古くて退屈なエラー/問題メッセージを + 返していました。それはしばしばユーザには無意味であり、 + またそれを発生させた原因を記録する方法も提供していませんでした。</p> </section> <section> - <title>$B?7$7$$F0:n(B</title> + <title>新しい動作</title> <ol> - <li>NCSA $B$N%O!<%I%3!<%I$5$l$?%a%C%;!<%8$NBe$o$j$K(B - $BB>$N%F%-%9%H$rI=<((B</li> + <li>NCSA のハードコードされたメッセージの代わりに + 他のテキストを表示</li> - <li>$B%m!<%+%k$N(B URL $B$K%j%@%$%l%/%H(B</li> + <li>ローカルの URL にリダイレクト</li> - <li>$B30It$N(B URL $B$K%j%@%$%l%/%H(B</li> + <li>外部の URL にリダイレクト</li> </ol> - <p>$B$9$k$h$&$K%5!<%P$r@_Dj$G$-$^$9!#(B</p> + <p>するようにサーバを設定できます。</p> - <p>$BJL$N(B URL $B$K%j%@%$%l%/%H$9$k$3$H$OLr$KN)$A$^$9$,!"(B - $B$=$l$O@bL@$r$7$?$j!"$h$jL@3N$K8m$j(B/$BLdBj$r5-O?$7$?$j$9$k$?$a$K(B - $B2?$+>pJs$rEA$($i$l$k$H$-$K8B$j$^$9!#(B</p> + <p>別の URL にリダイレクトすることは役に立ちますが、 + それは説明をしたり、より明確に誤り/問題を記録したりするために + 何か情報を伝えられるときに限ります。</p> - <p>$B$3$l$r<B8=$9$k$?$a$K!"(B Apache $B$O?7$7$/(B CGI $B$N$h$&$J4D6-JQ?t$r(B - $BDj5A$7$^$9(B:</p> + <p>これを実現するために、 Apache は新しく CGI のような環境変数を + 定義します:</p> <example> REDIRECT_HTTP_ACCEPT=*/*, image/gif, @@ -84,28 +84,28 @@ REDIRECT_URL=/cgi-bin/buggy.pl </example> - <p>$BF,$KIU$/(B <code>REDIRECT_</code> $B$KCmL\$7$F$/$@$5$$!#(B</p> - - <p>$B>/$J$/$H$b(B <code>REDIRECT_URL</code> $B$H(B - <code>REDIRECT_QUERY_STRING</code> $B$O?7$7$$(B URL (CGI $B%9%/%j%W%H$+(B - CGI $B%$%s%/%k!<%I$G$"$k$H2>Dj$5$l$^$9(B) $B$KEO$5$l$^$9!#(B - $BB>$NJQ?t$O!"%(%i!<$dLdBj$,5/$-$kA0$KB8:_$7$?>l9g$K$@$1B8:_$7$^$9!#(B - $B$b$7$"$J$?$N@_Dj$7$?(B <directive - module="core">ErrorDocument</directive> $B$,(B <em>$B30It(B</em>$B%j%@%$%l%/%H(B - (<em>$B$9$J$o$A(B</em>$B!"(B<code>http:</code> - $B$N$h$&$JBN7OL>$+$i;O$^$k$9$Y$F$N$b$N!#$?$H$(F1$8%[%9%H$r;X$7$F$$$F$b(B) - $B$J$i$P!"$3$l$i$O(B<strong>$B$^$C$?$/(B</strong>$B@_Dj$5$l$^$;$s!#(B</p> + <p>頭に付く <code>REDIRECT_</code> に注目してください。</p> + + <p>少なくとも <code>REDIRECT_URL</code> と + <code>REDIRECT_QUERY_STRING</code> は新しい URL (CGI スクリプトか + CGI インクルードであると仮定されます) に渡されます。 + 他の変数は、エラーや問題が起きる前に存在した場合にだけ存在します。 + もしあなたの設定した <directive + module="core">ErrorDocument</directive> が <em>外部</em>リダイレクト + (<em>すなわち</em>、<code>http:</code> + のような体系名から始まるすべてのもの。たとえ同じホストを指していても) + ならば、これらは<strong>まったく</strong>設定されません。</p> </section> </section> <section id="configuration"> - <title>$B@_Dj(B</title> + <title>設定</title> - <p><directive module="core">AllowOverride</directive> $B$,E,@Z$K@_Dj$5$l$F$$$l$P!"(B - .htaccess $B%U%!%$%k$G(B <directive module="core">ErrorDocument</directive> - $B$r;HMQ$9$k$3$H$,$G$-$^$9!#(B</p> + <p><directive module="core">AllowOverride</directive> が適切に設定されていれば、 + .htaccess ファイルで <directive module="core">ErrorDocument</directive> + を使用することができます。</p> - <p>$B$3$3$K!"$$$/$D$+$NNc$r5s$2$^$9!#(B</p> + <p>ここに、いくつかの例を挙げます。</p> <example> ErrorDocument 500 /cgi-bin/crash-recover <br /> @@ -115,60 +115,60 @@ ErrorDocument 401 /Subscription/how_to_subscribe.html </example> - <p>$B9=J8(B</p> + <p>構文</p> <example> ErrorDocument <3-digit-code> <action> </example> - <p>action ($BF0:n(B) $B$O!"(B</p> + <p>action (動作) は、</p> <ol> - <li>$BI=<($5$l$k$Y$-%F%-%9%H!#%F%-%9%H$K$O0zMQId(B (") $B$r$D$1$^$9!#(B - $B0zMQId$N8e$KB3$/$b$N$,2?$G$bI=<($5$l$^$9!#(B - <em>$BCm0U(B : (") $B$OI=<($5$l$^$;$s(B</em></li> + <li>表示されるべきテキスト。テキストには引用符 (") をつけます。 + 引用符の後に続くものが何でも表示されます。 + <em>注意 : (") は表示されません</em></li> - <li>$B%j%@%$%l%/%H@h$N30It(B URL </li> + <li>リダイレクト先の外部 URL </li> - <li>$B%j%@%$%l%/%H@h$N%m!<%+%k(B URL </li> + <li>リダイレクト先のローカル URL </li> </ol> </section> <section id="custom"> - <title>$B%+%9%?%`%(%i!<%l%9%]%s%9$H%j%@%$%l%/%H(B</title> + <title>カスタムエラーレスポンスとリダイレクト</title> - <p>$B%9%/%j%W%H(B/SSI $B$KDI2C$N4D6-JQ?t$,MxMQ2DG=$K$J$k$h$&$K!"(B - $B%j%@%$%l%/%H$5$l$?(B URL $B$KBP$9$k(B Apache $B$NF0:n$,JQ99$5$l$^$7$?!#(B</p> + <p>スクリプト/SSI に追加の環境変数が利用可能になるように、 + リダイレクトされた URL に対する Apache の動作が変更されました。</p> <section> - <title>$B8E$$F0:n(B</title> + <title>古い動作</title> - <p>$B%j%@%$%l%/%H$5$l$?%9%/%j%W%H$OI8=`$N(B CGI - $B4D6-JQ?t$rMxMQ2DG=$G$7$?!#$7$+$7!"$I$3$+$i%j%@%$%l%/%H(B - $B$5$l$?$+$N>pJs$ODs6!$5$l$F$$$^$;$s$G$7$?!#(B</p> + <p>リダイレクトされたスクリプトは標準の CGI + 環境変数を利用可能でした。しかし、どこからリダイレクト + されたかの情報は提供されていませんでした。</p> </section> <section> - <title>$B?7$7$$F0:n(B</title> - - <p>$B%j%@%$%l%/%H$5$l$?@h$N%9%/%j%W%H$,;HMQ2DG=$J$h$&$K!"(B - $B?7$7$$$?$/$5$s$N4D6-JQ?t$,=i4|2=$5$l$^$9!#?7$7$$JQ?t$O!"$=$l$>$l(B - <code>REDIRECT_</code> $B$G;O$^$j$^$9!#(B - <code>REDIRECT_</code> $B$G;O$^$k4D6-JQ?t$O%j%@%$%l%/%H$5$l$kA0$KB8:_$7$F$$$?(B - CGI $B4D6-JQ?t$NF,$K(B <code>REDIRECT_</code> $B$rIU$1$F:n@.$5$l$^$9!#(B - <em>$B$9$J$o$A(B</em>$B!"(B<code>HTTP_USER_AGENT</code> $B$O(B - <code>REDIRECT_HTTP_USER_AGENT</code> $B$K$J$j$^$9!#(B - $B$3$l$i$N?7$7$$JQ?t$K2C$($F!"(BApache $B$O!"(B - $B%9%/%j%W%H$,%j%@%$%l%/%H85$N%H%l!<%9$r=u$1$k$?$a$K(B - <code>REDIRECT_URL</code> $B$H(B <code>REDIRECT_STATUS</code> - $B$rDj5A$7$^$9!#%"%/%;%9%m%0$K$O85$N(B URL $B$H%j%@%$%l%/%H$5$l$?(B URL - $B$NN>J}$,5-O?$5$l$^$9!#(B</p> - - <p>ErrorDocument $B$,(B CGI $B%9%/%j%W%H$X$N%m!<%+%k%j%@%$%l%/%H$r(B - $B;XDj$7$F$$$k>l9g$O!"$=$l$r5/F0$9$k$3$H$K$J$C$?%(%i!<$N>uBV$r(B - $B%/%i%$%"%s%H$^$G3N<B$KEA$($k$?$a$K(B <code>"Status:" </code> - $B%X%C%@$r4^$`$Y$-$G$9!#Nc$($P!"(BErrorDocument $BMQ$N(B Perl - $B%9%/%j%W%H$O0J2<$N$h$&$J$b$N$r4^$`$+$b$7$l$^$;$s!#(B + <title>新しい動作</title> + + <p>リダイレクトされた先のスクリプトが使用可能なように、 + 新しいたくさんの環境変数が初期化されます。新しい変数は、それぞれ + <code>REDIRECT_</code> で始まります。 + <code>REDIRECT_</code> で始まる環境変数はリダイレクトされる前に存在していた + CGI 環境変数の頭に <code>REDIRECT_</code> を付けて作成されます。 + <em>すなわち</em>、<code>HTTP_USER_AGENT</code> は + <code>REDIRECT_HTTP_USER_AGENT</code> になります。 + これらの新しい変数に加えて、Apache は、 + スクリプトがリダイレクト元のトレースを助けるために + <code>REDIRECT_URL</code> と <code>REDIRECT_STATUS</code> + を定義します。アクセスログには元の URL とリダイレクトされた URL + の両方が記録されます。</p> + + <p>ErrorDocument が CGI スクリプトへのローカルリダイレクトを + 指定している場合は、それを起動することになったエラーの状態を + クライアントまで確実に伝えるために <code>"Status:" </code> + ヘッダを含むべきです。例えば、ErrorDocument 用の Perl + スクリプトは以下のようなものを含むかもしれません。 </p> <example> @@ -178,9 +178,9 @@ ... </example> - <p>$B%9%/%j%W%H$,(B <code>404 Not Found</code> $B$N$h$&$J(B - $BFCDj$N%(%i!<%3%s%G%#%7%g%s$r07$&$?$a$@$1$K;H$o$l$k>l9g$O!"(B - $BBe$o$j$KFCDj$N%3!<%I$H%(%i!<%F%-%9%H$r;HMQ$9$k$3$H$,$G$-$^$9!#(B</p> + <p>スクリプトが <code>404 Not Found</code> のような + 特定のエラーコンディションを扱うためだけに使われる場合は、 + 代わりに特定のコードとエラーテキストを使用することができます。</p> </section> </section> </manualpage> diff --git a/docs/manual/developer/modules.xml.ja b/docs/manual/developer/modules.xml.ja index ceeb084307..8e729cc607 100644 --- a/docs/manual/developer/modules.xml.ja +++ b/docs/manual/developer/modules.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?> <!-- English Revision: 420993:462914 (outdated) --> @@ -23,33 +23,33 @@ <manualpage metafile="modules.xml.meta"> <parentdocument href="./">Developer Documentation</parentdocument> -<title>$B%b%8%e!<%k$N(B Apache 1.3 $B$+$i(B Apache 2.0 $B$X$N0\?"(B</title> +<title>モジュールの Apache 1.3 から Apache 2.0 への移植</title> <summary> - <p>$B$3$NJ8=q$O(B <code>mod_mmap_static</code> $B%b%8%e!<%k$r(B Apache 2.0 $BMQ$K0\?"$7$?;~$K(B - $B3X$s$@7P83$r$b$H$K=q$$$?!":G=i$N<j0z$-=q$G$9!#$^$@$^$@40A4$8$c$J$$$7!"(B - $B$R$g$C$H$9$k$H4V0c$C$F$$$kItJ,$b$"$k$+$b$7$l$^$;$s$,!"(B - $B<h$C3]$j$K$O$J$k$G$7$g$&!#(B</p> + <p>この文書は <code>mod_mmap_static</code> モジュールを Apache 2.0 用に移植した時に + 学んだ経験をもとに書いた、最初の手引き書です。まだまだ完全じゃないし、 + ひょっとすると間違っている部分もあるかもしれませんが、 + 取っ掛りにはなるでしょう。</p> </summary> -<section id="easy"><title>$B4JC1$JJQ99E@(B</title> +<section id="easy"><title>簡単な変更点</title> - <section id="cleanup"><title>$B%/%j!<%s%J%C%W(B $B%k!<%A%s(B</title> - <p>$B%/%j!<%s%J%C%W%k!<%A%s$O(B <code>apr_status_t</code> $B7?$G$"$kI,MW$,$"$j$^$9!#(B - $B$=$7$F!"(Bapr_status_t $B7?$NCM$rJV$5$J$/$F$O$J$j$^$;$s!#(B - $B%/%j!<%s%J%C%WCf$N%(%i!<$rDLCN$9$kI,MW$,$J$1$l$P!"JV$jCM$OIaDL!"(B - <code>ARP_SUCCESS</code> $B$G$9!#$?$H$(%(%i!<$rDLCN$7$?$H$7$F$b!"(B - $B$9$Y$F$N%3!<%I$,$=$NDLCN$r%A%'%C%/$7$?$j!"(B - $B%(%i!<$K1~$8$?F0:n$r$9$k$o$1$G$O$J$$$3$H$K5$$r$D$1$F$/$@$5$$!#(B</p> + <section id="cleanup"><title>クリーンナップ ルーチン</title> + <p>クリーンナップルーチンは <code>apr_status_t</code> 型である必要があります。 + そして、apr_status_t 型の値を返さなくてはなりません。 + クリーンナップ中のエラーを通知する必要がなければ、返り値は普通、 + <code>ARP_SUCCESS</code> です。たとえエラーを通知したとしても、 + すべてのコードがその通知をチェックしたり、 + エラーに応じた動作をするわけではないことに気をつけてください。</p> </section> - <section id="init"><title>$B=i4|2=%k!<%A%s(B</title> + <section id="init"><title>初期化ルーチン</title> - <p>$B=i4|2=%k!<%A%s$O=hM}A4BN$+$i8+$F$7$C$/$j$/$k$h$&$J0UL#$rI=$9$h$&$K!"(B - $BL>A0$,JQ99$5$l$^$7$?!#$G$9$+$i!"(B<code>mmap_init</code> $B$+$i(B <code>mmap_post_config</code> - $B$N$h$&$K$A$g$C$HJQ99$5$l$^$7$?!#(B - $BEO$5$l$k0z?t$OBgI}$KJQ99$5$l!"<!$N$h$&$K$J$j$^$7$?!#(B</p> + <p>初期化ルーチンは処理全体から見てしっくりくるような意味を表すように、 + 名前が変更されました。ですから、<code>mmap_init</code> から <code>mmap_post_config</code> + のようにちょっと変更されました。 + 渡される引数は大幅に変更され、次のようになりました。</p> <ul> <li><code>apr_pool_t *p</code></li> @@ -59,11 +59,11 @@ </ul> </section> - <section id="datatypes"><title>$B%G!<%?7?(B</title> - <p>$B%G!<%?7?$N$[$H$s$I$O(B <a - href="http://apr.apache.org/">APR</a> $B$K0\$5$l$^$7$?!#$D$^$j!"(B - $B$$$/$D$+$NL>A0$,A0=R$N$h$&$KJQ99$5$l$F$$$^$9!#(B - $B;\$9$Y$-JQ99E@$N4JC1$J0lMw$r0J2<$K<($7$^$9!#(B</p> + <section id="datatypes"><title>データ型</title> + <p>データ型のほとんどは <a + href="http://apr.apache.org/">APR</a> に移されました。つまり、 + いくつかの名前が前述のように変更されています。 + 施すべき変更点の簡単な一覧を以下に示します。</p> <ul> <li><code>pool</code> becomes <code>apr_pool_t</code></li> @@ -72,22 +72,22 @@ </section> </section> -<section id="messy"><title>$B$b$C$HLq2p$JJQ99E@!D(B</title> +<section id="messy"><title>もっと厄介な変更点…</title> - <section id="register-hooks"><title>$B%U%C%/$NEPO?(B</title> - <p>$B?7$7$$%"!<%-%F%/%A%c$G$O:n@.$7$?4X?t$r8F$S=P$9$N$K(B - $B0lO"$N%U%C%/$r;HMQ$7$^$9!#$3$N%U%C%/$O!"?7$7$$4X?t(B - <code>static void register_hooks(void)</code> $B$r;H$C$FEPO?$9$k$h$&!"(B - $B%b%8%e!<%k$K=q$-B-$5$J$/$F$O$J$j$^$;$s!#(B - $B$3$N4X?t$O!"$J$K$r$9$Y$-$+0lC6M}2r$7$F$7$^$($P!"(B - $B==J,$K$o$+$j$d$9$$$b$N$G$9!#(B - $B%j%/%(%9%H$N=hM}$N$"$k%9%F!<%8$G8F$S=P$5$J$/$F$O$J$i$J$$(B - $B4X?t$OEPO?$9$kI,MW$,$"$j$^$9!#%O%s%I%i$OEPO?$9$kI,MW$O$"$j$^$;$s!#(B - $B4X?t$rEPO?$G$-$k%U%'!<%:$O$?$/$5$s$"$j$^$9!#(B - $B$=$l$>$l$N%U%'!<%:$G!"4X?t$r8F$S=P$9AjBPE*$J=gHV$O!"(B - $B$+$J$j$NDxEY@)8f$G$-$^$9!#(B</p> + <section id="register-hooks"><title>フックの登録</title> + <p>新しいアーキテクチャでは作成した関数を呼び出すのに + 一連のフックを使用します。このフックは、新しい関数 + <code>static void register_hooks(void)</code> を使って登録するよう、 + モジュールに書き足さなくてはなりません。 + この関数は、なにをすべきか一旦理解してしまえば、 + 十分にわかりやすいものです。 + リクエストの処理のあるステージで呼び出さなくてはならない + 関数は登録する必要があります。ハンドラは登録する必要はありません。 + 関数を登録できるフェーズはたくさんあります。 + それぞれのフェーズで、関数を呼び出す相対的な順番は、 + かなりの程度制御できます。</p> - <p>$B0J2<$O!"(B<code>mod_mmap_static</code> $B$KDI2C$7$?%3!<%I$G$9(B:</p> + <p>以下は、<code>mod_mmap_static</code> に追加したコードです:</p> <example><pre> static void register_hooks(void) @@ -98,18 +98,18 @@ static void register_hooks(void) };</pre> </example> - <p>$B$3$3$G$O8F$S$@$9$Y$-Fs$D$N4X?t$rEPO?$7$F$$$^$9!#0l$D$O(B - <code>post_config</code> $B%9%F!<%8MQ(B ($B$[$H$s$I$9$Y$F$N%b%8%e!<%k(B - $B$O$3$l$,I,MW$G$9(B) $B$G!"$b$&0l$D$O(B <code>translate_name</code> $B%U%'!<%:MQ$G$9!#(B - $B$=$l$>$l$N4X?t$OL>A0$O0c$&$1$l$I$b7A<0$OF1$8$G$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B - $B$=$l$G$O!"7A<0$O$I$N$h$&$K$J$C$F$$$k$G$7$g$&$+(B?</p> + <p>ここでは呼びだすべき二つの関数を登録しています。一つは + <code>post_config</code> ステージ用 (ほとんどすべてのモジュール + はこれが必要です) で、もう一つは <code>translate_name</code> フェーズ用です。 + それぞれの関数は名前は違うけれども形式は同じであることに注意してください。 + それでは、形式はどのようになっているでしょうか?</p> <example> ap_hook_<var>phase_name</var>(<var>function_name</var>, <var>predecessors</var>, <var>successors</var>, <var>position</var>); </example> - <p>$B;0$D$N0LCV$,Dj5A$5$l$F$$$^$9!D(B</p> + <p>三つの位置が定義されています…</p> <ul> <li><code>HOOK_FIRST</code></li> @@ -117,22 +117,22 @@ static void register_hooks(void) <li><code>HOOK_LAST</code></li> </ul> - <p>$B0LCV$rDj5A$9$k$K$O!">e5-$N!V0LCV!W$r;XDj$7!"(B - $B=$>~;R$G$"$k!V@h9T!W$H!V8e9T!W$G<j$r2C$($^$9!#(B - $B!V@h9T!W!V8e9T!W$O!"8F$P$l$k$Y$-4X?t$N%j%9%H$G$9!#(B - $B!V@h9T!W$O4X?t$N<B9TA0$K8F$P$l$k$b$N$G!"(B - $B!V8e9T!W$O<B9T8e$K8F$P$l$k$b$N$G$9!#(B</p> - - <p><code>mod_mmap_static</code> $B$N>l9g!"(B<code>post_config</code> - $B%9%F!<%8$G$OI,MW$"$j$^$;$s$,!"(B - <code>mmap_static_xlat</code> $B$,(B core $B%b%8%e!<%k$,L>A0$NJQ49$r<B9T$7$?8e$K(B - <strong>$B8F$P$l$J$1$l$P$J$j$^$;$s(B</strong>$B!#(B - $B$=$3$G(B aszPre $B$r;H$C$F(B <code>HOOK_LAST</code> $B$N=$>~;R$rDj5A$7$F$$$^$9!#(B</p> + <p>位置を定義するには、上記の「位置」を指定し、 + 修飾子である「先行」と「後行」で手を加えます。 + 「先行」「後行」は、呼ばれるべき関数のリストです。 + 「先行」は関数の実行前に呼ばれるもので、 + 「後行」は実行後に呼ばれるものです。</p> + + <p><code>mod_mmap_static</code> の場合、<code>post_config</code> + ステージでは必要ありませんが、 + <code>mmap_static_xlat</code> が core モジュールが名前の変換を実行した後に + <strong>呼ばれなければなりません</strong>。 + そこで aszPre を使って <code>HOOK_LAST</code> の修飾子を定義しています。</p> </section> - <section id="moddef"><title>$B%b%8%e!<%k$NDj5A(B</title> - <p>$B%b%8%e!<%k$NDj5A$r:n@.$9$k:]$KCm0U$7$J$1$l$P$J$i$J$$(B - $B%9%F!<%8$N?t$O7c8:$7$F$$$^$9!#8E$$Dj5A$O<!$N$h$&$K$J$C$F$$$^$7$?!#(B</p> + <section id="moddef"><title>モジュールの定義</title> + <p>モジュールの定義を作成する際に注意しなければならない + ステージの数は激減しています。古い定義は次のようになっていました。</p> <example><pre> module MODULE_VAR_EXPORT <var>module_name</var>_module = @@ -159,7 +159,7 @@ module MODULE_VAR_EXPORT <var>module_name</var>_module = };</pre> </example> - <p>$B?7$7$$9=B$BN$O$H$C$F$b%7%s%W%k$G$9!D(B</p> + <p>新しい構造体はとってもシンプルです…</p> <example><pre> module MODULE_VAR_EXPORT <var>module_name</var>_module = { @@ -174,98 +174,98 @@ module MODULE_VAR_EXPORT <var>module_name</var>_module = };</pre> </example> - <p>$B$3$N$&$A$N$$$/$D$+$O8E$$$b$N$+$i?7$7$$$b$N$KD>@\FI$_BX$($i$l$k$b$N$G!"(B - $B$$$/$D$+$O$=$&$G$O$"$j$^$;$s!#$I$&$9$l$P$$$$$N$+$rMWLs$7$F$_$^$9!#(B</p> + <p>このうちのいくつかは古いものから新しいものに直接読み替えられるもので、 + いくつかはそうではありません。どうすればいいのかを要約してみます。</p> - <p>$BD>@\FI$_BX$($i$l$k%9%F!<%8(B:</p> + <p>直接読み替えられるステージ:</p> <dl> - <dt><code>/* $B%G%#%l%/%H%j@_Dj:n@.4X?t(B */</code></dt> - <dd><code>/* $B%G%#%l%/%H%jKh@_Dj9=B$BN:n@.(B */</code></dd> + <dt><code>/* ディレクトリ設定作成関数 */</code></dt> + <dd><code>/* ディレクトリ毎設定構造体作成 */</code></dd> - <dt><code>/* $B%5!<%P@_Dj:n@.4X?t(B */</code></dt> - <dd><code>/* $B%5!<%PKh@_Dj9=B$BN:n@.(B */</code></dd> + <dt><code>/* サーバ設定作成関数 */</code></dt> + <dd><code>/* サーバ毎設定構造体作成 */</code></dd> - <dt><code>/* $B%G%#%l%/%H%j@_Dj%^!<%84X?t(B */</code></dt> - <dd><code>/* $B%G%#%l%/%H%jKh@_Dj9=B$BN%^!<%8(B */</code></dd> + <dt><code>/* ディレクトリ設定マージ関数 */</code></dt> + <dd><code>/* ディレクトリ毎設定構造体マージ */</code></dd> - <dt><code>/* $B%5!<%P@_Dj%^!<%84X?t(B */</code></dt> - <dd><code>/* $B%5!<%PKh@_Dj9=B$BN:n@.%^!<%8(B */</code></dd> + <dt><code>/* サーバ設定マージ関数 */</code></dt> + <dd><code>/* サーバ毎設定構造体作成マージ */</code></dd> - <dt><code>/* $B%3%^%s%I!&%F!<%V%k(B */</code></dt> - <dd><code>/* $B%3%^%s%I(B apr_table_t */</code></dd> + <dt><code>/* コマンド・テーブル */</code></dt> + <dd><code>/* コマンド apr_table_t */</code></dd> - <dt><code>/* $B%O%s%I%i(B */</code></dt> - <dd><code>/* $B%O%s%I%i(B */</code></dd> + <dt><code>/* ハンドラ */</code></dt> + <dd><code>/* ハンドラ */</code></dd> </dl> - <p>$B8E$$4X?t$N;D$j$N$b$N$O%U%C%/$H$7$FEPO?$5$l$k$Y$-$G$9!#(B - $B8=;~E@$G<!$N$h$&$J%U%C%/!&%9%F!<%8$,Dj5A$5$l$F$$$^$9!D(B</p> + <p>古い関数の残りのものはフックとして登録されるべきです。 + 現時点で次のようなフック・ステージが定義されています…</p> <dl> <dt><code>ap_hook_post_config</code></dt> - <dd>($B0JA0$N(B <code>_init</code> $B%k!<%A%s$,EPO?$5$l$k$Y$->l=j$G$9(B)</dd> + <dd>(以前の <code>_init</code> ルーチンが登録されるべき場所です)</dd> <dt><code>ap_hook_http_method</code></dt> - <dd>($B%j%/%(%9%H$+$i(B HTTP $B%a%=%C%I$r<hF@$7$^$9(B ($B8_49MQ(B))</dd> + <dd>(リクエストから HTTP メソッドを取得します (互換用))</dd> <dt><code>ap_hook_open_logs</code></dt> - <dd>($BFCDj$N%m%0$N%*!<%W%s(B)</dd> + <dd>(特定のログのオープン)</dd> <dt><code>ap_hook_auth_checker</code></dt> - <dd>($B%j%=!<%9$,8"8B$rI,MW$H$9$k$+$I$&$+$N3NG'(B)</dd> + <dd>(リソースが権限を必要とするかどうかの確認)</dd> <dt><code>ap_hook_access_checker</code></dt> - <dd>($B%b%8%e!<%k8GM-$N@)Ls$N3NG'(B)</dd> + <dd>(モジュール固有の制約の確認)</dd> <dt><code>ap_hook_check_user_id</code></dt> - <dd>($B%f!<%6(B ID $B$H%Q%9%o!<%I$N3NG'(B)</dd> + <dd>(ユーザ ID とパスワードの確認)</dd> <dt><code>ap_hook_default_port</code></dt> - <dd>($B%5!<%P$N%G%U%)%k%H!&%]!<%H$N<hF@(B)</dd> + <dd>(サーバのデフォルト・ポートの取得)</dd> <dt><code>ap_hook_pre_connection</code></dt> - <dd>($B=hM}$ND>A0$KI,MW$J$3$H$r<B9T!#$?$@$7(B accept $BD>8e$K8F$P$l$k(B)</dd> + <dd>(処理の直前に必要なことを実行。ただし accept 直後に呼ばれる)</dd> <dt><code>ap_hook_process_connection</code></dt> - <dd>($B%W%m%H%3%k$N=hM}(B)</dd> + <dd>(プロトコルの処理)</dd> <dt><code>ap_hook_child_init</code></dt> - <dd>($B;R%W%m%;%k5/F0D>8e(B)</dd> + <dd>(子プロセル起動直後)</dd> <dt><code>ap_hook_create_request</code></dt> <dd>(??)</dd> <dt><code>ap_hook_fixups</code></dt> - <dd>($B1~EzFbMF$N@8@.$rJQ99$9$k%i%9%H!&%A%c%s%9(B)</dd> + <dd>(応答内容の生成を変更するラスト・チャンス)</dd> <dt><code>ap_hook_handler</code></dt> - <dd>($B1~EzFbMF$N@8@.(B)</dd> + <dd>(応答内容の生成)</dd> <dt><code>ap_hook_header_parser</code></dt> - <dd>($B%b%8%e!<%k$K%X%C%@$N>H2q$r$5$;$k!#$[$H$s$I$N%b%8%e!<%k$G$O;H$o$l$^$;$s!#(Bpost_read_request $B$r;H$$$^$9(B)</dd> + <dd>(モジュールにヘッダの照会をさせる。ほとんどのモジュールでは使われません。post_read_request を使います)</dd> <dt><code>ap_hook_insert_filter</code></dt> - <dd>($B%U%#%k%?!&%A%'%$%s$K%U%#%k%?$rA^F~(B)</dd> + <dd>(フィルタ・チェインにフィルタを挿入)</dd> <dt><code>ap_hook_log_transaction</code></dt> - <dd>($B%j%/%(%9%H$K$D$$$F$N>pJs$r5-O?$9$k(B)</dd> + <dd>(リクエストについての情報を記録する)</dd> <dt><code>ap_hook_optional_fn_retrieve</code></dt> - <dd>($B%*%W%7%g%s$H$7$FEPO?$5$l$?4X?t$N<hF@(B)</dd> + <dd>(オプションとして登録された関数の取得)</dd> <dt><code>ap_hook_post_read_request</code></dt> - <dd>($B%j%/%(%9%H$rFI$_$3$s$@8e!"B>$N%U%'!<%:$NA0$K8F$P$l$k(B)</dd> + <dd>(リクエストを読みこんだ後、他のフェーズの前に呼ばれる)</dd> <dt><code>ap_hook_quick_handler</code></dt> - <dd>$B%j%/%(%9%H$N=hM}$,;O$^$kA0$K8F$P$l$k!#%-%c%C%7%e%b%8%e!<%k$,(B - $B;HMQ$7$F$$$k(B</dd> + <dd>リクエストの処理が始まる前に呼ばれる。キャッシュモジュールが + 使用している</dd> <dt><code>ap_hook_translate_name</code></dt> - <dd>(URI $B$r%U%!%$%kL>$KJQ49$9$k(B)</dd> + <dd>(URI をファイル名に変換する)</dd> <dt><code>ap_hook_type_checker</code></dt> - <dd>($BJ8=q7?$N7hDj$H@_Dj!#$"$k$$$O$=$NJRJ}(B)</dd> + <dd>(文書型の決定と設定。あるいはその片方)</dd> </dl> </section> </section> diff --git a/docs/manual/dns-caveats.xml.ja b/docs/manual/dns-caveats.xml.ja index dad810f53a..9d5d526ab6 100644 --- a/docs/manual/dns-caveats.xml.ja +++ b/docs/manual/dns-caveats.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp" ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 151408:507346 (outdated) --> @@ -22,19 +22,19 @@ <manualpage metafile="dns-caveats.xml.meta"> - <title>DNS $B$H(B Apache $B$K$^$D$o$kCm0U;v9`(B</title> + <title>DNS と Apache にまつわる注意事項</title> <summary> - <p>$BK\J8=q$NFbMF$O<!$N0l8@$K?T$-$^$9!#!V(BApache $B$,@_Dj%U%!%$%k$rFI$_9~$`$H$-$K(B - DNS $B$r;HMQ$9$kI,MW$,$J$$$h$&$K$7$F2<$5$$!W!#(BApache $B$,@_Dj%U%!%$%k$r(B - $BFI$_9~$`$H$-$K(B DNS $B$r;HMQ$9$kI,MW$,$"$k>l9g!"?.Mj@-$NLdBj(B - ($B5/F0$7$J$$$+$b$7$l$^$;$s(B) $B$d%5!<%S%95qH]$dEpMQ%"%?%C%/(B - ($BB>$N%f!<%6$+$i%R%C%H$rEp$`$3$H$r4^$_$^$9(B) - $B$NLdBj$KD>LL$9$k$+$b$7$l$^$;$s!#(B</p> + <p>本文書の内容は次の一言に尽きます。「Apache が設定ファイルを読み込むときに + DNS を使用する必要がないようにして下さい」。Apache が設定ファイルを + 読み込むときに DNS を使用する必要がある場合、信頼性の問題 + (起動しないかもしれません) やサービス拒否や盗用アタック + (他のユーザからヒットを盗むことを含みます) + の問題に直面するかもしれません。</p> </summary> <section id="example"> - <title>$B4JC1$JNc(B</title> + <title>簡単な例</title> <example> <VirtualHost www.abc.dom> <br /> @@ -43,20 +43,20 @@ </VirtualHost> </example> - <p>Apache $B$,@5>o$K5!G=$9$k$K$O!"%P!<%A%c%k%[%9%HKh$KI,$:Fs$D$N(B - $B>pJs$,I,MW$K$J$j$^$9!#$=$l$O!"(B + <p>Apache が正常に機能するには、バーチャルホスト毎に必ず二つの + 情報が必要になります。それは、 <directive module="core">ServerName</directive> - $B$H!"$=$N%5!<%P$,1~Ez$9$k$?$a$N(B IP ($B:GDc0l$D(B) $B$G$9!#(B - $B>e5-Nc$G$O(B IP $B%"%I%l%9$r4^$s$G$$$^$;$s$N$G!"(BApache $B$O(B DNS - $B$r;HMQ$7$F(B <code>www.abc.dom</code> $B$r8+$D$1$J$1$l$P$J$j$^$;$s!#(B - $B2?$i$+$NM}M3$G@_Dj%U%!%$%k$rFI$_9~$s$G$$$k$H$-$K(B DNS - $B$,MxMQ$G$-$J$+$C$?>l9g!"(B - $B%P!<%A%c%k%[%9%H$O(B<strong>$B@_Dj$5$l$^$;$s(B</strong>$B!#(B - $B$=$7$F!"$=$N%P!<%A%c%k%[%9%H$KBP$9$k%R%C%H$K$O1~Ez$,$J$5$l$^$;$s(B - (Apache 1.2 $B0JA0$G$O5/F0$9$i$7$^$;$s(B)$B!#(B</p> - - <p><code>www.abc.dom</code> $B$N%"%I%l%9$,(B 192.0.2.1 - $B$@$H$7$^$9!#$G$O!"<!$N@_Dj$K$D$$$F9M$($F$_$^$7$g$&!#(B</p> + と、そのサーバが応答するための IP (最低一つ) です。 + 上記例では IP アドレスを含んでいませんので、Apache は DNS + を使用して <code>www.abc.dom</code> を見つけなければなりません。 + 何らかの理由で設定ファイルを読み込んでいるときに DNS + が利用できなかった場合、 + バーチャルホストは<strong>設定されません</strong>。 + そして、そのバーチャルホストに対するヒットには応答がなされません + (Apache 1.2 以前では起動すらしません)。</p> + + <p><code>www.abc.dom</code> のアドレスが 192.0.2.1 + だとします。では、次の設定について考えてみましょう。</p> <example> <VirtualHost 192.0.2.1> <br /> @@ -65,17 +65,17 @@ </VirtualHost> </example> - <p>$B8=:_$N%j%j!<%9$G$O(B Apache $B$O(B DNS $B5U0z$-$r;HMQ$7$F(B - $B$3$N%P!<%A%c%k%[%9%H$N(B <directive module="core">ServerName</directive> - $B$r8+$D$1$^$9!#(B - $B$=$N5U0z$-$,<:GT$7$?>l9g$OItJ,E*$K%P!<%A%c%k%[%9%H$rL58z$K$7$^$9(B - (Apache 1.2 $B$h$jA0$G$O5/F0$9$i$7$^$;$s(B)$B!#(B - $B%P!<%A%c%k%[%9%H$,L>A0%Y!<%9$G$"$l$P40A4$KL58z$K$J$j$^$9$,!"(B - IP $B%Y!<%9$G$"$l$P35$MF0:n$7$^$9!#$7$+$7$J$,$i!"%5!<%PL>$r(B - $B4^$`40A4$J(B URL $B$r@8@.$7$J$1$l$P$J$i$J$$>l9g$O!"@5$7$$(B URL - $B$N@8@.$,$G$-$^$;$s!#(B</p> + <p>現在のリリースでは Apache は DNS 逆引きを使用して + このバーチャルホストの <directive module="core">ServerName</directive> + を見つけます。 + その逆引きが失敗した場合は部分的にバーチャルホストを無効にします + (Apache 1.2 より前では起動すらしません)。 + バーチャルホストが名前ベースであれば完全に無効になりますが、 + IP ベースであれば概ね動作します。しかしながら、サーバ名を + 含む完全な URL を生成しなければならない場合は、正しい URL + の生成ができません。</p> - <p>$B<!$NNc$O>e5-$NLdBj$r2r7h$7$F$$$^$9!#(B</p> + <p>次の例は上記の問題を解決しています。</p> <example> <VirtualHost 192.0.2.1> <br /> @@ -87,19 +87,19 @@ </section> <section id="denial"> - <title>$B%5!<%S%95qH](B</title> + <title>サービス拒否</title> - <p>$B%5!<%S%95qH]$,5/$3$k>l9g!"(B($B>/$J$/$H$b(B) $BFs$D$N%1!<%9$,$"$j$^$9!#(B - Apache 1.2 $B$h$jA0$r<B9T$7$F$$$k>l9g!"%P!<%A%c%k%[%9%H$N$?$a$N(B - $B>e5-$NFs$D$N(B DNS $B8!:w$N$&$A0l$D<:GT$9$l$P5/F0$9$i$7$^$;$s!#(B - $B$=$7$F$3$N(B DNS $B8!:w$,<+J,$N@)8f2<$K$9$i$J$$>l9g$b$"$j$($^$9!#(B - $BNc$($P!"(B<code>abc.dom</code> $B$,8\5R$N%5!<%P$N0l$D$G!"(B - DNS $B$O8\5R<+?H$G4IM}$7$F$$$k>l9g!"C1$K(B - <code>www.abc.dom</code> $B%l%3!<%I$r:o=|$9$k$@$1$G!"(B - (1.2 $B$h$jA0$N(B) $B%5!<%P$r5/F0ITG=$K$9$k$3$H$,$G$-$^$9!#(B</p> + <p>サービス拒否が起こる場合、(少なくとも) 二つのケースがあります。 + Apache 1.2 より前を実行している場合、バーチャルホストのための + 上記の二つの DNS 検索のうち一つ失敗すれば起動すらしません。 + そしてこの DNS 検索が自分の制御下にすらない場合もありえます。 + 例えば、<code>abc.dom</code> が顧客のサーバの一つで、 + DNS は顧客自身で管理している場合、単に + <code>www.abc.dom</code> レコードを削除するだけで、 + (1.2 より前の) サーバを起動不能にすることができます。</p> - <p>$B$b$&0l$D$N%1!<%9$O!"$h$j5$IU$-$K$/$$$b$N$G$9!#(B - $B<!$N@_Dj$K$D$$$F9M$($F$_$^$7$g$&!#(B</p> + <p>もう一つのケースは、より気付きにくいものです。 + 次の設定について考えてみましょう。</p> <example> <VirtualHost www.abc.dom> <br /> @@ -113,119 +113,119 @@ </VirtualHost> </example> - <p>192.0.2.1 $B$r(B <code>www.abc.dom</code> $B$K!"(B - 192.0.2.2 $B$r(B <code>www.def.dom</code> $B$K3d$jEv$F$F$$$k$H$7$^$9!#(B - $B$^$?!"(B<code>def.dom</code> $B$O8\5R<+?H$N(B DNS - $B$N@)8f2<$K$"$k$H$7$^$9!#$3$N@_Dj$G!"(B<code>abc.dom</code> - $B$K8~$1$i$l$?%H%i%U%#%C%/A4$F$rC%$&$3$H$,$G$-$k0LCV$K(B - <code>def.dom</code> $B$r@_CV$G$-$F$$$^$9!#8e$OC1$K(B - <code>www.def.dom</code> $B$,(B 192.0.2.1 $B$r;2>H$9$k$h$&$K(B - $B@_Dj$9$k$@$1$G$9!#(BDNS $B$O8\5RB&$N(B DNS $B$G%3%s%H%m!<%k$5$l$F$$$k$N$G!"(B - <code>www.def.dom</code> $B%l%3!<%I$,9%$-$J>l=j$r;X$9$h$&$K(B - $B@_Dj$G$-$F$7$^$&$N$r;_$a$5$;$k$3$H$,$G$-$^$;$s!#(B</p> - - <p>192.0.2.1 $B$KBP$9$k%j%/%(%9%H(B - (<code>http://www.abc.dom/whatever</code> $B7A<0$N(B URL - $B$rF~NO$7$?%f!<%6$+$i$N$b$NA4$F$r4^$_$^$9(B) - $B$O!"(B<code>def.dom</code> $B%P!<%A%c%k%[%9%H$G1~Ez$5$l$^$9!#(B - $B$3$N$h$&$J$3$H$,2?8N5/$3$k$+$b$C$HNI$/CN$k$?$a$K$O!"(B - $B1~Ez$NI,MW$J%P!<%A%c%k%[%9%H$X$N%j%/%(%9%H$KBP$7$F!"(B - Apache $B$,$I$N$h$&$K@09g@-$r3NJ]$9$k$+$K$D$$$F!"(B - $B?<$$5DO@$,I,MW$K$J$j$^$9!#$*$*$6$C$Q$J@bL@$O(B<a - href="vhosts/details.html">$B$3$A$i(B</a>$B$K5-=R$5$l$F$$$^$9!#(B</p> + <p>192.0.2.1 を <code>www.abc.dom</code> に、 + 192.0.2.2 を <code>www.def.dom</code> に割り当てているとします。 + また、<code>def.dom</code> は顧客自身の DNS + の制御下にあるとします。この設定で、<code>abc.dom</code> + に向けられたトラフィック全てを奪うことができる位置に + <code>def.dom</code> を設置できています。後は単に + <code>www.def.dom</code> が 192.0.2.1 を参照するように + 設定するだけです。DNS は顧客側の DNS でコントロールされているので、 + <code>www.def.dom</code> レコードが好きな場所を指すように + 設定できてしまうのを止めさせることができません。</p> + + <p>192.0.2.1 に対するリクエスト + (<code>http://www.abc.dom/whatever</code> 形式の URL + を入力したユーザからのもの全てを含みます) + は、<code>def.dom</code> バーチャルホストで応答されます。 + このようなことが何故起こるかもっと良く知るためには、 + 応答の必要なバーチャルホストへのリクエストに対して、 + Apache がどのように整合性を確保するかについて、 + 深い議論が必要になります。おおざっぱな説明は<a + href="vhosts/details.html">こちら</a>に記述されています。</p> </section> <section id="main"> - <title>$B!V<g%5!<%P!W%"%I%l%9(B</title> - - <p>Apache 1.1 $B$G$N(B <a href="vhost/name-based.html" - >$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$N%5%]!<%H(B</a> $BDI2C$N:]$K!"(B - Apache $B$O(B <program>httpd</program> $B$N<B9T$5$l$F$$$k%[%9%H$N(B IP - $B%"%I%l%9$rCN$kI,MW$,=P$F$-$^$7$?!#$3$N%"%I%l%9$rF@$k$?$a$K!"(B - ($B$b$7$"$l$P(B) $B%0%m!<%P%k$J(B - <directive module="core">ServerName</directive> $B$r;HMQ$9$k$+!"(B - C $B8@8l$N4X?t(B <code>gethostname</code> ($B%3%^%s%I%W%m%s%W%H$G(B - <code>hostname</code> $B$H%?%$%W$7$?$H$-$HF1$8$b$N$rJV$7$^$9(B) - $B$r8F$S=P$9$+$r$7$^$9!#(B - $B$=$N8e!"F@$i$l$?%"%I%l%9$G(B DNS $B8!:w$r9T$J$$$^$9!#(B - $B8=:_$N$H$3$m!"$3$N(B DNS $B8!:w$r2sHr$9$kJ}K!$O$"$j$^$;$s!#(B</p> - - <p>DNS $B%5!<%P$,%@%&%s$7$F!"$3$N8!:w$,$G$-$J$$;vBV$,5/$3$k$3$H$r(B - $B62$l$F$$$k$N$G$"$l$P!"(B<code>/etc/hosts</code> - $B$K%[%9%HL>$r5-=R$7$F$*$/$3$H$,$G$-$^$9(B - ($B%^%7%s$,@5>o$K5/F0$9$k$h$&$K4{$K@_Dj$5$l$F$$$k$+$b$7$l$^$;$s(B)$B!#(B - $B$=$N>l9g!"(BDNS $B;2>H$,<:GT$7$?>l9g$K%^%7%s$,(B <code>/etc/hosts</code> - $B$r;HMQ$9$k$h$&$K@_Dj$7$F$$$k$3$H$r3NG'$7$F$/$@$5$$!#(B - $B$=$NJ}K!$O!"$I$N(B OS $B$r;HMQ$7$F$$$k$+$K0MB8$7$^$9$,!"(B - <code>/etc/resolv.conf</code> $B$+(B <code>/etc/nsswitch.conf</code> - $B$rJT=8$9$k$3$H$G@_Dj$G$-$^$9!#(B</p> - - <p>$B$b$7B>$NM}M3$G(B DNS $B$rMxMQ$9$kI,MW$,$J$$>l9g$O!"(B - <code>HOSTRESORDER</code> $B4D6-JQ?t$r!V(B <code>local</code> - $B!W$K@_Dj$9$k$3$H$G$=$N$h$&$K$G$-$^$9!#0J>e$3$l$i$N;vJA$O!"$I$s$J(B - OS $B!"%l%>%k%P%i%$%V%i%j$r;HMQ$7$F$$$k$+$K0MB8$7$^$9!#$^$?!"(B - <module>mod_env</module> $B$r;HMQ$7$F4D6-JQ?t$r@)8f$7$J$$8B$j!"(B - CGI $B$K$b1F6A$rM?$($^$9!#(Bman $B%Z!<%8$d;HMQ$7$F$$$k(B OS - $B$N(B FAQ $B$GD4$Y$k$HNI$$$G$7$g$&!#(B</p> + <title>「主サーバ」アドレス</title> + + <p>Apache 1.1 での <a href="vhost/name-based.html" + >名前ベースのバーチャルホストのサポート</a> 追加の際に、 + Apache は <program>httpd</program> の実行されているホストの IP + アドレスを知る必要が出てきました。このアドレスを得るために、 + (もしあれば) グローバルな + <directive module="core">ServerName</directive> を使用するか、 + C 言語の関数 <code>gethostname</code> (コマンドプロンプトで + <code>hostname</code> とタイプしたときと同じものを返します) + を呼び出すかをします。 + その後、得られたアドレスで DNS 検索を行ないます。 + 現在のところ、この DNS 検索を回避する方法はありません。</p> + + <p>DNS サーバがダウンして、この検索ができない事態が起こることを + 恐れているのであれば、<code>/etc/hosts</code> + にホスト名を記述しておくことができます + (マシンが正常に起動するように既に設定されているかもしれません)。 + その場合、DNS 参照が失敗した場合にマシンが <code>/etc/hosts</code> + を使用するように設定していることを確認してください。 + その方法は、どの OS を使用しているかに依存しますが、 + <code>/etc/resolv.conf</code> か <code>/etc/nsswitch.conf</code> + を編集することで設定できます。</p> + + <p>もし他の理由で DNS を利用する必要がない場合は、 + <code>HOSTRESORDER</code> 環境変数を「 <code>local</code> + 」に設定することでそのようにできます。以上これらの事柄は、どんな + OS 、レゾルバライブラリを使用しているかに依存します。また、 + <module>mod_env</module> を使用して環境変数を制御しない限り、 + CGI にも影響を与えます。man ページや使用している OS + の FAQ で調べると良いでしょう。</p> </section> <section id="tips"> - <title>$B0J>e$NLdBj$r2r7h$9$kJ}K!(B</title> + <title>以上の問題を解決する方法</title> <ul> <li> <directive module="core">VirtualHost</directive> - $B$G(B IP $B%"%I%l%9$r;HMQ$9$k!#(B + で IP アドレスを使用する。 </li> <li> <directive module="mpm_common">Listen</directive> - $B$G(B IP $B%"%I%l%9$r;HMQ$9$k!#(B + で IP アドレスを使用する。 </li> <li> - $BA4$F$N%P!<%A%c%k%[%9%H$,L@<(E*$K(B + 全てのバーチャルホストが明示的に <directive module="core">ServerName</directive> - $B$r;}$D$h$&$K$9$k!#(B + を持つようにする。 </li> - <li>$B2?$b1~Ez$7$J$$(B + <li>何も応答しない <code><VirtualHost _default_:*></code> - $B%5!<%P$r:n$k!#(B</li> + サーバを作る。</li> </ul> </section> <section id="appendix"> - <title>$BIUO?(B: $B>-MhE*$JJ}8~@-(B</title> - - <p>DNS $B$K4X$7$F!"8=>u$OA4$/59$7$/$"$j$^$;$s!#(BApache 1.2 $B$G!"(B - DNS $B$N%$%Y%s%H$,<:GT$7$F$b>/$J$/$H$b5/F0%W%m%;%9$,B3$/$h$&$K$7$^$7$?$,!"(B - $B$3$l$,:G9b$N2r7hJ}K!$G$O$J$$$G$7$g$&!#%"%I%l%9$N:F3d$jEv$F$,I,MWIT2DHr(B - $B$H$J$C$F$$$k:#F|$N%$%s%?!<%M%C%H$K$*$$$F$O!"(B - $B@_Dj%U%!%$%k$NCf$GL@<(E*$J(B IP $B%"%I%l%9$rMW5a$9$k;EMM$O!"(B - $BA4$/59$7$/$"$j$^$;$s!#(B</p> - - <p>$BEpMQ$N%5!<%S%9%"%?%C%/$K4X$7$F9T$J$&$Y$-;v$O!"(B - DNS $B=g0z$-$r9T$J$C$FF@$i$l$?%"%I%l%9$KBP$9$k(B DNS - $B5U0z$-$r9T$J$C$F!"Fs$D$NL>A0$rHf3S$9$k$3$H$G$9!#(B - $B$3$NFs$D$,0lCW$7$J$1$l$P%P!<%A%c%k%[%9%H$OL58z$K$J$k$h$&$K$7$^$9!#(B - $B$3$&$9$k$?$a$K$O5U0z$-(B DNS $B$,E,@Z$K@_Dj$5$l$F$$$kI,MW$,$"$j$^$9(B - (FTP $B%5!<%P$d(B TCP $B%i%C%Q!<$N$*$+$2$G!VFs=E5U0z$-!W(BDNS $B$O0lHLE*$K(B - $B$J$C$F$$$^$9$N$G!"4IM}<T$K$O$*Fk@w$_$b$N$G$7$g$&(B)$B!#(B</p> - - <p>IP $B%"%I%l%9$,;HMQ$5$l$F$$$J$/$F(B DNS $B$,<:GT$7$?>l9g$O!"(B - $B$I$&$7$F$b%P!<%A%c%k%[%9%H%&%'%V%5!<%P$r?.Mj@-$r3NJ]$7$F(B - $B5/F0$5$;$k$3$H$OIT2DG=$N$h$&$G$9!#(B - $B@_Dj$N0lIt$rL58z$K$9$k$H$$$&$h$&$JItJ,E*$J2r7h$G$O!"(B - $B%5!<%P$,2?$r$9$k$h$&$K$9$k$+$K$b$h$j$^$9$,!"(B - $B$=$N%5!<%P$,5/F0$7$J$$$h$j3N<B$K0-$$>u67$K$J$k$G$7$g$&!#(B</p> - - <p>HTTP/1.1 $B$,3+H/$5$l!"%V%i%&%6$d%W%m%-%7$,(B <code>Host</code> - $B%X%C%@$rH/9T$9$k$h$&$K$J$C$?$N$G!"(BIP $B%Y!<%9$N%P!<%A%c%k%[%9%H$r(B - $BA4$/;HMQ$7$J$/$F$b:Q$`$h$&$K$J$k$+$b$7$l$^$;$s!#(B - $B$3$N>l9g!"%&%'%V%5!<%P$O@_DjCf$K(B DNS $B;2>H$r$7$J$/$F$b:Q$_$^$9!#(B - $B$7$+$7(B 1997 $BG/(B 3 $B7n;~E@$N>u67$G$O!"(B - $B>&MQ%l%Y%k$N%&%'%V%5!<%P$G;HMQ$G$-$k$[$I$K$O!"(B - $B$3$l$i$N5!G=$O9-$/3+H/$,?J$s$G$$$^$;$s!#(B</p> + <title>付録: 将来的な方向性</title> + + <p>DNS に関して、現状は全く宜しくありません。Apache 1.2 で、 + DNS のイベントが失敗しても少なくとも起動プロセスが続くようにしましたが、 + これが最高の解決方法ではないでしょう。アドレスの再割り当てが必要不可避 + となっている今日のインターネットにおいては、 + 設定ファイルの中で明示的な IP アドレスを要求する仕様は、 + 全く宜しくありません。</p> + + <p>盗用のサービスアタックに関して行なうべき事は、 + DNS 順引きを行なって得られたアドレスに対する DNS + 逆引きを行なって、二つの名前を比較することです。 + この二つが一致しなければバーチャルホストは無効になるようにします。 + こうするためには逆引き DNS が適切に設定されている必要があります + (FTP サーバや TCP ラッパーのおかげで「二重逆引き」DNS は一般的に + なっていますので、管理者にはお馴染みものでしょう)。</p> + + <p>IP アドレスが使用されていなくて DNS が失敗した場合は、 + どうしてもバーチャルホストウェブサーバを信頼性を確保して + 起動させることは不可能のようです。 + 設定の一部を無効にするというような部分的な解決では、 + サーバが何をするようにするかにもよりますが、 + そのサーバが起動しないより確実に悪い状況になるでしょう。</p> + + <p>HTTP/1.1 が開発され、ブラウザやプロキシが <code>Host</code> + ヘッダを発行するようになったので、IP ベースのバーチャルホストを + 全く使用しなくても済むようになるかもしれません。 + この場合、ウェブサーバは設定中に DNS 参照をしなくても済みます。 + しかし 1997 年 3 月時点の状況では、 + 商用レベルのウェブサーバで使用できるほどには、 + これらの機能は広く開発が進んでいません。</p> </section> </manualpage> diff --git a/docs/manual/dso.xml.ja b/docs/manual/dso.xml.ja index e4271c3ee4..32bd4ef751 100644 --- a/docs/manual/dso.xml.ja +++ b/docs/manual/dso.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp" ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 420990:587444 (outdated) --> @@ -22,25 +22,25 @@ <manualpage metafile="dso.xml.meta"> - <title>$BF0E*6&M-%*%V%8%'%/%H(B (DSO) $B%5%]!<%H(B</title> + <title>動的共有オブジェクト (DSO) サポート</title> <summary> - <p>Apache HTTP $B%5!<%P$O%b%8%e!<%k2=$5$l$?%W%m%0%i%`$G!"(B - $B4IM}<T$,%b%8%e!<%k$rA*Br$9$k$3$H$G%5!<%P$KAH$_9~$`5!G=$rA*$V$3$H$,$G$-$^$9!#(B - $B%b%8%e!<%k$O%5!<%P$,%S%k%I$5$l$k$H$-$K(B <program>httpd</program> $B%P%$%J%j$K(B - $B@EE*$KAH$_9~$`$3$H$,$G$-$^$9!#$b$7$/$O!"(B<program>httpd</program> $B%P%$%J%j$H$O(B - $BJL$KB8:_$9$kF0E*6&M-%*%V%8%'%/%H(B ($BLuCm(B: Dynamic Shared Object) - (DSO) $B$H$7$F%3%s%Q%$%k$9$k$3$H$b(B - $B$G$-$^$9!#(BDSO $B%b%8%e!<%k$O%5!<%P$,%S%k%I$5$l$k$H$-$K%3%s%Q%$%k$7$?$j!"(B - Apache $B3HD%%D!<%k(B (<program>apxs</program>) $B$r(B - $B;H$C$F8e$G%3%s%Q%$%k$7$FDI2C$7$?$j$G$-$^$9!#(B</p> - - <p>$B$3$NJ8=q$O(B DSO $B%b%8%e!<%k$N;H$$J}$H!";EAH$_$K$D$$$F(B - $B@bL@$7$^$9!#(B</p> + <p>Apache HTTP サーバはモジュール化されたプログラムで、 + 管理者がモジュールを選択することでサーバに組み込む機能を選ぶことができます。 + モジュールはサーバがビルドされるときに <program>httpd</program> バイナリに + 静的に組み込むことができます。もしくは、<program>httpd</program> バイナリとは + 別に存在する動的共有オブジェクト (訳注: Dynamic Shared Object) + (DSO) としてコンパイルすることも + できます。DSO モジュールはサーバがビルドされるときにコンパイルしたり、 + Apache 拡張ツール (<program>apxs</program>) を + 使って後でコンパイルして追加したりできます。</p> + + <p>この文書は DSO モジュールの使い方と、仕組みについて + 説明します。</p> </summary> -<section id="implementation"><title>$B<BAu(B</title> +<section id="implementation"><title>実装</title> <related> <modulelist> @@ -51,44 +51,44 @@ </directivelist> </related> - <p>$B8D!9$N(B Apache $B%b%8%e!<%k$r%m!<%I$9$k$?$a$N(B DSO $B%5%]!<%H$O(B - <module>mod_so.c</module> $B$H$$$&%b%8%e!<%k$N5!G=$K4p$E$$$F$$$^$9!#(B - $B$3$N%b%8%e!<%k(B $B$O(B Apache $B$N%3%"$K@EE*$KAH$_9~$^$l$F$$$kI,MW$,$"$j$^$9!#(B - $B$=$l$O(B <module>core.c</module> $B0J30$G$O(B DSO $B$K$G$-$J$$M#0l$N(B - $B%b%8%e!<%k$G$9!#;v<B>e!"B>$N$9$Y$F$N(B Apache $B$N%b%8%e!<%k$O!"(B - <a href="install.html">$B%$%s%9%H!<%k$NJ8=q(B</a>$B$G@bL@$5$l$F$$$k$h$&$K!"(B - <program>configure</program> $B$N(B - <code>--enable-<em>module</em>=shared</code> $B%*%W%7%g%s$G$=$l$>$l$r(B - DSO $B%S%k%I$K$9$k$3$H$K$h$j!"(BDSO $B%b%8%e!<%k$K$9$k$3$H$,$G$-$^$9!#(B - <code>mod_foo.so</code> $B$N$h$&$J(B DSO $B$K%b%8%e!<%k$,%3%s%Q%$%k$5$l$l$P!"(B - <code>httpd.conf</code> $B%U%!%$%kCf$G(B <module>mod_so</module> $B$N(B + <p>個々の Apache モジュールをロードするための DSO サポートは + <module>mod_so.c</module> というモジュールの機能に基づいています。 + このモジュール は Apache のコアに静的に組み込まれている必要があります。 + それは <module>core.c</module> 以外では DSO にできない唯一の + モジュールです。事実上、他のすべての Apache のモジュールは、 + <a href="install.html">インストールの文書</a>で説明されているように、 + <program>configure</program> の + <code>--enable-<em>module</em>=shared</code> オプションでそれぞれを + DSO ビルドにすることにより、DSO モジュールにすることができます。 + <code>mod_foo.so</code> のような DSO にモジュールがコンパイルされれば、 + <code>httpd.conf</code> ファイル中で <module>mod_so</module> の <directive module="mod_so">LoadModule</directive> - $B%G%#%l%/%F%#%V$r;H$&$3$H$G%5!<%P$N5/F0$d:F5/F0;~$K$3$N%b%8%e!<%k$r(B - $B%m!<%I$9$k$h$&$K$G$-$^$9!#(B</p> - - <p>Apache $B%b%8%e!<%kMQ$N(B ($BFC$K%5!<%I%Q!<%F%#%b%8%e!<%k$N(B) DSO $B%U%!%$%k$N(B - $B:n@.$r4JC1$K$9$k$?$a$K!"(B<program>apxs</program> - (<dfn>APache eXtenSion</dfn>) $B$H$$$&?7$7$$%5%]!<%H%W%m%0%i%`$,$"$j$^$9!#(B - Apache $B$N%=!<%9%D%j!<$N(B<em>$B30$G(B</em> DSO $B%b%8%e!<%k$r%S%k%I$9$k$?$a$K(B - $B;H$&$3$H$,$G$-$^$9!#H/A[$OC1=c$G$9(B: Apache $B$N%$%s%9%H!<%k;~$N(B - <program>configure</program>$B!"(B<code>make install</code> $B$N$H$-$K(B Apache $B$N(B - C $B%X%C%@$r%$%s%9%H!<%k$7!"(BDSO $B%S%k%IMQ$N%W%i%C%H%U%)!<%`0MB8$N(B - $B%3%s%Q%$%i$H%j%s%+$N%U%i%0$r(B <program>apxs</program> $B%W%m%0%i%`$KDI2C$7$^$9!#(B - $B$3$l$K$h$j!"%f!<%6$,(B Apache $B$NG[I[%=!<%9%D%j!<$J$7$G!"$5$i$K(B - DSO $B%5%]!<%H$N$?$a$N%W%i%C%H%U%)!<%`0MB8$N%3%s%Q%$%i$d%j%s%+$N(B - $B%U%i%0$r$$$8$k$3$H$J$/(B Apache $B$N%b%8%e!<%k$N%=!<%9$r%3%s%Q%$%k(B - $B$G$-$k$h$&$K$J$j$^$9!#(B</p> + ディレクティブを使うことでサーバの起動や再起動時にこのモジュールを + ロードするようにできます。</p> + + <p>Apache モジュール用の (特にサードパーティモジュールの) DSO ファイルの + 作成を簡単にするために、<program>apxs</program> + (<dfn>APache eXtenSion</dfn>) という新しいサポートプログラムがあります。 + Apache のソースツリーの<em>外で</em> DSO モジュールをビルドするために + 使うことができます。発想は単純です: Apache のインストール時の + <program>configure</program>、<code>make install</code> のときに Apache の + C ヘッダをインストールし、DSO ビルド用のプラットフォーム依存の + コンパイラとリンカのフラグを <program>apxs</program> プログラムに追加します。 + これにより、ユーザが Apache の配布ソースツリーなしで、さらに + DSO サポートのためのプラットフォーム依存のコンパイラやリンカの + フラグをいじることなく Apache のモジュールのソースをコンパイル + できるようになります。</p> </section> -<section id="usage"><title>$B;HMQK!$N35MW(B</title> +<section id="usage"><title>使用法の概要</title> - <p>Apache 2.2 $B$N(B DSO $B5!G=$N35N,$rCN$k$3$H$,$G$-$k$?$a$N!"(B - $BC;$/4J7i$J35MW$G$9(B:</p> + <p>Apache 2.2 の DSO 機能の概略を知ることができるための、 + 短く簡潔な概要です:</p> <ol> <li> - <em>$BG[I[$5$l$F$$$k(B</em> Apache $B%b%8%e!<%k!"2>$K(B <code>mod_foo.c</code> - $B$H$7$F!"$=$l$r(B DSO <code>mod_foo.so</code> $B$K%S%k%I!"%$%s%9%H!<%k(B: + <em>配布されている</em> Apache モジュール、仮に <code>mod_foo.c</code> + として、それを DSO <code>mod_foo.so</code> にビルド、インストール: <example> $ ./configure --prefix=/path/to/install --enable-foo=shared<br /> @@ -97,8 +97,8 @@ $ make install </li> <li> - <em>$B%5!<%I%Q!<%F%#(B</em> Apache $B%b%8%e!<%k!"2>$K(B <code>mod_foo.c</code> - $B$H$7$F!"$=$l$r(B DSO <code>mod_foo.so</code> $B$K%S%k%I!"%$%s%9%H!<%k(B: + <em>サードパーティ</em> Apache モジュール、仮に <code>mod_foo.c</code> + として、それを DSO <code>mod_foo.so</code> にビルド、インストール: <example> $ ./configure --add-module=<var>module_type</var>:/path/to/3rdparty/mod_foo.c \<br /> @@ -110,8 +110,8 @@ $ make install </li> <li> - $B6&M-%b%8%e!<%k$N(B <em>$B8e!9$N%$%s%9%H!<%k(B</em> $B$N$?$a$K(B - Apache $B$r@_Dj(B: + 共有モジュールの <em>後々のインストール</em> のために + Apache を設定: <example> $ ./configure --enable-so<br /> @@ -120,9 +120,9 @@ $ make install </li> <li> - <em>$B%5!<%I%Q!<%F%#(B</em> Apache $B%b%8%e!<%k!"2>$K(B <code>mod_foo.c</code> - $B$H$7$F!"$=$l$r(B <program>apxs</program> $B$r;H$C$F(B - Apache $B%=!<%9%D%j!<$N(B<em>$B30$G(B</em> DSO $B$K%S%k%I!"%$%s%9%H!<%k(B: + <em>サードパーティ</em> Apache モジュール、仮に <code>mod_foo.c</code> + として、それを <program>apxs</program> を使って + Apache ソースツリーの<em>外で</em> DSO にビルド、インストール: <example> $ cd /path/to/3rdparty<br /> @@ -132,161 +132,161 @@ $ apxs -i -a -n foo mod_foo.la </li> </ol> - <p>$B$I$N>l9g$K$*$$$F$b!"6&M-%b%8%e!<%k$r%3%s%Q%$%k$7$?8e$G!"(B - <code>httpd.conf</code> $B$G(B + <p>どの場合においても、共有モジュールをコンパイルした後で、 + <code>httpd.conf</code> で <directive module="mod_so">LoadModule</directive> - $B%G%#%l%/%F%#%V$r;H$C$F(B Apache $B$,%b%8%e!<%k$r;HMQ$9$k$h$&$K(B - $B$7$J$1$l$P$J$j$^$;$s!#(B</p> + ディレクティブを使って Apache がモジュールを使用するように + しなければなりません。</p> </section> -<section id="background"><title>$BGX7J(B</title> - - <p>$B:G6a$N(B Unix $B7O$N(B OS $B$K$O(B <em>$BF0E*6&M-%*%V%8%'%/%H(B</em> (DSO) - $B$NF0E*%j%s%/(B/$B%m!<%I$H$$$&5$$N$-$$$?5!9=$,(B - $BB8:_$7$^$9!#$3$l$O!"<B9T;~$K%W%m%0%i%`$N%"%I%l%96u4V$K(B - $B%m!<%I$G$-$k$h$&$JFCJL$J7A<0$G%W%m%0%i%`$r%S%k%I$9$k$3$H$r(B - $B2DG=$K$7$^$9!#(B</p> - - <p>$B$3$N%m!<%I$OFs$D$NJ}K!$G9T$J$&$3$H$,$G$-$^$9(B: $B<B9T%W%m%0%i%`$,(B - $B5/F0$5$l$?$H$-$K(B <code>ld.so</code> $B$H$$$&%7%9%F%`%W%m%0%i%`(B - $B$K$h$j<+F0E*$K9T$J$o$l$kJ}K!$H!"<B9T%W%m%0%i%`Cf$+$i!"%7%9%F%`%3!<%k(B - <code>dlopen()/dlsym()</code> $B$K$h$k(B Unix $B%m!<%@$X$N(B - $B%W%m%0%i%`%7%9%F%`$N%$%s%?%U%'!<%9$r;H$C$F<jF0$G9T$J$&J}K!$H$,(B - $B$"$j$^$9!#(B</p> - - <p>$B:G=i$NJ}K!$G$O(B DSO $B$OIaDL$O(B<em>$B6&M-%i%$%V%i%j(B</em>$B$d(B <em>DSO - $B%i%$%V%i%j(B</em> $B$H8F$P$l$F$$$F!"(BDSO $B$NL>A0$O(B - <code>libfoo.so</code> $B$d(B <code>libfoo.so.1.2</code> $B$N$h$&$K$J$C$F$$$^$9!#(B - $B$3$l$i$O%7%9%F%`%G%#%l%/%H%j(B ($BDL>o(B <code>/usr/lib</code>) $B$KB8:_$7!"(B - $B<B9T%W%m%0%i%`$X$N%j%s%/$O%S%k%I;~$K(B <code>-lfoo</code> $B$r%j%s%+$K(B - $B;XDj$9$k$3$H$G3NN)$5$l$^$9!#$3$l$K$h$j%i%$%V%i%j$X$N;2>H$,<B9T%W%m%0%i%`$N(B - $B%U%!%$%k$K=q$-9~$^$l$F!"5/F0;~$K(B Unix $B$N%m!<%@$,(B <code>/usr/lib</code> $B$d!"(B - $B%j%s%+$N(B <code>-R</code> $B$N$h$&$J%*%W%7%g%s$K$h$j%O!<%I%3!<%I$5$l$?%Q%9!"(B - $B4D6-JQ?t(B <code>LD_LIBRARY_PATH</code> $B$K$h$j@_Dj$5$l$?%Q%9!"$NCf$+$i(B - <code>libfoo.so</code> $B$N>l=j$r8+$D$1$k$3$H$,$G$-$^$9!#$=$l$+$i!"(B - $B<B9T%W%m%0%i%`Cf$N(B ($B$^$@L$2r7h$N(B) $B%7%s%\%k$r(B DSO $B$K$"$k%7%s%\%k$G(B - $B2r7h$7$^$9!#(B</p> - - <p>$BIaDL$O<B9T%W%m%0%i%`Cf$N%7%s%\%k$O(B DSO $B$+$i$O;2>H$5$l$^$;$s(B - (DSO $B$O0lHLE*$J%3!<%I$K$h$k:FMxMQ2DG=$J%i%$%V%i%j$G$9$N$G(B)$B!#(B - $B$G$9$+$i!"$5$i$J$k%7%s%\%k$N2r7h$OI,MW$"$j$^$;$s!#(B - $B%7%s%\%k$O(B Unix $B%m!<%@$K$h$j40A4$J2r7h$,9T$J$o$l$^$9$N$G!"<B9T%U%!%$%k<+?H$O(B - $B2?$b$9$kI,MW$,$"$j$^$;$s!#(B($B<B:]$N$H$3$m!"@EE*$G$J$$J}K!$G%j%s%/$5$l$F$$$k(B - $B$9$Y$F$N<B9T%W%m%0%i%`$KAH$_9~$^$l$F$$$k3+;OMQ$N%3!<%I$N0lIt$K(B - <code>ld.so</code> $B$r5/F0$9$k%3!<%I$,4^$^$l$F$$$^$9(B)$B!#$h$/;H$o$l$k(B - $B%i%$%V%i%j$NF0E*%m!<%I$NMxE@$OL@$i$+$G$9!#%i%$%V%i%j$N%3!<%I$O(B - $B%7%9%F%`%i%$%V%i%j$K(B <code>libc.so</code> $B$N$h$&$K$7$F0lEYJ]B8$9$k$@$1$G$h$/!"(B - $B%W%m%0%i%`$N$?$a$KI,MW$J%G%#%9%/$NNN0h$r@aLs$9$k$3$H$,$G$-$^$9!#(B</p> - - <p>$BFs$D$a$NJ}K!$G$O(B DSO $B$OIaDL$O(B<em>$B6&M-%*%V%8%'%/%H(B</em>$B$d(B - <em>DSO $B%U%!%$%k(B</em>$B$H8F$P$l$F$$$F!"G$0U$N3HD%;R$rIU$1$k$3$H$,$G$-$^$9(B - ($B$?$@$7!"I8=`E*$JL>A0$O(B <code>foo.so</code> $B$G$9(B)$B!#(B - $B$3$l$i$N%U%!%$%k$ODL>o$O%W%m%0%i%`@lMQ$N%G%#%l%/%H%j$KCV$+$l!"(B - $B$3$l$i$r;H$&<B9T%W%m%0%i%`$X$N%j%s%/$O<+F0E*$K$O$5$l$^$;$s!#(B - $B$G$9$N$G!"<B9T%W%m%0%i%`$O(B <code>dlopen()</code> $B$r;H$C$F(B - $B<B9T;~$K<jF0$G(B DSO $B$r%W%m%0%i%`$N%"%I%l%96u4V$K%m!<%I$9$kI,MW$,$"$j$^$9!#(B - $B$3$N;~E@$G$O<B9T%W%m%0%i%`$KBP$7$F(B DSO $B$N%7%s%\%k$N2r7h$O9T$J$o$l$^$;$s!#(B - $B$7$+$7!"$=$NBe$o$j$K(B Unix $B$N%m!<%@$,(B DSO $B$N(B ($B$^$@L$2r7h$N(B) $B%7%s%\%k$r(B - $B<B9T%W%m%0%i%`$K$h$j%(%/%9%]!<%H$5$l$?%7%s%\%k$H4{$K%m!<%I$5$l$?(B - DSO $B%i%$%V%i%j$K$h$j%(%/%9%]!<%H$5$l$?%7%s%\%k(B ($BFC$K!"$I$3$K$G$b$"$k(B - <code>libc.so</code> $B$N$9$Y$F$N%7%s%\%k(B) $B$G<+F0E*$K2r7h$7$^$9!#(B - $B$3$&$9$k$3$H$G!"(BDSO $B$O:G=i$+$i@EE*$K%j%s%/$5$l$F$$$?$+$N$h$&$K!"(B - $B<B9T%W%m%0%i%`$N%7%s%\%k$rCN$k$3$H$,$G$-$^$9!#(B</p> - - <p>$B:G8e$K!"(BDSO $B$N(B API $B$rMxE@$r@8$+$9$?$a$K!"%W%m%0%i%`$O(B - $B8e$G%G%#%9%Q%C%A%F!<%V%k(B<em>$B$J$I(B</em>$B$G%7%s%\%k$r;H$&$3$H$,$G$-$k$h$&$K!"(B - <code>dlsym()</code> $B$r;H$C$F$$$/$D$+$N%7%s%\%k$r2r7h$7$^$9!#(B - $B$9$J$o$A(B: $B<B9T%W%m%0%i%`$OI,MW$J$9$Y$F$N%7%s%\%k$r<jF0$G2r7h$7$J$1$l$P(B - $B$J$j$^$;$s!#$3$N5!9=$NMxE@$O%W%m%0%i%`$N%*%W%7%g%J%k$JItJ,$O(B - $BI,MW$K$J$k$^$G%m!<%I$9$kI,MW$,$J$$(B ($B$@$+$i%a%b%j$b>CHq$7$J$$(B) - $B$3$H$G$9!#I,MW$J$i$P!"4pK\%W%m%0%i%`$N5!G=$r3HD%$9$k$?$a$K(B - $B$3$l$i$NItJ,$rF0E*$K%m!<%I$9$k$3$H$,$G$-$^$9!#(B</p> - - <p>$B$3$N(B DSO $B5!9=$O4JC1$J$h$&$K8+$($^$9$,!">/$J$/$H$b0l$DFq$7$$E@$,(B - $B$"$j$^$9(B: $B%W%m%0%i%`$r3HD%$9$k$?$a$K(B DSO $B$r;H$C$F$$$k$H$-$K!"(B - DSO $B$,<B9T%W%m%0%i%`$+$i%7%s%\%k$r2r7h$9$kE@$G$9(B ($BFsHVL\$NJ}K!(B)$B!#(B - $B$3$l$O$J$<$G$7$g$&$+!#$=$l$O!"(BDSO $B$N%7%s%\%k$r<B9T%W%m%0%i%`$N(B - $B%7%s%\%k$+$i!V5U2r7h!W$9$k$H$$$&$N$O%i%$%V%i%j$N@_7W(B - ($B%i%$%V%i%j$O$=$l$r;HMQ$9$k%W%m%0%i%`$N$3$H$O2?$b(B - $BCN$i$J$$(B) $B$KH?$7$F$$$F!"$3$N5!G=$O$9$Y$F$N%W%i%C%H%U%)!<%`$K(B - $B$"$k$o$1$G$O$J$/!"I8=`2=$b$5$l$F$$$J$$$+$i$G$9!#(B - $B<B:]$K$O<B9T%W%m%0%i%`$N%0%m!<%P%k$J%7%s%\%k$O:F%(%/%9%]!<%H$5$l$k$3$H$O(B - $B$"$^$j$J$/!"(BDSO $B$+$i;H$&$3$H$,$G$-$^$;$s!#%j%s%+$K%0%m!<%P%k%7%s%\%k$9$Y$F$r(B - $B%(%/%9%]!<%H$9$k$h$&$K$5$;$kJ}K!$r8+$D$1$k$3$H$,!"<B9T;~$K%W%m%0%i%`$r(B - $B3HD%$9$k$?$a$K(B DSO $B$r;H$&$H$-$N0lHV$NLdBj$G$9!#(B</p> - - <p>$B6&M-%i%$%V%i%j$N%"%W%m!<%A$,IaDL$NJ}K!$G$9!#(BDSO $B5!9=$O$=$N$?$a$K(B - $B@_7W$5$l$?$b$N$G$9$+$i!#$7$?$,$C$F!"$=$NJ}K!$O%*%Z%l!<%F%#%s%0%7%9%F%`$,(B - $BDs6!$9$k$[$H$s$I$9$Y$F$N<oN`$N%i%$%V%i%j$G;H$o$l$F$$$^$9!#(B - $B0lJ}!"%W%m%0%i%`$N3HD%$N$?$a$K6&M-%*%V%8%'%/%H$r;HMQ$9$k!"$H$$$&J}$O(B - $B$"$^$j;H$o$l$F$$$^$;$s!#(B</p> - - <p>1998 $BG/$N;~E@$G!"<B9T;~$K<B:]$K5!G=3HD%$N$?$a$K(B DSO $B5!9=$r;H$C$F$$$k(B - $B%=%U%H%&%'%"%Q%C%1!<%8$O>/$7$@$1$G$7$?(B: Perl 5 (XS $B5!9=$H(B DnaLoader $B%b%8%e!<%k(B - $B$K$h$k$b$N(B)$B!"(BNetscape $B%5!<%P(B<em>$B$J$I(B</em>$B$G$9!#(BApache $B$O$9$G$K(B - $B%b%8%e!<%k$N35G0$r;H$C$F5!G=3HD%$r$7$F$$$F!"FbItE*$K%G%#%9%Q%C%A%j%9%H$K(B - $B4p$E$$$?30It%b%8%e!<%k$N(B Apache $B%3%"5!G=$X$N%j%s%/$r9T$J$C$F$$$^$7$?$N$G!"(B - $B%P!<%8%g%s(B 1.3 $B$+$i!"(BApache $B$b(B DSO $B5!9=$r;H$&Cg4V$K$J$j$^$7$?!#(B - Apache $B$O<B9T;~$K(B DSO $B$r;H$C$F%b%8%e!<%k$r%m!<%I$9$k$h$&$K$9$G$K(B - $B1?L?IU$1$i$l$F$$$?$N$G$9!#(B</p> +<section id="background"><title>背景</title> + + <p>最近の Unix 系の OS には <em>動的共有オブジェクト</em> (DSO) + の動的リンク/ロードという気のきいた機構が + 存在します。これは、実行時にプログラムのアドレス空間に + ロードできるような特別な形式でプログラムをビルドすることを + 可能にします。</p> + + <p>このロードは二つの方法で行なうことができます: 実行プログラムが + 起動されたときに <code>ld.so</code> というシステムプログラム + により自動的に行なわれる方法と、実行プログラム中から、システムコール + <code>dlopen()/dlsym()</code> による Unix ローダへの + プログラムシステムのインタフェースを使って手動で行なう方法とが + あります。</p> + + <p>最初の方法では DSO は普通は<em>共有ライブラリ</em>や <em>DSO + ライブラリ</em> と呼ばれていて、DSO の名前は + <code>libfoo.so</code> や <code>libfoo.so.1.2</code> のようになっています。 + これらはシステムディレクトリ (通常 <code>/usr/lib</code>) に存在し、 + 実行プログラムへのリンクはビルド時に <code>-lfoo</code> をリンカに + 指定することで確立されます。これによりライブラリへの参照が実行プログラムの + ファイルに書き込まれて、起動時に Unix のローダが <code>/usr/lib</code> や、 + リンカの <code>-R</code> のようなオプションによりハードコードされたパス、 + 環境変数 <code>LD_LIBRARY_PATH</code> により設定されたパス、の中から + <code>libfoo.so</code> の場所を見つけることができます。それから、 + 実行プログラム中の (まだ未解決の) シンボルを DSO にあるシンボルで + 解決します。</p> + + <p>普通は実行プログラム中のシンボルは DSO からは参照されません + (DSO は一般的なコードによる再利用可能なライブラリですので)。 + ですから、さらなるシンボルの解決は必要ありません。 + シンボルは Unix ローダにより完全な解決が行なわれますので、実行ファイル自身は + 何もする必要がありません。(実際のところ、静的でない方法でリンクされている + すべての実行プログラムに組み込まれている開始用のコードの一部に + <code>ld.so</code> を起動するコードが含まれています)。よく使われる + ライブラリの動的ロードの利点は明らかです。ライブラリのコードは + システムライブラリに <code>libc.so</code> のようにして一度保存するだけでよく、 + プログラムのために必要なディスクの領域を節約することができます。</p> + + <p>二つめの方法では DSO は普通は<em>共有オブジェクト</em>や + <em>DSO ファイル</em>と呼ばれていて、任意の拡張子を付けることができます + (ただし、標準的な名前は <code>foo.so</code> です)。 + これらのファイルは通常はプログラム専用のディレクトリに置かれ、 + これらを使う実行プログラムへのリンクは自動的にはされません。 + ですので、実行プログラムは <code>dlopen()</code> を使って + 実行時に手動で DSO をプログラムのアドレス空間にロードする必要があります。 + この時点では実行プログラムに対して DSO のシンボルの解決は行なわれません。 + しかし、その代わりに Unix のローダが DSO の (まだ未解決の) シンボルを + 実行プログラムによりエクスポートされたシンボルと既にロードされた + DSO ライブラリによりエクスポートされたシンボル (特に、どこにでもある + <code>libc.so</code> のすべてのシンボル) で自動的に解決します。 + こうすることで、DSO は最初から静的にリンクされていたかのように、 + 実行プログラムのシンボルを知ることができます。</p> + + <p>最後に、DSO の API を利点を生かすために、プログラムは + 後でディスパッチテーブル<em>など</em>でシンボルを使うことができるように、 + <code>dlsym()</code> を使っていくつかのシンボルを解決します。 + すなわち: 実行プログラムは必要なすべてのシンボルを手動で解決しなければ + なりません。この機構の利点はプログラムのオプショナルな部分は + 必要になるまでロードする必要がない (だからメモリも消費しない) + ことです。必要ならば、基本プログラムの機能を拡張するために + これらの部分を動的にロードすることができます。</p> + + <p>この DSO 機構は簡単なように見えますが、少なくとも一つ難しい点が + あります: プログラムを拡張するために DSO を使っているときに、 + DSO が実行プログラムからシンボルを解決する点です (二番目の方法)。 + これはなぜでしょうか。それは、DSO のシンボルを実行プログラムの + シンボルから「逆解決」するというのはライブラリの設計 + (ライブラリはそれを使用するプログラムのことは何も + 知らない) に反していて、この機能はすべてのプラットフォームに + あるわけではなく、標準化もされていないからです。 + 実際には実行プログラムのグローバルなシンボルは再エクスポートされることは + あまりなく、DSO から使うことができません。リンカにグローバルシンボルすべてを + エクスポートするようにさせる方法を見つけることが、実行時にプログラムを + 拡張するために DSO を使うときの一番の問題です。</p> + + <p>共有ライブラリのアプローチが普通の方法です。DSO 機構はそのために + 設計されたものですから。したがって、その方法はオペレーティングシステムが + 提供するほとんどすべての種類のライブラリで使われています。 + 一方、プログラムの拡張のために共有オブジェクトを使用する、という方は + あまり使われていません。</p> + + <p>1998 年の時点で、実行時に実際に機能拡張のために DSO 機構を使っている + ソフトウェアパッケージは少しだけでした: Perl 5 (XS 機構と DnaLoader モジュール + によるもの)、Netscape サーバ<em>など</em>です。Apache はすでに + モジュールの概念を使って機能拡張をしていて、内部的にディスパッチリストに + 基づいた外部モジュールの Apache コア機能へのリンクを行なっていましたので、 + バージョン 1.3 から、Apache も DSO 機構を使う仲間になりました。 + Apache は実行時に DSO を使ってモジュールをロードするようにすでに + 運命付けられていたのです。</p> </section> -<section id="advantages"><title>$BMxE@$H7gE@(B</title> +<section id="advantages"><title>利点と欠点</title> - <p>$B>e5-$N(B DSO $B$K4p$E$$$?5!G=$O0J2<$NMxE@$,$"$j$^$9(B:</p> + <p>上記の DSO に基づいた機能は以下の利点があります:</p> <ul> - <li>$B<B:]$N%5!<%P%W%m%;%9$rAH$_N)$F$k$?$a$K!"(B - $B%S%k%I;~$K(B <code>configure</code> $B$N%*%W%7%g%s$r;H$&Be$o$j$K(B - $B<B9T;~$K(B <code>httpd.conf</code> $B$N@_DjMQ%3%^%s%I(B + <li>実際のサーバプロセスを組み立てるために、 + ビルド時に <code>configure</code> のオプションを使う代わりに + 実行時に <code>httpd.conf</code> の設定用コマンド <directive module="mod_so">LoadModule</directive> - $B$r;H$&$3$H$,$G$-$^$9$N$G!"%5!<%P%Q%C%1!<%8$N=@Fp@-$,9b$^$j$^$7$?!#(B - $B$?$H$($P!"0l$D$N(B Apache $B$N%$%s%9%H!<%k$+$i(B - $B0c$&9=@.$N%5!<%P(B ($BI8=`HG$H(B SSL $BHG!":G>.9=@.$H3HD%HG(B [mod_perl, PHP3] - <em>$B$J$I(B</em>) $B$r<B9T$9$k$3$H$,$G$-$^$9!#(B</li> - - <li>$B%$%s%9%H!<%k$N8e$G$"$C$F$b!"%5!<%P$N%Q%C%1!<%8$r%5!<%I%Q!<%F%#(B - $B%b%8%e!<%k$G4JC1$K3HD%$G$-$k$h$&$K$J$j$^$7$?!#$3$l$O!"(BApache $B%3%"(B - $B%Q%C%1!<%8$H!"(BPHP3, mod_perl, mod_fastcgi <em>$B$J$I(B</em> $B$NDI2C$N(B - $B%Q%C%1!<%8$r:n@.$G$-$k$N$G!">/$J$/$H$b%Y%s%@$N%Q%C%1!<%84IM}<T$K$H$C$F(B - $BBg$-$JMxE@$,$"$j$^$9!#(B</li> - - <li>Apache $B%b%8%e!<%k$N3+H/$,4JC1$K$J$j$^$9!#(B - $B$3$l$O(B DSO $B$H(B <program>apxs</program> $B$NAH$_9g$o$;$K$h$j!"(BApache $B%=!<%9%D%j!<$N(B - $B30$G:n6H$G$-!"3+H/Cf$N%b%8%e!<%k$N?7$7$$%P!<%8%g%s$r(B - $B<B9TCf$N(B Apache $B%5!<%P$KAH$_9~$`$?$a$K(B <code>apxs -i</code> $B$H(B - <code>apachectl restart</code> $B$r9T$J$&$@$1$GNI$/$J$k$+$i$G$9!#(B</li> + を使うことができますので、サーバパッケージの柔軟性が高まりました。 + たとえば、一つの Apache のインストールから + 違う構成のサーバ (標準版と SSL 版、最小構成と拡張版 [mod_perl, PHP3] + <em>など</em>) を実行することができます。</li> + + <li>インストールの後であっても、サーバのパッケージをサードパーティ + モジュールで簡単に拡張できるようになりました。これは、Apache コア + パッケージと、PHP3, mod_perl, mod_fastcgi <em>など</em> の追加の + パッケージを作成できるので、少なくともベンダのパッケージ管理者にとって + 大きな利点があります。</li> + + <li>Apache モジュールの開発が簡単になります。 + これは DSO と <program>apxs</program> の組み合わせにより、Apache ソースツリーの + 外で作業でき、開発中のモジュールの新しいバージョンを + 実行中の Apache サーバに組み込むために <code>apxs -i</code> と + <code>apachectl restart</code> を行なうだけで良くなるからです。</li> </ul> - <p>DSO $B$K$O0J2<$N7gE@$,$"$j$^$9(B:</p> + <p>DSO には以下の欠点があります:</p> <ul> - <li>$B$9$Y$F$N%*%Z%l!<%F%#%s%0%7%9%F%`$,%W%m%0%i%`$N%"%I%l%96u4V$K(B - $B%3!<%I$rF0E*%m!<%I$9$k$3$H$r%5%]!<%H$7$F$$$k$o$G$O$J$$$N$G!"(B - $B%W%i%C%H%U%)!<%`$K$h$C$F$O(B DSO $B5!9=$O;H$($^$;$s!#(B</li> - - <li>Unix $B$N%m!<%@$,%7%s%\%k$N2r7h$r$9$kI,MW$,$G$-$?$N$G!"(B - $B$=$N%*!<%P%X%C%I$K$h$j%5!<%P$N5/F0;~4V$,Ls(B 20% $BCY$/$J$C$F$$$^$9!#(B</li> - - <li>$B0LCVHs0MB8%3!<%I(B (PIC) ($BLuCm(B position independent code) $B$O(B - $BAjBP%"%I%l%9$N$?$a$KJ#;($J%"%;%s%V%i$N%H%j%C%/$,I,MW$J$3$H$,$"$j!"(B - $B$=$l$OI,$:$7$b@dBP%"%I%l%9$HF1$8$/$i$$$NB.EY$,$G$k$o$1$G$O$"$j$^$;$s$N$G!"(B - $B%W%i%C%H%U%)!<%`$K$h$C$F$O%5!<%P$N<B9TB.EY$,Ls(B 5% $BCY$/$J$j$^$9!#(B</li> - - <li>DSO $B%b%8%e!<%k$O$9$Y$F$N%W%i%C%H%U%)!<%`$GB>$N(B DSO $B$K4p$E$$$?(B - $B%i%$%V%i%j$KBP$7$F%j%s%/$G$-$k(B (<code>ld -lfoo</code>) - $B$H$$$&$o$1$G$O$"$j$^$;$s$N$G(B ($B$?$H$($P!"(Ba.out $B$N%W%i%C%H%U%)!<%`$G$O(B - $B$3$N5!G=$O$"$j$^$;$s$,!"(BELF $B$N%W%i%C%H%U%)!<%`$K$O$"$j$^$9(B)$B!"(B - $B$9$Y$F$N<oN`$N%b%8%e!<%k$K(B DSO $B5!9=$r;H$($k$o$1$G$O$"$j$^$;$s!#(B - $B8@$$49$($k$H!"(BDSO $B%U%!%$%k$H$7$F%3%s%Q%$%k$5$l$?%b%8%e!<%k$N(B - $B;H$($k%7%s%\%k$O!"(B - Apache $B$N%3%"$N%7%s%\%k!"(BC $B%i%$%V%i%j(B (<code>libc</code>) $B$H(B - Apache $B%3%"$,;H$C$F$$$kB>$N$9$Y$F$N@EE*$J%i%$%V%i%j$HF0E*%i%$%V%i%j$N(B - $B%7%s%\%k!"(BPIC $B$K$h$k@EE*$J%i%$%V%i%j(B (<code>libfoo.a</code>) $B$N(B - $B%7%s%\%k$N$_$K@)8B$5$l$^$9!#$=$NB>$N%3!<%I$r;H$&J}K!$O!"(B - Apache $B%3%"<+?H$,$9$G$K$=$N%3!<%I$X$N;2>H$,$"$k$h$&$K$9$k$+!"(B - <code>dlopen ()</code> $B$r;H$C$F%3!<%I$r<+J,<+?H$G%m!<%I$9$k$+$N(B - $B$I$A$i$+$7$+$"$j$^$;$s!#(B</li> + <li>すべてのオペレーティングシステムがプログラムのアドレス空間に + コードを動的ロードすることをサポートしているわではないので、 + プラットフォームによっては DSO 機構は使えません。</li> + + <li>Unix のローダがシンボルの解決をする必要ができたので、 + そのオーバヘッドによりサーバの起動時間が約 20% 遅くなっています。</li> + + <li>位置非依存コード (PIC) (訳注 position independent code) は + 相対アドレスのために複雑なアセンブラのトリックが必要なことがあり、 + それは必ずしも絶対アドレスと同じくらいの速度がでるわけではありませんので、 + プラットフォームによってはサーバの実行速度が約 5% 遅くなります。</li> + + <li>DSO モジュールはすべてのプラットフォームで他の DSO に基づいた + ライブラリに対してリンクできる (<code>ld -lfoo</code>) + というわけではありませんので (たとえば、a.out のプラットフォームでは + この機能はありませんが、ELF のプラットフォームにはあります)、 + すべての種類のモジュールに DSO 機構を使えるわけではありません。 + 言い換えると、DSO ファイルとしてコンパイルされたモジュールの + 使えるシンボルは、 + Apache のコアのシンボル、C ライブラリ (<code>libc</code>) と + Apache コアが使っている他のすべての静的なライブラリと動的ライブラリの + シンボル、PIC による静的なライブラリ (<code>libfoo.a</code>) の + シンボルのみに制限されます。その他のコードを使う方法は、 + Apache コア自身がすでにそのコードへの参照があるようにするか、 + <code>dlopen ()</code> を使ってコードを自分自身でロードするかの + どちらかしかありません。</li> </ul> </section> diff --git a/docs/manual/env.xml.ja b/docs/manual/env.xml.ja index 29429b3cf9..e9347b8fea 100644 --- a/docs/manual/env.xml.ja +++ b/docs/manual/env.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp" ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 420990:659902 (outdated) --> @@ -22,28 +22,28 @@ <manualpage metafile="env.xml.meta"> - <title>Apache $B$N4D6-JQ?t(B</title> + <title>Apache の環境変数</title> <summary> - <p>Apache HTTP $B%5!<%P$O(B<em>$B4D6-JQ?t(B</em>$B$H8F$P$l$k!"L>A0$N$D$$$?(B - $BJQ?t$K>pJs$r5-21$9$k;EAH$_$rDs6!$7$F$$$^$9!#$3$N>pJs$O%m%0<}=8$d(B - $B%"%/%;%9@)8f$J$I$N$$$m$$$m$JA`:n$r@)8f$9$k$?$a$K;H$&$3$H$,$G$-$^$9!#(B - $B$3$l$i$NJQ?t$O(B CGI $B%9%/%j%W%H$J$I$N30It%W%m%0%i%`$HDL?.$9$k$?$a$K$b(B - $B;H$o$l$^$9!#$3$NJ8=q$O$=$l$i$NJQ?t$NA`:nJ}K!$H;HMQJ}K!$r$$$/$D$+(B - $B>R2p$7$^$9!#(B</p> - - <p>$B$3$l$i$NJQ?t$O(B<em>$B4D6-JQ?t(B</em>$B$H8F$P$l$F$$$^$9$,!"%*%Z%l!<%F%#%s%0(B - $B%7%9%F%`$K$h$C$F@)8f$5$l$F$$$k4D6-JQ?t$HF1$8$G$O$"$j$^$;$s!#(B - $B<B:]$O!"$3$l$i$NJQ?t$O(B Apache $B$NFbIt9=B$$NCf$K5-21$5$l!"A`:n$5$l$F$$$^$9!#(B - $B$=$l$i$O!"(BCGI $B$d(B SSI $B%9%/%j%W%H$KEO$5$l$?$H$-$@$1!"<B:]$N(B - $B%*%Z%l!<%F%#%s%0%7%9%F%`$N4D6-JQ?t$K$J$j$^$9!#%5!<%P<+?H$,(B - $B<B9T$5$l$F$$$k%*%Z%l!<%F%#%s%0%7%9%F%`$N4D6-$rA`:n$7$?$$>l9g$O!"(B - $B%*%Z%l!<%F%#%s%0%7%9%F%`$N%7%'%k$,Ds6!$7$F$$$kI8=`$N4D6-JQ?t$N(B - $BA`:nJ}K!$r;H$o$J$1$l$P$J$j$^$;$s!#(B</p> + <p>Apache HTTP サーバは<em>環境変数</em>と呼ばれる、名前のついた + 変数に情報を記憶する仕組みを提供しています。この情報はログ収集や + アクセス制御などのいろいろな操作を制御するために使うことができます。 + これらの変数は CGI スクリプトなどの外部プログラムと通信するためにも + 使われます。この文書はそれらの変数の操作方法と使用方法をいくつか + 紹介します。</p> + + <p>これらの変数は<em>環境変数</em>と呼ばれていますが、オペレーティング + システムによって制御されている環境変数と同じではありません。 + 実際は、これらの変数は Apache の内部構造の中に記憶され、操作されています。 + それらは、CGI や SSI スクリプトに渡されたときだけ、実際の + オペレーティングシステムの環境変数になります。サーバ自身が + 実行されているオペレーティングシステムの環境を操作したい場合は、 + オペレーティングシステムのシェルが提供している標準の環境変数の + 操作方法を使わなければなりません。</p> </summary> <section id="setting"> - <title>$B4D6-JQ?t$N@_Dj(B</title> + <title>環境変数の設定</title> <related> <modulelist> <module>mod_env</module> @@ -64,71 +64,71 @@ </related> <section id="basic-manipulation"> - <title>$B4pK\E*$J4D6-$NA`:n(B</title> + <title>基本的な環境の操作</title> - <p>Apache $B$K$*$$$F4D6-JQ?t$r@_Dj$9$k0lHV4pK\E*$JJ}K!$O!"(B - $BL5>r7o$K4D6-JQ?t$r@_Dj$9$k(B <directive module="mod_env" - >SetEnv</directive> $B%G%#%l%/%F%#%V$r;HMQ$9$k$3$H$G$9!#(B + <p>Apache において環境変数を設定する一番基本的な方法は、 + 無条件に環境変数を設定する <directive module="mod_env" + >SetEnv</directive> ディレクティブを使用することです。 <directive module="mod_env">PassEnv</directive> - $B%G%#%l%/%F%#%V$K$h$j!"(BApache $B$,5/F0$5$l$?%7%'%k$N(B - $B4D6-JQ?t$rEO$9$3$H$b$G$-$^$9!#(B</p> + ディレクティブにより、Apache が起動されたシェルの + 環境変数を渡すこともできます。</p> </section> <section id="conditional"> - <title>$B%j%/%(%9%HKh$K>r7o$K4p$E$$$F@_Dj$9$k(B</title> - - <p>$B$h$j=@Fp@-$r9b$a$k$?$a$K!"(Bmod_setenvif - $B$GDs6!$5$l$F$$$k%G%#%l%/%F%#%V$r;HMQ$9$k$3$H$G!"%j%/%(%9%H$N(B - $BFC@-$K4p$E$$$F4D6-JQ?t$r@_Dj$9$k$3$H$,$G$-$^$9!#Nc$($P!"FCDj$N%V%i%&%6(B - (User-Agent) $B$N%j%/%(%9%H$dFCDj$N(B Referer [$B0U?^E*$JDV$j$G$9(B] - ($BLuCm(B: $B@5$7$$DV$j$O(B referrer $B$G$9$,!"(BHTTP $B$N;EMM$G$O(B Referer - $B$H$J$C$F$$$^$9(B) $B%X%C%@$,8+$D$+$C$?$H$-$N$_JQ?t$r@_Dj$9$k$3$H$,$G$-$^$9!#(B - mod_rewrite $B$N(B <directive module="mod_rewrite">RewriteRule</directive> - $B%G%#%l%/%F%#%V$K$*$$$F4D6-JQ?t$r@_Dj$9$k(B <code>[E=...]</code> - $B%*%W%7%g%s$r;HMQ$9$k$3$H$G!"(B - $B$h$j=@Fp$J@_Dj$r9T$J$&$3$H$,$G$-$^$9!#(B</p> + <title>リクエスト毎に条件に基づいて設定する</title> + + <p>より柔軟性を高めるために、mod_setenvif + で提供されているディレクティブを使用することで、リクエストの + 特性に基づいて環境変数を設定することができます。例えば、特定のブラウザ + (User-Agent) のリクエストや特定の Referer [意図的な綴りです] + (訳注: 正しい綴りは referrer ですが、HTTP の仕様では Referer + となっています) ヘッダが見つかったときのみ変数を設定することができます。 + mod_rewrite の <directive module="mod_rewrite">RewriteRule</directive> + ディレクティブにおいて環境変数を設定する <code>[E=...]</code> + オプションを使用することで、 + より柔軟な設定を行なうことができます。</p> </section> <section id="unique-identifiers"> - <title>$B0l0U$J<1JL;R(B</title> + <title>一意な識別子</title> - <p>mod_unique_id $B$O!"Hs>o$K8B$i$l$?>r7o$N2<$G(B - $B!V$9$Y$F!W$N%j%/%(%9%H$K$D$$$F!"0l0U$G$"$k$3$H$,J]>Z$5$l$F$$$kCM$r4D6-JQ?t(B - <code>UNIQUE_ID</code> $B$K@_Dj$7$^$9!#(B</p> + <p>mod_unique_id は、非常に限られた条件の下で + 「すべて」のリクエストについて、一意であることが保証されている値を環境変数 + <code>UNIQUE_ID</code> に設定します。</p> </section> <section id="standard-cgi"> - <title>$BI8=`(B CGI $BJQ?t(B</title> + <title>標準 CGI 変数</title> - <p>Apache $B$N@_Dj%U%!%$%k$G@_Dj$5$l$?4D6-JQ?t$H%7%'%k$+$iEO$5$l$k(B - $B4D6-JQ?t$K2C$($F!"(BCGI $B%9%/%j%W%H$H(B SSI $B%Z!<%8$K$O(B <a - href="http://cgi-spec.golux.com">CGI $B$N;EMM(B</a>$B$GMW5a$5$l$F$$$k!"(B - $B%j%/%(%9%H$N%a%?>pJs$r;}$C$?4D6-JQ?t$NAH$,Ds6!$5$l$^$9!#(B</p> + <p>Apache の設定ファイルで設定された環境変数とシェルから渡される + 環境変数に加えて、CGI スクリプトと SSI ページには <a + href="http://cgi-spec.golux.com">CGI の仕様</a>で要求されている、 + リクエストのメタ情報を持った環境変数の組が提供されます。</p> </section> <section id="caveats"> - <title>$B$$$/$D$+$NCm0U(B</title> + <title>いくつかの注意</title> <ul> - <li>$B4D6-$rA`:n$9$k%G%#%l%/%F%#%V$r;H$C$FI8=`(B CGI - $BJQ?t$r>e=q$-$7$?$jJQ99$7$?$j$9$k$3$H$O$G$-$^$;$s!#(B</li> - - <li>CGI $B%9%/%j%W%H$r5/F0$9$k$?$a$K(B <program>suexec</program> - $B$,;HMQ$5$l$F$$$k>l9g!"(BCGI $B%9%/%j%W%H$,5/F0$9$k$?$a$K!"4D6-JQ?t$O(B<em - >$B0BA4(B</em>$B$J4D6-JQ?t$NAH$K@0M}$5$l$^$9!#(B - $B$3$N0BA4$J4D6-JQ?t$N=89g$O!"%3%s%Q%$%k;~$K(B <code>suexec.c</code> - $B$GDj5A$5$l$^$9!#(B</li> - - <li>$B0\?"@-$N$?$a$K!"4D6-JQ?t$NL>A0$O%"%k%U%!%Y%C%H!"(B - $B?t;z$H%"%s%@!<%9%3%"(B ($BLuCm(B: '_') $B$@$1$+$i@.$j$^$9!#(B - $B$5$i$K!":G=i$NJ8;z$O?t;z$G$"$C$F$O$$$1$^$;$s!#(B - $B$3$N@)8B$K9g$o$J$$J8;z$O(B CGI $B%9%/%j%W%H$H(B SSI - $B%Z!<%8$KEO$5$l$k$H$-$K%"%s%@!<%9%3%"$KCV49$5$l$^$9!#(B</li> + <li>環境を操作するディレクティブを使って標準 CGI + 変数を上書きしたり変更したりすることはできません。</li> + + <li>CGI スクリプトを起動するために <program>suexec</program> + が使用されている場合、CGI スクリプトが起動するために、環境変数は<em + >安全</em>な環境変数の組に整理されます。 + この安全な環境変数の集合は、コンパイル時に <code>suexec.c</code> + で定義されます。</li> + + <li>移植性のために、環境変数の名前はアルファベット、 + 数字とアンダースコア (訳注: '_') だけから成ります。 + さらに、最初の文字は数字であってはいけません。 + この制限に合わない文字は CGI スクリプトと SSI + ページに渡されるときにアンダースコアに置換されます。</li> </ul> </section> </section> <section id="using"> - <title>$B4D6-JQ?t$N;HMQ(B</title> + <title>環境変数の使用</title> <related> <modulelist> @@ -153,168 +153,168 @@ </related> <section id="cgi-scripts"> - <title>CGI $B%9%/%j%W%H(B</title> + <title>CGI スクリプト</title> - <p>$B4D6-JQ?t$N<g$JMxMQK!$N0l$D$O!"(BCGI $B%9%/%j%W%H$K>pJs$rEA$($k$3$H$G$9!#(B - $B>e$G@bL@$5$l$F$$$k$h$&$K!"(BCGI $B%9%/%j%W%H$KEO$5$l$k4D6-JQ?t$O(B Apache - $B$N@_Dj$K$h$j@_Dj$5$l$kJQ?t$K2C$($F!"%j%/%(%9%H$NI8=`$N%a%?>pJs$r4^$s$G$$$^$9!#(B - $B>\:Y$O(B <a href="howto/cgi.html">CGI $B%A%e!<%H%j%"%k(B</a> - $B$r;2>H$7$F$/$@$5$$!#(B</p> + <p>環境変数の主な利用法の一つは、CGI スクリプトに情報を伝えることです。 + 上で説明されているように、CGI スクリプトに渡される環境変数は Apache + の設定により設定される変数に加えて、リクエストの標準のメタ情報を含んでいます。 + 詳細は <a href="howto/cgi.html">CGI チュートリアル</a> + を参照してください。</p> </section> <section id="ssi-pages"> - <title>SSI $B%Z!<%8(B</title> + <title>SSI ページ</title> - <p>mod_include $B$N(B <code>INCLUDES</code> $B%U%#%k%?$G=hM}$5$l$k(B - server-parsed (SSI) $B%I%-%e%a%s%H$G$O!"(B<code>echo</code> - $BMWAG$r;HMQ$9$k$H4D6-JQ?t$,=PNO$5$l$^$9!#(B - $B$^$?!"%Z!<%8$N$"$kItJ,$,%j%/%(%9%H$N@-<A$K1~$8$FJQ99$5$l$k$h$&$K!"(B - $B4D6-JQ?t$r%U%m!<@)8fMWAG$G;H$&$3$H$,$G$-$^$9!#>\:Y$O(B - <a href="howto/ssi.html">SSI $B%A%e!<%H%j%"%k(B</a> $B$r;2>H$7$F$/$@$5$$!#(B</p> + <p>mod_include の <code>INCLUDES</code> フィルタで処理される + server-parsed (SSI) ドキュメントでは、<code>echo</code> + 要素を使用すると環境変数が出力されます。 + また、ページのある部分がリクエストの性質に応じて変更されるように、 + 環境変数をフロー制御要素で使うことができます。詳細は + <a href="howto/ssi.html">SSI チュートリアル</a> を参照してください。</p> </section> <section id="access-control"> - <title>$B%"%/%;%9@)8f(B</title> + <title>アクセス制御</title> - <p><code>allow from env=</code> $B%G%#%l%/%F%#%V$H(B <code>deny from env=</code> - $B%G%#%l%/%F%#%V$r;HMQ$7$F!"%5!<%P$X$N%"%/%;%9$r4D6-JQ?t$NCM$G@)8f$9$k$3$H$,$G$-$^$9!#(B + <p><code>allow from env=</code> ディレクティブと <code>deny from env=</code> + ディレクティブを使用して、サーバへのアクセスを環境変数の値で制御することができます。 <directive module="mod_setenvif">SetEnvIf</directive> - $B%G%#%l%/%F%#%V$HAH$_9g$o$;$k$3$H$G!"%/%i%$%"%s%H$NFC@-$K4p$E$$$F(B - $B%5!<%P$X$N%"%/%;%9@)8f$r=@Fp$K9T$J$&$3$H$,$G$-$k$h$&$K$J$j$^$9!#(B - $B$?$H$($P!"$3$l$i$N%G%#%l%/%F%#%V$r;HMQ$7$F!"FCDj$N%V%i%&%6(B (User-Agent) - $B$+$i$N%"%/%;%9$r5qH]$9$k$3$H$,$G$-$^$9!#(B</p> + ディレクティブと組み合わせることで、クライアントの特性に基づいて + サーバへのアクセス制御を柔軟に行なうことができるようになります。 + たとえば、これらのディレクティブを使用して、特定のブラウザ (User-Agent) + からのアクセスを拒否することができます。</p> </section> <section id="logging"> - <title>$B>r7oIU$-%m%05-O?(B</title> + <title>条件付きログ記録</title> <p><directive module="mod_log_config">LogFormat</directive> - $B%G%#%l%/%F%#%V$N%*%W%7%g%s(B <code>%e</code> - $B$r;HMQ$9$k$3$H$G!"4D6-JQ?t$r%"%/%;%9%m%0$K5-O?$9$k$3$H$,$G$-$^$9!#$5$i$K!"(B + ディレクティブのオプション <code>%e</code> + を使用することで、環境変数をアクセスログに記録することができます。さらに、 <directive module="mod_log_config">CustomLog</directive> - $B%G%#%l%/%F%#%V$N>r7oJ,4t<0$r;HMQ$9$k$3$H$G!"(B - $B4D6-JQ?t$NCM$K$h$C$F%j%/%(%9%H$r%m%0$K5-O?$9$k$+$I$&$+$r7h$a$k$3$H$,$G$-$^$9!#(B + ディレクティブの条件分岐式を使用することで、 + 環境変数の値によってリクエストをログに記録するかどうかを決めることができます。 <directive module="mod_setenvif">SetEnvIf</directive> - $B%G%#%l%/%F%#%V$HAH$_9g$o$;$k$3$H$G!"(B - $B$I$N%j%/%(%9%H$r%m%0$K5-O?$9$k$+$r=@Fp$K@)8f$9$k$3$H$,2DG=$K$J$j$^$9!#$?$H$($P!"(B - <code>gif</code> $B$G=*$o$k%U%!%$%kL>$X$N%j%/%(%9%H$O%m%0$K5-O?$7$J$$!"(B - $B0c$&%5%V%M%C%H$N%/%i%$%"%s%H$+$i$N%j%/%(%9%H$@$1$r%m%0$K5-O?$9$k!"(B - $B$H$$$&A*Br$,2DG=$G$9!#(B</p> + ディレクティブと組み合わせることで、 + どのリクエストをログに記録するかを柔軟に制御することが可能になります。たとえば、 + <code>gif</code> で終わるファイル名へのリクエストはログに記録しない、 + 違うサブネットのクライアントからのリクエストだけをログに記録する、 + という選択が可能です。</p> </section> <section id="response-headers"> - <title>$B>r7oIU$-1~Ez%X%C%@(B</title> + <title>条件付き応答ヘッダ</title> <p><directive module="mod_headers">Header</directive> - $B%G%#%l%/%F%#%V$O4D6-JQ?t$NB8:_$dIT:_$K$h$C$F%/%i%$%"%s%H$X$N1~Ez$KFCDj$N(B - HTTP $B%X%C%@$rIU$1$k$+$I$&$+$r7h$a$k$3$H$,$G$-$^$9!#(B - $B$3$l$K$h$j!"$?$H$($P!"%/%i%$%"%s%H$+$i$N%j%/%(%9%H(B - $B$K$"$k%X%C%@$,$"$k>l9g$K$N$_FCDj$N1~Ez%X%C%@$rAw$k!"$H$$$&$h$&$J$3$H$,(B - $B$G$-$^$9!#(B</p> + ディレクティブは環境変数の存在や不在によってクライアントへの応答に特定の + HTTP ヘッダを付けるかどうかを決めることができます。 + これにより、たとえば、クライアントからのリクエスト + にあるヘッダがある場合にのみ特定の応答ヘッダを送る、というようなことが + できます。</p> </section> <section id="external-filter"> - <title>$B30It%U%#%k%?$NE,MQ(B</title> + <title>外部フィルタの適用</title> <p><directive module="mod_ext_filter">ExtFilterDefine</directive> - $B%G%#%l%/%F%#%V$r;HMQ$7$F(B - <module>mod_ext_filter</module> $B$G@_Dj$5$l$k30It%U%#%k%?$O!"(B - <code>disableenv=</code> $B$H(B <code>enableenv=</code> - $B%*%W%7%g%s$r;H$C$F!"4D6-JQ?t$K$h$k>r7oIU$-E,MQ$,$G$-$^$9!#(B</p> + ディレクティブを使用して + <module>mod_ext_filter</module> で設定される外部フィルタは、 + <code>disableenv=</code> と <code>enableenv=</code> + オプションを使って、環境変数による条件付き適用ができます。</p> </section> <section id="url-rewriting"> - <title>URL $B$N=q$-49$((B</title> + <title>URL の書き換え</title> <p><directive module="mod_rewrite">RewriteCond</directive> - $B%G%#%l%/%F%#%V$G(B<em>$BI>2AJ8;zNs(B</em>$B$H$7$F(B - <code>%{ENV:...}</code> $B<0$r;XDj$9$k$3$H$G!"(Bmod_rewrite - $B$N=q$-49$(%(%s%8%s$,4D6-JQ?t$K4p$$$F>r7oJ,4t$r9T$J$&$3$H$,$G$-$^$9!#(B - mod_rewrite $B$,;HMQ2DG=$JJQ?t$G(B <code>ENV:</code> $B$,A0$K$D$$$F$$$J$$JQ?t$O!"(B - $B<B:]$O4D6-JQ?t$G$O$J$$$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B - $B$=$l$i$OB>$N%b%8%e!<%k$+$i$O;HMQ$G$-$J$$(B mod_rewrite $BMQ$NFCJL$JJQ?t$G$9!#(B + ディレクティブで<em>評価文字列</em>として + <code>%{ENV:...}</code> 式を指定することで、mod_rewrite + の書き換えエンジンが環境変数に基いて条件分岐を行なうことができます。 + mod_rewrite が使用可能な変数で <code>ENV:</code> が前についていない変数は、 + 実際は環境変数ではないということに注意してください。 + それらは他のモジュールからは使用できない mod_rewrite 用の特別な変数です。 </p> </section> </section> <section id="special"> - <title>$BFCJL$JL\E*$N4D6-JQ?t(B</title> + <title>特別な目的の環境変数</title> - <p>$B8_49@-$NLdBj$r2r7h$9$k$?$a$K!"FCDj$N%/%i%$%"%s%H$HDL?.$7$F$$$k$H$-$O(B - Apache $B$NF0:n$rJQ99$G$-$k5!9=$,F3F~$5$l$^$7$?!#$G$-$k$@$1=@Fp$K$9$k$?$a$K!"(B - $B$3$l$i$N5!9=$O4D6-JQ?t$rDj5A$9$k$3$H$G8F$S=P$5$l$^$9!#IaDL$O!"(B + <p>互換性の問題を解決するために、特定のクライアントと通信しているときは + Apache の動作を変更できる機構が導入されました。できるだけ柔軟にするために、 + これらの機構は環境変数を定義することで呼び出されます。普通は、 <directive module="mod_setenvif">BrowserMatch</directive> - $B%G%#%l%/%F%#%V$r;H$$$^$9$,!"$?$H$($P(B <directive module="mod_env" - >SetEnv</directive> $B%G%#%l%/%F%#%V$d(B <directive module="mod_env" - >PassEnv</directive> $B%G%#%l%/%F%#%V$b;HMQ$9$k$3$H$,$G$-$^$9!#(B</p> + ディレクティブを使いますが、たとえば <directive module="mod_env" + >SetEnv</directive> ディレクティブや <directive module="mod_env" + >PassEnv</directive> ディレクティブも使用することができます。</p> <section id="downgrade"> <title>downgrade-1.0</title> - <p>$B$3$l$r;XDj$9$k$3$H$G!"%j%/%(%9%H$,(B HTTP/1.0 - $B$h$j?7$7$$%W%m%H%3%k$N>l9g$G$b!"(BHTTP/1.0 $B$H$7$F07$o$l$^$9!#(B</p> + <p>これを指定することで、リクエストが HTTP/1.0 + より新しいプロトコルの場合でも、HTTP/1.0 として扱われます。</p> </section> <section id="force-gzip"> <title>force-gzip</title> - <p><code>DEFLATE</code> $B%U%#%k%?$,;HMQ$9$k$h$&$K@_Dj$5$l$F$$$k$H$-$K!"(B - $B$3$N4D6-JQ?t$O%V%i%&%6$N(B accept-encoding $B$N@_Dj$rL5;k$7$F>o$K(B - $B05=L$5$l$?=PNO$rAw$k$h$&$K$7$^$9!#(B</p> + <p><code>DEFLATE</code> フィルタが使用するように設定されているときに、 + この環境変数はブラウザの accept-encoding の設定を無視して常に + 圧縮された出力を送るようにします。</p> </section> <section id="force-no-vary"> <title>force-no-vary</title> - <p>$B1~Ez%X%C%@$,%/%i%$%"%s%H$KAw$i$l$kA0$K(B <code>Vary</code> - $B%U%#!<%k%I$r<h$j=|$-$^$9!#(B - $B%/%i%$%"%s%H$NCf$K$O$3$N%U%#!<%k%I$r@5$7$/2r<a$7$J$$$b$N$,$"$j$^$9!#(B - $B$3$NJQ?t$r@_Dj$9$k$3$H$G$=$NLdBj$r2sHr$9$k$3$H$,$G$-$^$9!#(B - $B$3$NJQ?t$r@_Dj$9$k$H!"(B<strong>force-response-1.0</strong> - $B$,@_Dj$5$l$?$3$H$K$J$j$^$9!#(B</p> + <p>応答ヘッダがクライアントに送られる前に <code>Vary</code> + フィールドを取り除きます。 + クライアントの中にはこのフィールドを正しく解釈しないものがあります。 + この変数を設定することでその問題を回避することができます。 + この変数を設定すると、<strong>force-response-1.0</strong> + が設定されたことになります。</p> </section> <section id="force-response"> <title>force-response-1.0</title> - <p>$B$3$l$,@_Dj$5$l$F$$$k$H!"(BHTTP/1.0 $B%j%/%(%9%H$rH/9T$9$k%/%i%$%"%s%H$KBP$7$F$O(B - $B>o$K(B HTTP/1.0 $B$G1~Ez$9$k$h$&$K$J$j$^$9!#$3$N5!G=$O!"(B - $B85!9$O(B AOL $B$N%W%m%-%7$NLdBj$N$?$a$K<BAu$5$l$^$7$?!#(BHTTP/1.0 $B%/%i%$%"%s%H$NCf$K$O!"(B - HTTP/1.1 $B$N1~Ez$rJV$5$l$k$H@5$7$/F0:n$7$J$$$b$N$,$"$k$+$b$7$l$^$;$s!#(B - $B$3$N5!G=$r;HMQ$9$k$3$H$G!"$=$N$h$&$J%/%i%$%"%s%H$H$N4V$N8_49@-LdBj$r2r7h$G$-$^$9!#(B</p> + <p>これが設定されていると、HTTP/1.0 リクエストを発行するクライアントに対しては + 常に HTTP/1.0 で応答するようになります。この機能は、 + 元々は AOL のプロキシの問題のために実装されました。HTTP/1.0 クライアントの中には、 + HTTP/1.1 の応答を返されると正しく動作しないものがあるかもしれません。 + この機能を使用することで、そのようなクライアントとの間の互換性問題を解決できます。</p> </section> <section id="gzip-only-text-html"> <title>gzip-only-text/html</title> - <p>$B$3$l$,(B 1 $B$K@_Dj$5$l$k$H!"$3$NJQ?t$O(B <code>text/html</code> - $B0J30$N%3%s%F%s%H%?%$%W$KBP$9$k!"(B<module>mod_deflate</module> - $BDs6!$N(B <code>DEFLATE</code> $B=PNO%U%#%k%?$rL58z$K$7$^$9!#(B - $B$^$?!"@EE*$K!"4{$K05=L$5$l$?%U%!%$%k$r;HMQ$7$?$$>l9g!"(B - (gzip $B$@$1$G$J$/!"(B"identity" $B$H0[$J$kA4$F$N%(%s%3!<%I$KBP$7$F(B) - <module>mod_negotiation</module> $B$bJQ?t$rI>2A$7$^$9!#(B</p> + <p>これが 1 に設定されると、この変数は <code>text/html</code> + 以外のコンテントタイプに対する、<module>mod_deflate</module> + 提供の <code>DEFLATE</code> 出力フィルタを無効にします。 + また、静的に、既に圧縮されたファイルを使用したい場合、 + (gzip だけでなく、"identity" と異なる全てのエンコードに対して) + <module>mod_negotiation</module> も変数を評価します。</p> </section> <section id="no-gzip"><title>no-gzip</title> - <p>$B%;%C%H$5$l$k$H!"(B<module>mod_deflate</module> $B$N(B - <code>DEFLATE</code> $B%U%#%k%?$,%*%U$K$J$j$^$9!#(B - $B$=$7$F(B <module>mod_negotiation</module> - $B$O%(%s%3!<%I$5$l$?%j%=!<%9$rAw$i$J$$$h$&$K$7$^$9!#(B</p> + <p>セットされると、<module>mod_deflate</module> の + <code>DEFLATE</code> フィルタがオフになります。 + そして <module>mod_negotiation</module> + はエンコードされたリソースを送らないようにします。</p> </section> <section id="nokeepalive"> <title>nokeepalive</title> - <p>$B$3$l$,@_Dj$5$l$F$$$k>l9g$O!"(B<directive module="core" - >KeepAlive</directive> $B$r;HMQ$7$J$$$h$&$K$7$^$9!#(B</p> + <p>これが設定されている場合は、<directive module="core" + >KeepAlive</directive> を使用しないようにします。</p> <section id="prefer-language"><title>prefer-language</title> - <p><module>mod_negotiation</module> $B$N5sF0$K1F6A$rM?$($^$9!#(B - (<code>en</code>, <code>ja</code>, <code>x-klingon</code>$B$H$$$C$?(B) - $B8@8l%?%0$,3JG<$5$l$F$$$l$P!"$=$N8@8l$N(B variant $B$rAw?.$7$h$&$H$7$^$9!#(B - $B$=$N$h$&$J(B variant $B$,$J$$>l9g$O!"(B - $BDL>o$N(B<a href="content-negotiation.html">$B%M%4%7%(!<%7%g%s(B</a>$B=hM}$,(B - $BE,MQ$5$l$^$9!#(B</p> + <p><module>mod_negotiation</module> の挙動に影響を与えます。 + (<code>en</code>, <code>ja</code>, <code>x-klingon</code>といった) + 言語タグが格納されていれば、その言語の variant を送信しようとします。 + そのような variant がない場合は、 + 通常の<a href="content-negotiation.html">ネゴシエーション</a>処理が + 適用されます。</p> </section> @@ -322,57 +322,57 @@ <section id="redirect-carefully"> <title>redirect-carefully</title> - <p>$B$3$l$O%/%i%$%"%s%H$X$N%j%@%$%l%/%H$NAw?.$r%5!<%P$,$h$jCm0U?<$/(B - $B9T$J$&$h$&$K$7$^$9!#(B - $B$3$l$ODL>o!"%j%@%$%l%/%H$K:]$7$F%/%i%$%"%s%H$K(B - $BLdBj$,$"$k$3$H$,J,$+$C$F$$$k>l9g$K;H$o$l$^$9!#$3$N5!G=$O85!9$O(B - $B%^%$%/%m%=%U%H$N%&%'%V%U%)%k%@$N%=%U%H$,(B DAV - $B%a%=%C%I$K$h$k%G%#%l%/%H%j$N%j%=!<%9$X$N%j%@%$%l%/%H$N07$$$K(B - $BLdBj$,$j!"$=$l$r2sHr$9$k$?$a$K<BAu$5$l$^$7$?!#(B</p> + <p>これはクライアントへのリダイレクトの送信をサーバがより注意深く + 行なうようにします。 + これは通常、リダイレクトに際してクライアントに + 問題があることが分かっている場合に使われます。この機能は元々は + マイクロソフトのウェブフォルダのソフトが DAV + メソッドによるディレクトリのリソースへのリダイレクトの扱いに + 問題がり、それを回避するために実装されました。</p> </section> <section id="suppress-error-charset"> <title>suppress-error-charset</title> - <p><em>Apache 2.2 $B0J9_$GMxMQ2DG=(B</em></p> - - <p>$B%/%i%$%"%s%H$N%j%/%(%9%H$KBP$9$k1~Ez$H$7$F%j%@%$%l%/%H$rAw?.$9$k:]!"(B - $B%l%9%]%s%9$K$O%j%@%$%l%/%H$,<+F0E*$K9T$J$($J$$(B ($B9T$J$o$l$J$$(B) - $B>l9g$KI=<($9$k%F%-%9%H$,4^$^$l$^$9!#(B - $BDL>o!"$3$N%F%-%9%H$K9gCW$7$?%-%c%i%/%?%;%C%H!"(BISO-8859-1 - $B$G%i%Y%kIU$1$r$7$^$9!#(B</p> - <p>$B$7$+$7!"%j%@%$%l%/%H@h$,JL$NJ8;z%;%C%H$r;H$C$F$$$k>l9g!"(B - $B$"$kLdBj$N$"$k%V%i%&%6$N%P!<%8%g%s$G$O!"(B - $B%j%@%$%l%/%H@h$N<B:]$NJ8;z%;%C%H$NBe$o$j$K!"(B - $B%j%@%$%l%/%H85$NJ8;z%;%C%H$r;H$C$F$7$^$&$3$H$,$"$j$^$9!#(B - $B$=$N7k2L!"Nc$($PJQ$JIA2h$,9T$J$o$l$?$j$7$F!"FI$a$J$/$J$C$?$j$7$^$9!#(B</p> - <p>$B$3$N4D6-JQ?t$r@_Dj$9$k$3$H$G!"%j%@%$%l%/%7%g%s%F%-%9%H$KBP$9$k(B - $B%-%c%i%/%?%;%C%H$N;XDj$r=|5n$7$^$9$N$G!"$=$l$iLdBj$N$"$k%V%i%&%6$G$b(B - $B%j%@%$%l%/%H@h$NJ8;z%;%C%H$r@5$7$/;H$&$h$&$K$G$-$^$9!#(B</p> + <p><em>Apache 2.2 以降で利用可能</em></p> + + <p>クライアントのリクエストに対する応答としてリダイレクトを送信する際、 + レスポンスにはリダイレクトが自動的に行なえない (行なわれない) + 場合に表示するテキストが含まれます。 + 通常、このテキストに合致したキャラクタセット、ISO-8859-1 + でラベル付けをします。</p> + <p>しかし、リダイレクト先が別の文字セットを使っている場合、 + ある問題のあるブラウザのバージョンでは、 + リダイレクト先の実際の文字セットの代わりに、 + リダイレクト元の文字セットを使ってしまうことがあります。 + その結果、例えば変な描画が行なわれたりして、読めなくなったりします。</p> + <p>この環境変数を設定することで、リダイレクションテキストに対する + キャラクタセットの指定を除去しますので、それら問題のあるブラウザでも + リダイレクト先の文字セットを正しく使うようにできます。</p> </section> <section id="proxy"><title>force-proxy-request-1.0, proxy-nokeepalive, proxy-sendchunked, proxy-sendcl</title> - <p>$B$3$l$i$N;X<(;R$O(B <module>mod_proxy</module> $B$N5sF0$rJQ99$7$^$9!#(B - $B>\:Y$O(B <module>mod_proxy</module> $B$N%I%-%e%a%s%H$r$4;2>H$/$@$5$$!#(B</p> + <p>これらの指示子は <module>mod_proxy</module> の挙動を変更します。 + 詳細は <module>mod_proxy</module> のドキュメントをご参照ください。</p> </section> </section> <section id="examples"> - <title>$BNc(B</title> + <title>例</title> <section id="misbehaving"> - <title>$B$*$+$7$J5sF0$r$9$k%/%i%$%"%s%H$KBP$7$F%W%m%H%3%k$NF0:n$rJQ99$9$k(B</title> - - <p>$B%/%i%$%"%s%H$K4X$9$k4{CN$NLdBj$KBP=h$9$k$?$a$K!"0J2<$N9T$r(B - httpd.conf $B$KF~$l$k$3$H$r?d>)$7$F$$$^$9!#(B</p> - <p>$B8E$$%P!<%8%g%s$N(B Apache $B$G$O!"%/%i%$%"%s%H$NLdBj$KBP1~$9$k$?$a$K(B - httpd.conf $B$K<!$N9T$r2C$($k$h$&?d>)$5$l$F$$$^$7$?$,!"(B - $B:#$H$J$C$F$O!"LdBj$H$7$F$$$?%/%i%$%"%s%H$O<B:]$K$O8+$+$1$k$3$H$O(B - $B$J$/$J$C$F$-$?$N$G!"$3$N@_Dj$O$b$O$dI,MW$J$$$+$b$7$l$^$;$s!#(B</p> + <title>おかしな挙動をするクライアントに対してプロトコルの動作を変更する</title> + + <p>クライアントに関する既知の問題に対処するために、以下の行を + httpd.conf に入れることを推奨しています。</p> + <p>古いバージョンの Apache では、クライアントの問題に対応するために + httpd.conf に次の行を加えるよう推奨されていましたが、 + 今となっては、問題としていたクライアントは実際には見かけることは + なくなってきたので、この設定はもはや必要ないかもしれません。</p> <example><pre> # # The following directives modify normal HTTP response behavior. @@ -396,11 +396,11 @@ BrowserMatch "JDK/1\.0" force-response-1.0</pre></example> </section> <section id="no-img-log"> - <title>$B2hA|$X$N%j%/%(%9%H$r%"%/%;%9%m%0$K5-O?$7$J$$(B</title> + <title>画像へのリクエストをアクセスログに記録しない</title> - <p>$B$3$NNc$G$O!"2hA|$X$N%j%/%(%9%H$,%"%/%;%9%m%0$K8=$l$J$$$h$&$K$7$^$9!#(B - $B$3$l$rJQ99$9$k$3$H$G!"FCDj$N%G%#%l%/%H%j$N%m%0<}=8$r$d$a$?$j!"(B - $BFCDj$N%[%9%H$+$i$N%j%/%(%9%H$N%m%0<}=8$r$d$a$?$j$9$k$3$H$,4JC1$K$G$-$^$9!#(B + <p>この例では、画像へのリクエストがアクセスログに現れないようにします。 + これを変更することで、特定のディレクトリのログ収集をやめたり、 + 特定のホストからのリクエストのログ収集をやめたりすることが簡単にできます。 </p> <example><pre> SetEnvIf Request_URI \.gif image-request @@ -410,13 +410,13 @@ CustomLog logs/access_log common env=!image-request</pre></example> </section> <section id="image-theft"> - <title>$B!V2hA|$NEpMQ!W$rKI$0(B</title> + <title>「画像の盗用」を防ぐ</title> - <p>$B$3$NNc$O!"JL$N%5!<%P$K$$$k?M$,!"$"$J$?$N%5!<%P$K$"$k2hA|$r(B - inline $B2hA|$H$7$F;HMQ$9$k$3$H$rKI$.$^$9!#(B - $B$3$l$O?d>)$5$l$F$$$k@_Dj$G$O$"$j$^$;$s$,!"$"$k8BDj$5$l$?>u67$G$OM-8z$G$9!#(B - $B$3$3$G$O!"$9$Y$F$N2hA|$O(B <code>/web/images</code> - $B$H$$$&%G%#%l%/%H%j$K$"$k$H2>Dj$7$^$9!#(B</p> + <p>この例は、別のサーバにいる人が、あなたのサーバにある画像を + inline 画像として使用することを防ぎます。 + これは推奨されている設定ではありませんが、ある限定された状況では有効です。 + ここでは、すべての画像は <code>/web/images</code> + というディレクトリにあると仮定します。</p> <example><pre> SetEnvIf Referer "^http://www\.example\.com/" local_referal # Allow browsers that do not send Referer info @@ -427,10 +427,10 @@ SetEnvIf Referer "^$" local_referal Allow from env=local_referal </Directory></pre></example> - <p>$B$3$N<jK!$K4X$9$k>\$7$$>pJs$O(B ApacheToday $B$N%A%e!<%H%j%"%k!V(B<a + <p>この手法に関する詳しい情報は ApacheToday のチュートリアル「<a href="http://apachetoday.com/news_story.php3?ltsn=2000-06-14-002-01-ps" >Keeping Your Images from Adorning Other Sites</a> - $B!W$r;2>H$7$F$/$@$5$$!#(B</p> + 」を参照してください。</p> </section> </section> </manualpage> diff --git a/docs/manual/filter.xml.ja b/docs/manual/filter.xml.ja index 4a97f8e792..edc6bd1992 100644 --- a/docs/manual/filter.xml.ja +++ b/docs/manual/filter.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp" ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 151408:659902 (outdated) --> @@ -22,14 +22,14 @@ <manualpage metafile="filter.xml.meta"> - <title>$B%U%#%k%?(B</title> + <title>フィルタ</title> <summary> - <p>Apache $B$G$N%U%#%k%?$N;H$$J}$K$D$$$F5-=R$7$F$$$^$9!#(B</p> + <p>Apache でのフィルタの使い方について記述しています。</p> </summary> <section id="filters"> - <title>$B%U%#%k%?(B</title> + <title>フィルタ</title> <related> <modulelist> <module>mod_deflate</module> @@ -48,40 +48,40 @@ </directivelist> </related> - <p><em>$B%U%#%k%?(B</em> $B$H$O!"%5!<%P$,Aw<u?.$7$?%G!<%?$K(B - $BE,MQ$5$l$k=hM}%W%m%;%9$N$3$H$r$$$$$^$9!#%/%i%$%"%s%H$+$i%5!<%P$K(B - $BAw$i$l$?%G!<%?$O(B <em>$BF~NO%U%#%k%?(B</em> $B$K$h$C$F!"%5!<%P$+$i(B - $B%/%i%$%"%s%H$KAw$i$l$k%G!<%?$O(B<em>$B=PNO%U%#%k%?(B</em>$B$K$h$C$F(B - $B=hM}$5$l$^$9!#J#?t$N%U%#%k%?$rE,MQ$9$k$3$H$,$G$-!"(B - $B$=$N=gHV$r87L)$K;XDj$9$k$3$H$b$G$-$^$9!#(B</p> - - <p>Apache $BFbIt$G$O!"%A%c%s%/(B ($B%G!<%?$N$V$D@Z$j(B) $B$r9T$C$?$j!"(B - $B%P%$%HHO0O$N;XDj$5$l$?%j%/%(%9%H$r07$C$?$j$H$$$C$?5!G=$r(B - $B9T$&:]$K!"%U%#%k%?$,;H$o$l$F$$$^$9!#$=$l$K2C$($F!"(B - $B<B9T;~$N@_Dj%G%#%l%/%F%#%V$GA*Br$,2DG=$J%U%#%k%?$r(B - $B%b%8%e!<%k$,Ds6!$G$-$^$9!#(B - $B%G!<%?$KE,1~$5$l$k%U%#%k%?$N%;%C%H$O!"(B + <p><em>フィルタ</em> とは、サーバが送受信したデータに + 適用される処理プロセスのことをいいます。クライアントからサーバに + 送られたデータは <em>入力フィルタ</em> によって、サーバから + クライアントに送られるデータは<em>出力フィルタ</em>によって + 処理されます。複数のフィルタを適用することができ、 + その順番を厳密に指定することもできます。</p> + + <p>Apache 内部では、チャンク (データのぶつ切り) を行ったり、 + バイト範囲の指定されたリクエストを扱ったりといった機能を + 行う際に、フィルタが使われています。それに加えて、 + 実行時の設定ディレクティブで選択が可能なフィルタを + モジュールが提供できます。 + データに適応されるフィルタのセットは、 <directive module="core">SetInputFilter</directive>, <directive module="core">SetOutputFilter</directive>, <directive module="core">AddInputFilter</directive>, <directive module="core">AddOutputFilter</directive>, <directive module="mod_mime">RemoveInputFilter</directive>, <directive module="mod_mime">RemoveOutputFilter</directive> - $B%G%#%l%/%F%#%V$G@)8f$G$-$^$9!#(B</p> + ディレクティブで制御できます。</p> - <p>$B8=9T$N(B Apache HTTP $B%5!<%P$NG[I[$G$O!"(B - $B<!$N%f!<%6A*Br2DG=$J%U%#%k%?$,Ds6!$5$l$F$$$^$9!#(B</p> + <p>現行の Apache HTTP サーバの配布では、 + 次のユーザ選択可能なフィルタが提供されています。</p> <dl> <dt>INCLUDES</dt> - <dd><module>mod_include</module> $B$G(B Server-Side Include $B$r$7$^$9!#(B</dd> + <dd><module>mod_include</module> で Server-Side Include をします。</dd> <dt>DEFLATE</dt> <dd><module>mod_deflate</module> - $B$r;H$C$F!"%/%i%$%"%s%H$KAw?.$9$kA0$K=PNO$r05=L$7$^$9!#(B</dd> + を使って、クライアントに送信する前に出力を圧縮します。</dd> </dl> - <p>$B$^$?!"(B<module>mod_ext_filter</module> $B%b%8%e!<%k$G(B - $B30It%W%m%0%i%`$r%U%#%k%?$H$7$F;XDj$9$k$3$H$,$G$-$^$9!#(B</p> + <p>また、<module>mod_ext_filter</module> モジュールで + 外部プログラムをフィルタとして指定することができます。</p> </section> </manualpage> diff --git a/docs/manual/handler.xml.ja b/docs/manual/handler.xml.ja index e0ca0392f2..bf1e06d49e 100644 --- a/docs/manual/handler.xml.ja +++ b/docs/manual/handler.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp" ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 395228:420990 (outdated) --> @@ -22,14 +22,14 @@ <manualpage metafile="handler.xml.meta"> - <title>Apache $B$N%O%s%I%i$N;HMQ(B</title> + <title>Apache のハンドラの使用</title> <summary> - <p>Apache $B$N%O%s%I%i$N;HMQ$K4X$7$F5-=R$7$F$$$^$9!#(B</p> + <p>Apache のハンドラの使用に関して記述しています。</p> </summary> <section id="definition"> - <title>$B%O%s%I%i$H$O(B</title> + <title>ハンドラとは</title> <related> <modulelist> <module>mod_actions</module> @@ -50,85 +50,85 @@ </related> - <p>$B!V%O%s%I%i!W$H$O!"%U%!%$%k$,8F$P$l$?$H$-$K<B9T$5$l$kF0:n$N(B - Apache $B$K$*$1$kFbItI=8=$G$9!#(B - $BDL>o!"%U%!%$%k$O%U%!%$%k7?$K4p$E$$$?0EL[$N%O%s%I%i$,$"$j$^$9!#(B - $BIaDL$O$9$Y$F$N%U%!%$%k$OC1$K%5!<%P$K07$o$l$^$9$,!"(B - $B%U%!%$%k%?%$%W$NCf$K$OJL$K!V%O%s%I%k!W(B($BLuCm(B: $B07$&(B) - $B$5$l$k$b$N$b$"$j$^$9!#(B</p> + <p>「ハンドラ」とは、ファイルが呼ばれたときに実行される動作の + Apache における内部表現です。 + 通常、ファイルはファイル型に基づいた暗黙のハンドラがあります。 + 普通はすべてのファイルは単にサーバに扱われますが、 + ファイルタイプの中には別に「ハンドル」(訳注: 扱う) + されるものもあります。</p> - <p>Apache 1.1 $B$G$O!"%O%s%I%i$rL@<(E*$K;HMQ$9$k5!G=$,DI2C$5$l$^$7$?!#(B - $B%U%!%$%k$N3HD%;R$dCV$$$F$$$k>l=j$K4p$E$$$F!"(B - $B%U%!%$%k7?$H4X78$J$/%O%s%I%i$r;XDj$9$k$3$H$,$G$-$^$9!#(B - $B$3$l$O$h$jM%2m$J2r7hK!$H$$$&E@$H!"%U%!%$%k$K%?%$%W(B<strong>$B$H(B</strong - >$B%O%s%I%i$NN>J}$r4XO"IU$1$k$3$H$,$G$-$k$H$$$&E@$GM%$l$F$$$^$9!#(B + <p>Apache 1.1 では、ハンドラを明示的に使用する機能が追加されました。 + ファイルの拡張子や置いている場所に基づいて、 + ファイル型と関係なくハンドラを指定することができます。 + これはより優雅な解決法という点と、ファイルにタイプ<strong>と</strong + >ハンドラの両方を関連付けることができるという点で優れています。 (<a href="mod/mod_mime.html#multipleext" - >$BJ#?t$N3HD%;R$N$"$k%U%!%$%k(B</a>$B$b;2>H$7$F$/$@$5$$(B)$B!#(B</p> + >複数の拡張子のあるファイル</a>も参照してください)。</p> - <p>$B%O%s%I%i$O%5!<%P$KAH$_9~$s$@$j!"%b%8%e!<%k$H$7$F4^$a$?$j!"(B + <p>ハンドラはサーバに組み込んだり、モジュールとして含めたり、 <directive module="mod_actions">Action</directive> - $B%G%#%l%/%F%#%V$H$7$FDI2C$7$?$j$9$k$3$H$,$G$-$^$9!#(B - $B0J2<$OI8=`G[I[$KAH$_9~$^$l$F$$$k%O%s%I%i$G$9!#(B + ディレクティブとして追加したりすることができます。 + 以下は標準配布に組み込まれているハンドラです。 </p> <ul> <li><strong>default-handler</strong>:<code>default_handelr()</code> - $B$r;H$C$F%U%!%$%k$rAw$j$^$9!#(B - $B@EE*$J%3%s%F%s%D$r07$&$H$-$K%G%U%)%k%H$G;HMQ$5$l$k%O%s%I%i$G$9!#(B + を使ってファイルを送ります。 + 静的なコンテンツを扱うときにデフォルトで使用されるハンドラです。 (<module>core</module>)</li> <li><strong>send-as-is</strong>: - HTTP $B%X%C%@$N$"$k%U%!%$%k$r$=$N$^$^Aw$j$^$9!#(B + HTTP ヘッダのあるファイルをそのまま送ります。 (<module>mod_asis</module>)</li> - <li><strong>cgi-script</strong>: $B%U%!%$%k$r(B CGI - $B%9%/%j%W%H$H$7$F07$$$^$9!#(B + <li><strong>cgi-script</strong>: ファイルを CGI + スクリプトとして扱います。 (<module>mod_cgi</module>)</li> <li><strong>imap-file</strong>: - $B%$%a!<%8%^%C%W$N%k!<%k%U%!%$%k$H$7$F2r@O$7$^$9!#(B + イメージマップのルールファイルとして解析します。 (<module>mod_imagemap</module>)</li> - <li><strong>server-info</strong>: $B%5!<%P$N@_Dj>pJs$r<hF@$7$^$9!#(B + <li><strong>server-info</strong>: サーバの設定情報を取得します。 (<module>mod_info</module>)</li> - <li><strong>server-status</strong>: $B%5!<%P$N>uBVJs9p$r<hF@$7$^$9!#(B + <li><strong>server-status</strong>: サーバの状態報告を取得します。 (<module>mod_status</module>)</li> <li><strong>type-map</strong>: - $B%3%s%F%s%H%M%4%7%(!<%7%g%s$N$?$a$N%?%$%W%^%C%W$H$7$F2r@O$7$^$9!#(B + コンテントネゴシエーションのためのタイプマップとして解析します。 (<module>mod_negotiation</module>)</li> </ul> </section> <section id="examples"> - <title>$BNc(B</title> + <title>例</title> <section id="example1"> - <title>CGI $B%9%/%j%W%H$rMQ$$$F@EE*$J%3%s%F%s%D$rJQ99$9$k(B</title> + <title>CGI スクリプトを用いて静的なコンテンツを変更する</title> - <p>$B0J2<$N%G%#%l%/%F%#%V$K$h$C$F!"3HD%;R$,(B <code>html</code> - $B$G$"$k%U%!%$%k$O(B <code>footer.pl</code> - CGI $B%9%/%j%W%H$r5/F0$9$k$h$&$K$J$j$^$9!#(B</p> + <p>以下のディレクティブによって、拡張子が <code>html</code> + であるファイルは <code>footer.pl</code> + CGI スクリプトを起動するようになります。</p> <example> Action add-footer /cgi-bin/footer.pl<br/> AddHandler add-footer .html </example> - <p>CGI $B%9%/%j%W%H$O4uK>$N=$@5$dDI2C$r9T$J$C$F!"85!9MW5a$5$l$?J8=q(B - ($B4D6-JQ?t(B <code>PATH_TRANSLATED</code> - $B$G;X$5$l$F$$$^$9(B) $B$rAw$k@UG$$,$"$j$^$9!#(B + <p>CGI スクリプトは希望の修正や追加を行なって、元々要求された文書 + (環境変数 <code>PATH_TRANSLATED</code> + で指されています) を送る責任があります。 </p> </section> <section id="example2"> - <title>HTTP $B%X%C%@$N$"$k%U%!%$%k(B</title> + <title>HTTP ヘッダのあるファイル</title> - <p>$B0J2<$N%G%#%l%/%F%#%V$O(B <code>send-as-is</code> - $B%O%s%I%i$r;HMQ$9$k$h$&$K;X<($7$^$9!#$3$N%O%s%I%i$O<+J,<+?H$N(B HTTP - $B%X%C%@$r;}$C$F$$$k%U%!%$%k$K;HMQ$5$l$^$9!#$3$3$G$O!"3HD%;R$K4X$o$i$:!"(B - <code>/web/htdocs/asis</code> $B%G%#%l%/%H%j$K$"$kA4$F$N%U%!%$%k$O(B - <code>send-as-is</code> $B%O%s%I%i$K$h$C$F07$o$l$^$9!#(B</p> + <p>以下のディレクティブは <code>send-as-is</code> + ハンドラを使用するように指示します。このハンドラは自分自身の HTTP + ヘッダを持っているファイルに使用されます。ここでは、拡張子に関わらず、 + <code>/web/htdocs/asis</code> ディレクトリにある全てのファイルは + <code>send-as-is</code> ハンドラによって扱われます。</p> <example> <Directory /web/htdocs/asis><br/> @@ -139,24 +139,24 @@ </section> </section> <section id="programmer"> - <title>$B%W%m%0%i%^8~$1$N%a%b(B</title> + <title>プログラマ向けのメモ</title> - <p>$B%O%s%I%i$N5!G=$r<BAu$9$k$?$a$K!"MxMQ$9$k$HJXMx$+$b$7$l$J$$$b$N$,(B + <p>ハンドラの機能を実装するために、利用すると便利かもしれないものが <a href="developer/API.html">Apache API</a> - $B$KDI2C$5$l$^$7$?!#>\$7$/8@$&$H!"(B<code>request_rec</code> - $B9=B$BN$K?7$7$$%l%3!<%I$,DI2C$5$l$?$H$$$&$3$H$G$9!#(B</p> + に追加されました。詳しく言うと、<code>request_rec</code> + 構造体に新しいレコードが追加されたということです。</p> <example> char *handler </example> - <p>$B$b$7%b%8%e!<%k$,%O%s%I%i$K4X$o$j$?$$>l9g!"(B - $B$d$i$J$1$l$P$J$i$J$$$3$H$O!"%j%/%(%9%H$,(B <code>invoke_handler</code> - $B%9%F!<%8$KC#$9$k0JA0$K(B <code>r->handler</code> - $B$r@_Dj$9$k$3$H$@$1$G$9!#%O%s%I%i$O%3%s%F%s%H%?%$%W$NBe$o$j$K(B - $B%O%s%I%iL>$r;H$&$h$&$K$J$C$F$$$k$3$H0J30$O!"0JA0$HF1$8$h$&$K<BAu$5$l$F$$$^$9!#(B - $BI,$:MW5a$5$l$F$$$k$o$1$G$O$"$j$^$;$s$,!"%a%G%#%"%?%$%W(B - $B$NL>A06u4V$r?/$5$J$$$h$&$K!"%O%s%I%i$NL>A0$K$O%9%i%C%7%e$r4^$^$J$$!"(B - $B%@%C%7%e(B ($BLuCm(B: "-") $B$GJ,N%$5$l$?L>A0$rIU$1$k=,47$K$J$C$F$$$^$9!#(B</p> + <p>もしモジュールがハンドラに関わりたい場合、 + やらなければならないことは、リクエストが <code>invoke_handler</code> + ステージに達する以前に <code>r->handler</code> + を設定することだけです。ハンドラはコンテントタイプの代わりに + ハンドラ名を使うようになっていること以外は、以前と同じように実装されています。 + 必ず要求されているわけではありませんが、メディアタイプ + の名前空間を侵さないように、ハンドラの名前にはスラッシュを含まない、 + ダッシュ (訳注: "-") で分離された名前を付ける習慣になっています。</p> </section> </manualpage> diff --git a/docs/manual/howto/auth.xml.ja b/docs/manual/howto/auth.xml.ja index f6fed1b1f2..e8c0cd03f2 100644 --- a/docs/manual/howto/auth.xml.ja +++ b/docs/manual/howto/auth.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 479777:645246 (outdated) --> @@ -21,32 +21,32 @@ --> <manualpage metafile="auth.xml.meta"> -<parentdocument href="./">How-To / $B%A%e!<%H%j%"%k(B</parentdocument> +<parentdocument href="./">How-To / チュートリアル</parentdocument> -<title>$BG'>Z!">5G'!"%"%/%;%9@)8f(B</title> +<title>認証、承認、アクセス制御</title> <summary> - <p>$B!VG'>Z!W$H$O!"C/$+$,<+J,$OC/$G$"$k$+$r<gD%$7$?>l9g$K!"(B - $B$=$l$r3NG'$9$k$?$a$NA42aDx$r;X$7$^$9!#!V>5G'!W$H$O!"(B - $BC/$+$,9T$-$?$$>l=j$K9T$1$k$h$&$K!"$"$k$$$OM_$7$$>pJs$r(B - $BF@$k$3$H$,$G$-$k$h$&$K$9$k$?$a$NA42aDx$r;X$7$^$9!#(B</p> + <p>「認証」とは、誰かが自分は誰であるかを主張した場合に、 + それを確認するための全過程を指します。「承認」とは、 + 誰かが行きたい場所に行けるように、あるいは欲しい情報を + 得ることができるようにするための全過程を指します。</p> </summary> -<section id="related"><title>$B4XO"$9$k%b%8%e!<%k$H%G%#%l%/%F%#%V(B</title> -<p>$BG'>Z$H>5G'$N=hM}$K4XO"$9$k(B 3 $B<oN`$N%b%8%e!<%k$,$"$j$^$9!#(B -$B$=$l$>$l>/$J$/$H$b$R$H$D$:$DI,MW$G$9!#(B</p> +<section id="related"><title>関連するモジュールとディレクティブ</title> +<p>認証と承認の処理に関連する 3 種類のモジュールがあります。 +それぞれ少なくともひとつずつ必要です。</p> <ul> - <li>$BG'>Z$N%?%$%W(B ( - <directive module="core">AuthType</directive> $B%G%#%l%/%F%#%V;2>H(B) + <li>認証のタイプ ( + <directive module="core">AuthType</directive> ディレクティブ参照) <ul> <li><module>mod_auth_basic</module></li> <li><module>mod_auth_digest</module></li> </ul> </li> - <li>$BG'>Z%W%m%P%$%@(B ( + <li>認証プロバイダ ( <directive module="mod_auth_basic">AuthBasicProvider</directive>, - <directive module="mod_auth_digest">AuthDigestProvider</directive> $B%G%#%l%/%F%#%V;2>H(B) + <directive module="mod_auth_digest">AuthDigestProvider</directive> ディレクティブ参照) <ul> <li><module>mod_authn_anon</module></li> @@ -57,8 +57,8 @@ <li><module>mod_authnz_ldap</module></li> </ul> </li> - <li>$B>5G'(B ( - <directive module="core">Require</directive> $B%G%#%l%/%F%#%V;2>H(B) + <li>承認 ( + <directive module="core">Require</directive> ディレクティブ参照) <ul> <li><module>mod_authnz_ldap</module></li> <li><module>mod_authz_dbm</module></li> @@ -72,114 +72,114 @@ </li> </ul> - <p>$B$3$l$i$N%b%8%e!<%k$K2C$($F!"(B<module>mod_authn_core</module> - $B$H(B <module>mod_authz_core</module> $B$,$"$j$^$9!#(B - $B$3$N(B 2 $B$D$N%b%8%e!<%k$OG'>Z%b%8%e!<%k$K6&DL$J%3%"%G%#%l%/%F%#%V$r(B - $B<BAu$7$F$$$^$9!#(B</p> + <p>これらのモジュールに加えて、<module>mod_authn_core</module> + と <module>mod_authz_core</module> があります。 + この 2 つのモジュールは認証モジュールに共通なコアディレクティブを + 実装しています。</p> - <p><module>mod_authnz_ldap</module> $B$OG'>Z%W%m%P%$%@$H>5G'%W%m%P%$%@$N(B - $BN>J}$N5!G=$r;}$C$F$$$^$9!#(B - <module>mod_authz_host</module> $B$O%[%9%HL>!"(BIP $B%"%I%l%9$d(B - $B%j%/%(%9%H$NFCD'$K4p$E$$$?%"%/%;%9@)8f$r9T$$$^$9$,!"(B - $BG'>Z%W%m%P%$%@$N%7%9%F%`$N0lIt$G$O$"$j$^$;$s!#(B - mod_access $B$H$N8eJ}8_49@-$N$?$a!"(B - $B?7$7$$%b%8%e!<%k$N(B <module>mod_access_compat</module> $B$,$"$j$^$9!#(B</p> + <p><module>mod_authnz_ldap</module> は認証プロバイダと承認プロバイダの + 両方の機能を持っています。 + <module>mod_authz_host</module> はホスト名、IP アドレスや + リクエストの特徴に基づいたアクセス制御を行いますが、 + 認証プロバイダのシステムの一部ではありません。 + mod_access との後方互換性のため、 + 新しいモジュールの <module>mod_access_compat</module> があります。</p> - <p>$BMM!9$J%"%/%;%9@)8f$N9T$J$$J}$K$D$$$F$O!"(B - <a href="access.html">$B%"%/%;%9@)8f(B</a>$B$NJ}K!$r$4Mw$/$@$5$$!#(B</p> + <p>様々なアクセス制御の行ない方については、 + <a href="access.html">アクセス制御</a>の方法をご覧ください。</p> </section> -<section id="introduction"><title>$B$O$8$a$K(B</title> - <p>$B$b$75!L)$N>pJs$d!"$4$/$4$/>/?t%0%k!<%W$N?M8~$1$N>pJs$r(B - $B%&%'%V%5%$%H$KCV$/$N$G$"$l$P!"$3$NJ8=q$K=q$+$l$F$$$k(B - $B%F%/%K%C%/$r;H$&$3$H$G!"$=$N%Z!<%8$r8+$F$$$k?M$?$A$,(B - $BK>$_$N?M$?$A$G$"$k$3$H$r3N<B$K$G$-$k$G$7$g$&!#(B</p> +<section id="introduction"><title>はじめに</title> + <p>もし機密の情報や、ごくごく少数グループの人向けの情報を + ウェブサイトに置くのであれば、この文書に書かれている + テクニックを使うことで、そのページを見ている人たちが + 望みの人たちであることを確実にできるでしょう。</p> - <p>$B$3$NJ8=q$G$O!"B?$/$N?M$,:NMQ$9$k$G$"$m$&!"(B - $B%&%'%V%5%$%H$N0lItJ,$rJ]8n$9$k!V0lHLE*$J!W(B - $BJ}K!$K$D$$$F%+%P!<$7$F$$$^$9!#(B</p> + <p>この文書では、多くの人が採用するであろう、 + ウェブサイトの一部分を保護する「一般的な」 + 方法についてカバーしています。</p> - <note><title>$BCm0U(B</title> - <p>$B%G!<%?$,K\Ev$K5!L)$J$N$G$"$l$P!"G'>Z$K2C$($F$5$i$K(B - <module>mod_ssl</module> $B$r;H$&$HNI$$$G$7$g$&!#(B</p> + <note><title>注意</title> + <p>データが本当に機密なのであれば、認証に加えてさらに + <module>mod_ssl</module> を使うと良いでしょう。</p> </note> </section> -<section id="theprerequisites"><title>$B=`Hw(B</title> - <p>$B$3$NJ8=q$G<h$j07$o$l$k%G%#%l%/%F%#%V$O!"(B - $B%a%$%s%5!<%P@_Dj%U%!%$%k(B ($BIaDL$O(B +<section id="theprerequisites"><title>準備</title> + <p>この文書で取り扱われるディレクティブは、 + メインサーバ設定ファイル (普通は <directive module="core" type="section">Directory</directive> - $B%;%/%7%g%sCf(B) $B$+!"$"$k$$$O%G%#%l%/%H%jKh$N@_Dj%U%!%$%k(B - (<code>.htaccess</code> $B%U%!%$%k(B) $B$+$GMQ$$$^$9!#(B</p> + セクション中) か、あるいはディレクトリ毎の設定ファイル + (<code>.htaccess</code> ファイル) かで用います。</p> - <p><code>.htaccess</code> $B%U%!%$%k$rMQ$$$k$N$G$"$l$P!"(B - $B$3$l$i$N%U%!%$%k$KG'>ZMQ$N%G%#%l%/%F%#%V$rCV$1$k$h$&$K(B - $B%5!<%P$N@_Dj$r$7$J$$$H$$$1$J$$$G$7$g$&!#$3$l$O(B + <p><code>.htaccess</code> ファイルを用いるのであれば、 + これらのファイルに認証用のディレクティブを置けるように + サーバの設定をしないといけないでしょう。これは <directive module="core">AllowOverride</directive> - $B%G%#%l%/%F%#%V$G2DG=$K$J$j$^$9!#(B + ディレクティブで可能になります。 <directive module="core">AllowOverride</directive> - $B%G%#%l%/%F%#%V$G$O!"%G%#%l%/%H%jKh$N@_Dj%U%!%$%kCf$KCV$/$3$H$N$G$-$k(B - $B%G%#%l%/%F%#%V$r!"$b$7$"$l$P!";XDj$7$^$9!#(B</p> + ディレクティブでは、ディレクトリ毎の設定ファイル中に置くことのできる + ディレクティブを、もしあれば、指定します。</p> - <p>$BG'>Z$K$D$$$FOC$r?J$a$F$$$k$N$G!"<!$N$h$&$J(B + <p>認証について話を進めているので、次のような <directive module="core">AllowOverride</directive> - $B%G%#%l%/%F%#%V$,I,MW$K$J$k$G$7$g$&!#(B</p> + ディレクティブが必要になるでしょう。</p> <example> AllowOverride AuthConfig </example> - <p>$B$=$&$G$J$/!"%a%$%s%5!<%P@_Dj%U%!%$%k$NCf$K(B - $BD>@\CV$/$N$G$"$l$P!"EvA3$J$,$i$=$N%U%!%$%k$X$N=q$-9~$_(B - $B8"8B$r;}$C$F$$$J$1$l$P$J$i$J$$$G$7$g$&!#(B</p> - - <p>$B$^$?!"$I$N%U%!%$%k$,$I$3$KJ]B8$5$l$F$$$k$+CN$k$?$a$K!"(B - $B%5!<%P$N%G%#%l%/%H%j9=B$$K$D$$$F>/$7CN$C$F$*$/(B - $BI,MW$,$"$k$G$7$g$&!#(B - $B$3$l$O$=$s$J$KFq$7$/$J$$$N$G!"$3$NJ8=qCf$G(B - $B%G%#%l%/%H%j9=B$$K$D$$$FCN$C$F$*$/I,MW$,$"$k>lLL$G$O!"(B - $BL@$i$+$K$J$k$h$&$K$7$^$9!#(B</p> - - <p><module>mod_authn_core</module> $B$H(B <module>mod_authz_core</module> - $B$NN>J}$,(B httpd $B%P%$%J%j$K@EE*$KAH$_9~$_:Q$_$G$"$k$+!"(Bhttpd.conf - $B@_Dj%U%!%$%k$GF0E*$K%m!<%I$5$l$k$+$7$F!"(Bhttpd $B$KAH$_9~$^$l$F$$$J$1$l$P(B - $B$J$j$^$;$s!#$3$l$i$NFs$D$N%b%8%e!<%k$O!"@_Dj%U%!%$%k$N$J$+$GHs>o$K(B - $B=EMW$G%&%'%V%5!<%P$NG'>Z$H>5G'$G;HMQ$5$l$k%3%"%G%#%l%/%F%#%V$H(B - $B$=$N5!G=$rDs6!$7$F$$$^$9!#(B</p> + <p>そうでなく、メインサーバ設定ファイルの中に + 直接置くのであれば、当然ながらそのファイルへの書き込み + 権限を持っていなければならないでしょう。</p> + + <p>また、どのファイルがどこに保存されているか知るために、 + サーバのディレクトリ構造について少し知っておく + 必要があるでしょう。 + これはそんなに難しくないので、この文書中で + ディレクトリ構造について知っておく必要がある場面では、 + 明らかになるようにします。</p> + + <p><module>mod_authn_core</module> と <module>mod_authz_core</module> + の両方が httpd バイナリに静的に組み込み済みであるか、httpd.conf + 設定ファイルで動的にロードされるかして、httpd に組み込まれていなければ + なりません。これらの二つのモジュールは、設定ファイルのなかで非常に + 重要でウェブサーバの認証と承認で使用されるコアディレクティブと + その機能を提供しています。</p> </section> -<section id="gettingitworking"><title>$BF0:n$5$;$k(B</title> - <p>$B$G$O!"%5!<%P>e$N$"$k%G%#%l%/%H%j$r%Q%9%o!<%I$GJ]8n$9$k(B - $B4pK\<j=g$r<($7$^$9!#(B</p> +<section id="gettingitworking"><title>動作させる</title> + <p>では、サーバ上のあるディレクトリをパスワードで保護する + 基本手順を示します。</p> - <p>$B$^$:$O$8$a$K!"%Q%9%o!<%I%U%!%$%k$r:n$j$^$9!#(B - $B$I$NG'>Z%W%m%P%$%@$r;H$&$+$K$h$C$F!"%Q%9%o!<%I%U%!%$%k@8@.$N<j=g$O(B - $BBg$-$/0[$J$j$^$9!#$3$3$G$NNc$G$O!"<j;O$a$K%F%-%9%H%Q%9%o!<%I%U%!%$%k$r(B - $B;H$$$^$9!#(B</p> + <p>まずはじめに、パスワードファイルを作ります。 + どの認証プロバイダを使うかによって、パスワードファイル生成の手順は + 大きく異なります。ここでの例では、手始めにテキストパスワードファイルを + 使います。</p> - <p>$B$3$N%Q%9%o!<%I%U%!%$%k$O!"%&%'%V$+$i%"%/%;%9$G$-$k>l=j$K(B - $BCV$/$Y$-$G$O$"$j$^$;$s!#B>$N?M$,%Q%9%o!<%I%U%!%$%k$r(B - $B%@%&%s%m!<%I$G$-$J$$$h$&$K$9$k$?$a$G$9!#Nc$($P!"(B - <code>/usr/local/apache/htdocs</code> $B$G%I%-%e%a%s%H$r(B - $BDs6!$7$F$$$k$N$G$"$l$P!"%Q%9%o!<%I%U%!%$%k$O(B + <p>このパスワードファイルは、ウェブからアクセスできる場所に + 置くべきではありません。他の人がパスワードファイルを + ダウンロードできないようにするためです。例えば、 + <code>/usr/local/apache/htdocs</code> でドキュメントを + 提供しているのであれば、パスワードファイルは <code>/usr/local/apache/passwd</code> - $B$J$I$KCV$$$?J}$,NI$$$G$7$g$&!#(B</p> + などに置いた方が良いでしょう。</p> - <p>$B%U%!%$%k$r:n$k$?$a$K$O!"(BApache $BIUB0$N(B <program>htpasswd</program> - $B$r;H$$$^$9!#$3$N%3%^%s%I$O(B Apache $B$r$I$3$K%$%s%9%H!<%k$7$h$&$H$b!"(B - $B%$%s%9%H!<%k%G%#%l%/%H%j$N(B <code>bin</code> - $B%G%#%l%/%H%j0J2<$KCV$+$l$^$9!#%5!<%I%P!<%F%#@=$N%Q%C%1!<%8$G(B - $B%$%s%9%H!<%k$7$?>l9g$O!"<B9T%Q%9$NCf$G8+$D$+$k$G$7$g$&!#(B</p> + <p>ファイルを作るためには、Apache 付属の <program>htpasswd</program> + を使います。このコマンドは Apache をどこにインストールしようとも、 + インストールディレクトリの <code>bin</code> + ディレクトリ以下に置かれます。サードバーティ製のパッケージで + インストールした場合は、実行パスの中で見つかるでしょう。</p> - <p>$B%U%!%$%k$r:n$k$K$O!"<!$N$h$&$K%?%$%W$7$F$/$@$5$$!#(B</p> + <p>ファイルを作るには、次のようにタイプしてください。</p> <example> htpasswd -c /usr/local/apache/passwd/passwords rbowen </example> - <p><program>htpasswd</program> $B$O!"%Q%9%o!<%I$rMW5a$7!"$=$N8e(B - $B3NG'$N$?$a$K$b$&0lEYF~NO$9$k$h$&$KMW5a$7$F$-$^$9!#(B</p> + <p><program>htpasswd</program> は、パスワードを要求し、その後 + 確認のためにもう一度入力するように要求してきます。</p> <example> # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br /> @@ -188,23 +188,23 @@ Adding password for user rbowen </example> - <p>$B$b$7(B <program>htpasswd</program> $B$,%Q%9$NCf$KF~$C$F$$$J$$>l9g$O!"(B - $B$b$A$m$s!"<B9T$9$k$?$a$K%W%m%0%i%`$^$G$N%U%k%Q%9$r(B - $B%?%$%W$9$kI,MW$,$"$j$^$9!#%G%U%)%k%H$N%$%s%9%H!<%k>uBV$G$"$l$P!"(B + <p>もし <program>htpasswd</program> がパスの中に入っていない場合は、 + もちろん、実行するためにプログラムまでのフルパスを + タイプする必要があります。デフォルトのインストール状態であれば、 <code>/usr/local/apache/bin/htpasswd</code> - $B$K%W%m%0%i%`$,CV$+$l$F$$$^$9!#(B</p> + にプログラムが置かれています。</p> - <p>$B<!$K!"%5!<%P$,%Q%9%o!<%I$rMW5a$9$k$h$&$K@_Dj$7$F!"(B - $B$I$N%f!<%6$,%"%/%;%9$r5v$5$l$F$$$k$+$r%5!<%P$KCN$i$;$J$1$l$P(B - $B$J$j$^$;$s!#(B <code>httpd.conf</code> $B$rJT=8$9$k$+(B - <code>.htaccess</code> $B%U%!%$%k$r;HMQ$9$k$+$G(B - $B@_Dj$7$^$9!#Nc$($P!"%G%#%l%/%H%j(B + <p>次に、サーバがパスワードを要求するように設定して、 + どのユーザがアクセスを許されているかをサーバに知らせなければ + なりません。 <code>httpd.conf</code> を編集するか + <code>.htaccess</code> ファイルを使用するかで + 設定します。例えば、ディレクトリ <code>/usr/local/apache/htdocs/secret</code> - $B$rJ]8n$7$?$$>l9g$O!"(B + を保護したい場合は、 <code>/usr/local/apache/htdocs/secret/.htaccess</code> - $B$+(B httpd.conf $BCf$N(B <Directory - /usr/local/apache/htdocs/secret> $B%;%/%7%g%s$K(B - $BG[CV$7$F!"<!$N%G%#%l%/%F%#%V$r;H$&$3$H$,$G$-$^$9!#(B</p> + か httpd.conf 中の <Directory + /usr/local/apache/htdocs/secret> セクションに + 配置して、次のディレクティブを使うことができます。</p> <example> AuthType Basic<br /> @@ -215,108 +215,108 @@ Require user rbowen </example> - <p>$B8D!9$N%G%#%l%/%F%#%V$K$D$$$F8+$F$_$^$7$g$&!#(B + <p>個々のディレクティブについて見てみましょう。 <directive module="core">AuthType</directive> - $B%G%#%l%/%F%#%V$O$I$&$$$&G'>ZJ}K!$G%f!<%6$NG'>Z$r9T$&$+$r(B - $BA*Br$7$^$9!#:G$b0lHLE*$JJ}K!$O(B <code>Basic</code> - $B$G!"$3$l$O(B <module>mod_auth_basic</module> - $B$G<BAu$5$l$F$$$^$9!#$7$+$7$J$,$i!"(B - $B$3$l$O5$$rIU$1$k$Y$-=EMW$J%]%$%s%H$J$N$G$9$,!"(B - Basic $BG'>Z$O%/%i%$%"%s%H$+$i%5!<%P$X!"(B - $B%Q%9%o!<%I$r0E9f2=$;$:$KAw$j$^$9!#$G$9$+$i$3$NJ}K!$O!"(B - <module>mod_ssl</module> $B$HAH$_9g$o$;$J$$>uBV$G$O!"(B - $BFC$K5!L)@-$N9b$$%G!<%?$KBP$7$F$OMQ$$$k$Y$-$G$O(B - $B$"$j$^$;$s!#(B Apache $B$G$O$b$&0l$DJL$NG'>ZJ}K!(B: - <code>AuthType Digest</code> $B$r%5%]!<%H$7$F$$$^$9!#(B - $B$3$NJ}K!$O(B <module>mod_auth_digest</module> - $B$G<BAu$5$l$F$$$F!"$b$C$H0BA4$G$9!#(B - $B:G6a$N%/%i%$%"%s%H$O(B Digest - $BG'>Z$r%5%]!<%H$7$F$$$k$h$&$G$9!#(B</p> + ディレクティブはどういう認証方法でユーザの認証を行うかを + 選択します。最も一般的な方法は <code>Basic</code> + で、これは <module>mod_auth_basic</module> + で実装されています。しかしながら、 + これは気を付けるべき重要なポイントなのですが、 + Basic 認証はクライアントからサーバへ、 + パスワードを暗号化せずに送ります。ですからこの方法は、 + <module>mod_ssl</module> と組み合わせない状態では、 + 特に機密性の高いデータに対しては用いるべきでは + ありません。 Apache ではもう一つ別の認証方法: + <code>AuthType Digest</code> をサポートしています。 + この方法は <module>mod_auth_digest</module> + で実装されていて、もっと安全です。 + 最近のクライアントは Digest + 認証をサポートしているようです。</p> <p><directive module="core">AuthName</directive> - $B%G%#%l%/%F%#%V$G$O!"G'>Z$K;H$&(B <dfn>Realm</dfn> ($BLuCm(B: $BNN0h(B) - $B$r@_Dj$7$^$9!#(BRealm $B$OBg$-$/J,$1$FFs$D$N5!G=$rDs6!$7$^$9!#(B - $B0l$DL\$O!"%/%i%$%"%s%H$,%Q%9%o!<%I%@%$%"%m%0%\%C%/%9$N(B - $B0lIt$H$7$F%f!<%6$K$3$N>pJs$r$h$/Ds<($9$k!"$H$$$&$b$N$G$9!#(B - $BFs$DL\$K$O!"%/%i%$%"%s%H$,M?$($i$l$?G'>ZNN0h$KBP$7$F$I$N%Q%9%o!<%I$r(B - $BAw?.$9$l$PNI$$$N$+$r7hDj$9$k$?$a$K;H$o$l$k!"$H$$$&5!G=$G$9!#(B</p> - - <p>$BNc$($P!"(B<code>"Restricted Files"</code> $BNN0hCf$G(B - $B0lEYG'>Z$5$l$l$P!"F10l%5!<%P>e$G(B <code>"Restricted Files"</code> - Realm $B$H$7$F%^!<%/$5$l$?$I$s$JNN0h$G$b!"%/%i%$%"%s%H$O(B - $B<+F0E*$KF1$8%Q%9%o!<%I$r;H$*$&$H;n$_$^$9!#(B - $B$3$N$*$+$2$G!"J#?t$N@)8BNN0h$KF1$8(B realm $B$r6&M-$5$;$F!"(B - $B%f!<%6$,%Q%9%o!<%I$r2?EY$bMW5a$5$l$k;vBV$r(B - $BKI$0$3$H$,$G$-$^$9!#$b$A$m$s!"%;%-%e%j%F%#>e$NM}M3$+$i!"(B - $B%5!<%P$N%[%9%HL>$,JQ$o$l$P$$$D$G$bI,$:!"(B - $B%/%i%$%"%s%H$O:F$S%Q%9%o!<%I$r?R$M$kI,MW$,$"$j$^$9!#(B</p> + ディレクティブでは、認証に使う <dfn>Realm</dfn> (訳注: 領域) + を設定します。Realm は大きく分けて二つの機能を提供します。 + 一つ目は、クライアントがパスワードダイアログボックスの + 一部としてユーザにこの情報をよく提示する、というものです。 + 二つ目には、クライアントが与えられた認証領域に対してどのパスワードを + 送信すれば良いのかを決定するために使われる、という機能です。</p> + + <p>例えば、<code>"Restricted Files"</code> 領域中で + 一度認証されれば、同一サーバ上で <code>"Restricted Files"</code> + Realm としてマークされたどんな領域でも、クライアントは + 自動的に同じパスワードを使おうと試みます。 + このおかげで、複数の制限領域に同じ realm を共有させて、 + ユーザがパスワードを何度も要求される事態を + 防ぐことができます。もちろん、セキュリティ上の理由から、 + サーバのホスト名が変わればいつでも必ず、 + クライアントは再びパスワードを尋ねる必要があります。</p> <p><directive module="mod_auth_basic">AuthBasicProvider</directive> - $B$O%G%U%)%k%HCM$,(B <code>file</code> $B$J$N$G!":#2s$N>l9g$OL5$/$F$b9=$$$^$;$s!#(B - <module>mod_authn_dbm</module> $B$d(B <module>mod_authn_dbd</module> - $B$H$$$C$?B>$N%b%8%e!<%k$r;H$&>l9g$K$OI,MW$K$J$j$^$9!#(B + はデフォルト値が <code>file</code> なので、今回の場合は無くても構いません。 + <module>mod_authn_dbm</module> や <module>mod_authn_dbd</module> + といった他のモジュールを使う場合には必要になります。 </p> <p><directive module="mod_authn_file">AuthUserFile</directive> - $B%G%#%l%/%F%#%V$O(B <program>htpasswd</program> $B$G:n$C$?(B - $B%Q%9%o!<%I%U%!%$%k$X$N%Q%9$r@_Dj$7$^$9!#(B - $B%f!<%6?t$,B?$$>l9g$O!"%j%/%(%9%HKh$N%f!<%6$NG'>Z$N$?$a$N(B - $B%W%l!<%s%F%-%9%H$NC5:w$,Hs>o$KCY$/$J$k$3$H$,$"$j$^$9!#(B - Apache $B$G$O%f!<%6>pJs$r9bB.$J%G!<%?%Y!<%9%U%!%$%k$K(B - $BJ]4I$9$k$3$H$b$G$-$^$9!#(B - <module>mod_authn_dbm</module> $B%b%8%e!<%k$,(B + ディレクティブは <program>htpasswd</program> で作った + パスワードファイルへのパスを設定します。 + ユーザ数が多い場合は、リクエスト毎のユーザの認証のための + プレーンテキストの探索が非常に遅くなることがあります。 + Apache ではユーザ情報を高速なデータベースファイルに + 保管することもできます。 + <module>mod_authn_dbm</module> モジュールが <directive module="mod_authn_dbm">AuthDBMUserFile</directive> - $B%G%#%l%/%F%#%V$rDs6!$7$^$9!#$3$l$i$N%U%!%$%k$O(B <program >dbmmanage</program> - $B%W%m%0%i%`$G:n@.$7$?$jA`:n$7$?$j$G$-$^$9!#(B + ディレクティブを提供します。これらのファイルは <program >dbmmanage</program> + プログラムで作成したり操作したりできます。 <a href="http://modules.apache.org/">Apache - $B%b%8%e!<%k%G!<%?%Y!<%9(B</a>$BCf$K$"$k%5!<%I%Q!<%F%#!<@=$N(B - $B%b%8%e!<%k$G!"$=$NB>B?$/$N%?%$%W$NG'>Z%*%W%7%g%s$,(B - $BMxMQ2DG=$G$9!#(B</p> - - <p>$B:G8e$K!"(B<directive module="core">Require</directive> - $B%G%#%l%/%F%#%V$,!"%5!<%P$N$3$NNN0h$K%"%/%;%9$G$-$k%f!<%6$r(B - $B;XDj$9$k$3$H$K$h$C$F!"%W%m%;%9$N>5G'ItJ,$rDs6!$7$^$9!#(B - $B<!$N%;%/%7%g%s$G$O!"(B<directive module="core">Require</directive> - $B%G%#%l%/%F%#%V$NMM!9$JMQK!$K$D$$$F=R$Y$^$9!#(B</p> + モジュールデータベース</a>中にあるサードパーティー製の + モジュールで、その他多くのタイプの認証オプションが + 利用可能です。</p> + + <p>最後に、<directive module="core">Require</directive> + ディレクティブが、サーバのこの領域にアクセスできるユーザを + 指定することによって、プロセスの承認部分を提供します。 + 次のセクションでは、<directive module="core">Require</directive> + ディレクティブの様々な用法について述べます。</p> </section> <section id="lettingmorethanonepersonin"><title> -$BJ#?t$N?M$,F~$l$k$h$&$K$9$k(B</title> - <p>$B>e5-$N%G%#%l%/%F%#%V$O!"$?$@0l?M(B ($B6qBNE*$K$O%f!<%6L>(B - <code>rbowen</code> $B$NC/$+(B) $B$,%G%#%l%/%H%j$K(B - $BF~$l$k$h$&$K$7$^$9!#B?$/$N>l9g$O!"J#?t$N?M$,(B - $BF~$l$k$h$&$K$7$?$$$G$7$g$&!#$3$3$G(B +複数の人が入れるようにする</title> + <p>上記のディレクティブは、ただ一人 (具体的にはユーザ名 + <code>rbowen</code> の誰か) がディレクトリに + 入れるようにします。多くの場合は、複数の人が + 入れるようにしたいでしょう。ここで <directive module="mod_authz_groupfile">AuthGroupFile</directive> - $B$NEP>l$G$9!#(B</p> + の登場です。</p> - <p>$B$b$7J#?t$N?M$,F~$l$k$h$&$K$7$?$$$N$G$"$l$P!"(B - $B%0%k!<%W$KB0$9$k%f!<%6$N0lMw$NF~$C$F$$$k!"%0%k!<%WL>$N$D$$$?(B - $B%0%k!<%W%U%!%$%k$r:n$kI,MW$,$"$j$^$9!#$3$N%U%!%$%k$N(B - $B=q<0$O$-$o$a$FC1=c$G!"$*9%$_$N%(%G%#%?$G@8@.$G$-$^$9!#(B - $B%U%!%$%k$NCf?H$O<!$N$h$&$J$b$N$G$9!#(B</p> + <p>もし複数の人が入れるようにしたいのであれば、 + グループに属するユーザの一覧の入っている、グループ名のついた + グループファイルを作る必要があります。このファイルの + 書式はきわめて単純で、お好みのエディタで生成できます。 + ファイルの中身は次のようなものです。</p> <example> GroupName: rbowen dpitts sungo rshersey </example> - <p>$B0l9T$K%9%Z!<%96h@Z$j$G!"%0%k!<%W$K=jB0$9$k%a%s%P!<$N(B - $B0lMw$r$J$i$Y$k$@$1$G$9!#(B</p> + <p>一行にスペース区切りで、グループに所属するメンバーの + 一覧をならべるだけです。</p> - <p>$B4{$KB8:_$9$k%Q%9%o!<%I%U%!%$%k$K%f!<%6$r2C$($k>l9g$O!"(B - $B<!$N$h$&$K%?%$%W$7$F$/$@$5$$!#(B</p> + <p>既に存在するパスワードファイルにユーザを加える場合は、 + 次のようにタイプしてください。</p> <example> htpasswd /usr/local/apache/passwd/passwords dpitts </example> - <p>$B0JA0$HF1$81~Ez$,JV$5$l$^$9$,!"?7$7$$%U%!%$%k$r(B - $B:n$k$N$G$O$J$/!"4{$K$"$k%U%!%$%k$KDI2C$5$l$F$$$^$9!#(B - ($B?7$7$$%Q%9%o!<%I%U%!%$%k$r:n$k$K$O(B <code>-c</code> - $B$r;H$$$^$9!#(B)</p> + <p>以前と同じ応答が返されますが、新しいファイルを + 作るのではなく、既にあるファイルに追加されています。 + (新しいパスワードファイルを作るには <code>-c</code> + を使います。)</p> - <p>$B$3$3$G<!$N$h$&$K$7$F(B <code>.htaccess</code> $B%U%!%$%k$r(B - $B=$@5$9$kI,MW$,$"$j$^$9!#(B</p> + <p>ここで次のようにして <code>.htaccess</code> ファイルを + 修正する必要があります。</p> <example> AuthType Basic<br /> @@ -328,64 +328,64 @@ Require group GroupName </example> - <p>$B$3$l$G!"%0%k!<%W(B <code>GroupName</code> $B$K%j%9%H$5$l$F$$$F!"(B - <code>password</code> $B%U%!%$%k$K%(%s%H%j$,$"$k?M$O!"(B - $B@5$7$$%Q%9%o!<%I$r%?%$%W$9$l$PF~$k$3$H$,$G$-$k$G$7$g$&!#(B</p> + <p>これで、グループ <code>GroupName</code> にリストされていて、 + <code>password</code> ファイルにエントリがある人は、 + 正しいパスワードをタイプすれば入ることができるでしょう。</p> - <p>$B$b$C$HFCDj$;$:$KJ#?t$N%f!<%6$,F~$l$k$h$&$K$9$k!"(B - $B$b$&0l$D$NJ}K!$,$"$j$^$9!#%0%k!<%W%U%!%$%k$r:n$k$N$G$O$J$/!"(B - $B<!$N%G%#%l%/%F%#%V$r;H$($P$G$-$^$9!#(B</p> + <p>もっと特定せずに複数のユーザが入れるようにする、 + もう一つの方法があります。グループファイルを作るのではなく、 + 次のディレクティブを使えばできます。</p> <example> Require valid-user </example> - <p><code>require user rbowen</code> $B9T$G$J$/!">e5-$r;H$&$H!"(B - $B%Q%9%o!<%I%U%!%$%k$K%j%9%H$5$l$F$$$k?M$G$"$l$PC/$G$b(B - $B5v2D$5$l$^$9!#(B - $BC1$K%Q%9%o!<%I%U%!%$%k$r%0%k!<%WKh$KJ,$1$F$*$/$3$H$G!"(B - $B%0%k!<%W$N$h$&$J?6$kIq$$$r$5$;$k$3$H$b$G$-$^$9!#(B - $B$3$N%"%W%m!<%A$NMxE@$O!"(BApache $B$OFs$D$G$O$J$/!"(B - $B$?$@0l$D$N%U%!%$%k$@$1$r8!::$9$l$P$h$$$H$$$&E@$G$9!#(B - $B7gE@$O!"$?$/$5$s$N%Q%9%o!<%I%U%!%$%k$r4IM}$7$F!"$=$NCf$+$i(B + <p><code>require user rbowen</code> 行でなく、上記を使うと、 + パスワードファイルにリストされている人であれば誰でも + 許可されます。 + 単にパスワードファイルをグループ毎に分けておくことで、 + グループのような振る舞いをさせることもできます。 + このアプローチの利点は、Apache は二つではなく、 + ただ一つのファイルだけを検査すればよいという点です。 + 欠点は、たくさんのパスワードファイルを管理して、その中から <directive module="mod_authn_file">AuthUserFile</directive> - $B%G%#%l%/%F%#%V$K@5$7$$%U%!%$%k$r;2>H$5$;$J$1$l$P$J$i$J$$E@$G$9!#(B</p> + ディレクティブに正しいファイルを参照させなければならない点です。</p> </section> -<section id="possibleproblems"><title>$B5/$3$j$($kLdBj(B</title> - <p>Basic $BG'>Z$,;XDj$5$l$F$$$k>l9g$O!"(B - $B%5!<%P$K%I%-%e%a%s%H$r%j%/%(%9%H$9$kEY$K(B - $B%f!<%6L>$H%Q%9%o!<%I$r8!::$7$J$1$l$P$J$j$^$;$s!#(B - $B$3$l$OF1$8%Z!<%8!"%Z!<%8$K$"$kA4$F$N2hA|$r(B - $B%j%m!<%I$9$k>l9g$G$"$C$F$b3:Ev$7$^$9(B - ($B$b$72hA|$bJ]8n$5$l$?%G%#%l%/%H%j$+$iMh$k$N$G$"$l$P(B) $B!#(B - $BM=A[$5$l$kDL$j!"$3$l$OF0:n$rB?>/CY$/$7$^$9!#(B - $BCY$/$J$kDxEY$O%Q%9%o!<%I%U%!%$%k$NBg$-$5$HHfNc$7$^$9$,!"(B - $B$3$l$O!"%U%!%$%k$r3+$$$F$"$J$?$NL>A0$rH/8+$9$k$^$G(B - $B%f!<%6L>$N%j%9%H$rFI$^$J$1$l$P$J$i$J$$$+$i$G$9!#(B - $B$=$7$F!"%Z!<%8$,%m!<%I$5$l$kEY$K$3$l$r9T$o$J$1$l$P(B - $B$J$j$^$;$s!#(B</p> - - <p>$B7kO@$H$7$F$O!"0l$D$N%Q%9%o!<%I%U%!%$%k$KCV$/$3$H$N$G$-$k(B - $B%f!<%6?t$K$O<B<AE*$J8B3&$,$"$j$^$9!#(B - $B$3$N8B3&$O%5!<%P%^%7%s$N@-G=$K0MB8$7$FJQ$o$j$^$9$,!"(B - $B?tI4$N%(%s%H%j$r1[$($?$"$?$j$+$iB.EYDc2<$,8+$i$l$k$HM=4|$5$l$F$$$^$9!#(B - $B$=$N;~$OB>$NG'>ZJ}K!$r9MN8$KF~$l$?J}$,NI$$$G$7$g$&!#(B</p> +<section id="possibleproblems"><title>起こりえる問題</title> + <p>Basic 認証が指定されている場合は、 + サーバにドキュメントをリクエストする度に + ユーザ名とパスワードを検査しなければなりません。 + これは同じページ、ページにある全ての画像を + リロードする場合であっても該当します + (もし画像も保護されたディレクトリから来るのであれば) 。 + 予想される通り、これは動作を多少遅くします。 + 遅くなる程度はパスワードファイルの大きさと比例しますが、 + これは、ファイルを開いてあなたの名前を発見するまで + ユーザ名のリストを読まなければならないからです。 + そして、ページがロードされる度にこれを行わなければ + なりません。</p> + + <p>結論としては、一つのパスワードファイルに置くことのできる + ユーザ数には実質的な限界があります。 + この限界はサーバマシンの性能に依存して変わりますが、 + 数百のエントリを越えたあたりから速度低下が見られると予期されています。 + その時は他の認証方法を考慮に入れた方が良いでしょう。</p> </section> -<section id="dbmdbd"><title>$B%Q%9%o!<%I$NJ]B87A<0$rJQ$($k(B</title> +<section id="dbmdbd"><title>パスワードの保存形式を変える</title> - <p>$B%W%l!<%s%F%-%9%H$G%Q%9%o!<%I$rJ]B8$9$kJ}K!$K$O>e5-$NLdBj$,$"$j!"(B - $B%G!<%?%Y!<%9$N$h$&$JJL$N>l=j$K%Q%9%o!<%I$rJ]B8$7$?$$$H;W$&(B - $B$+$b$7$l$^$;$s!#(B</p> + <p>プレーンテキストでパスワードを保存する方法には上記の問題があり、 + データベースのような別の場所にパスワードを保存したいと思う + かもしれません。</p> - <p><module>mod_authn_dbm</module> $B$H(B <module>mod_authn_dbd</module> - $B$r;H$&$H!"$=$l$,$G$-$k$h$&$K$J$j$^$9!#(B + <p><module>mod_authn_dbm</module> と <module>mod_authn_dbd</module> + を使うと、それができるようになります。 <directive module="mod_auth_basic">AuthBasicSource</directive> - $B$G(B file $B$NBe$o$j$K!"(B<code>dbm</code> $B$"$k$$$O(B <code>dbd</code> - $B$r3JG<7A<0$H$7$FA*$Y$^$9!#(B</p> + で file の代わりに、<code>dbm</code> あるいは <code>dbd</code> + を格納形式として選べます。</p> - <p>$B%F%-%9%H%U%!%$%k$NBe$o$j$K(B dbm $B%U%!%$%k$rA*Br$9$k>l9g$O!"$?$H$($P<!$N$h$&$K$7$^$9!#(B</p> + <p>テキストファイルの代わりに dbm ファイルを選択する場合は、たとえば次のようにします。</p> <example> <Directory /www/docs/private><br /> @@ -397,17 +397,17 @@ </Directory> </example> - <p>$B$3$NB>$N%*%W%7%g%s$bB8:_$7$^$9!#>\:Y$K4X$7$F$O(B - <module>mod_authn_dbm</module> $B$N%I%-%e%a%s%H$r$4Mw$/$@$5$$!#(B</p> + <p>この他のオプションも存在します。詳細に関しては + <module>mod_authn_dbm</module> のドキュメントをご覧ください。</p> </section> -<section id="multprovider"><title>$BJ#?t$N%W%m%P%$%@$r;HMQ$9$k(B</title> +<section id="multprovider"><title>複数のプロバイダを使用する</title> - <p>$BG'>Z>5G'%"!<%-%F%/%A%c$K4p$E$$$F$$$k?7$7$$%W%m%P%$%@$r;H$&$H!"(B - $BG'>Z>5G'$NJ}K!$r$R$H$D$KG{$kI,MW$,$J$/$J$j$^$9!#(B - $B$$$/$D$b$N%W%m%P%$%@$rAH$_9g$o$;$F!"<+J,$NK>$_$N5sF0$K$G$-$^$9!#(B - $B<!$NNc$G$O(B file $BG'>Z%W%m%P%$%@$H(B ldap $BG'>Z%W%m%P%$%@$r(B - $BAH$_9g$o$;$F$$$^$9!#(B</p> + <p>認証承認アーキテクチャに基づいている新しいプロバイダを使うと、 + 認証承認の方法をひとつに縛る必要がなくなります。 + いくつものプロバイダを組み合わせて、自分の望みの挙動にできます。 + 次の例では file 認証プロバイダと ldap 認証プロバイダを + 組み合わせています。</p> <example> <Directory /www/docs/private><br /> @@ -419,16 +419,16 @@ Require valid-user </example> - <p>$B$3$NNc$G$O!"$^$:(B file $B%W%m%P%$%@$,%f!<%6G'>Z$r;n$_$^$9!#(B - $BG'>Z$G$-$J$+$C$?>l9g$K$O!"(Bldap $B%W%m%P%$%@$,8F$S=P$5$l$^$9!#(B - $BAH?%$GJ#?t$NG'>Z3JG<J}K!$r;H$C$F$$$k:]$J$I$K!"(B - $B$3$NJ}K!$r;H$C$FG'>Z$N%9%3!<%W$r3HBg$G$-$^$9!#(B - $B$b$&$R$H$D$N%7%J%j%*$O!"$R$H$D$NG'>Z%?%$%W$H0[$J$k>5G'$r(B - $BAH$_9g$o$;$kJ}K!$G$7$g$&!#$?$H$($P!"%Q%9%o!<%I%U%!%$%k$GG'>Z$7$F!"(B - ldap $B%G%#%l%/%H%j$G>5G'$r9T$&$H$$$C$?>l9g$G$9!#(B</p> + <p>この例では、まず file プロバイダがユーザ認証を試みます。 + 認証できなかった場合には、ldap プロバイダが呼び出されます。 + 組織で複数の認証格納方法を使っている際などに、 + この方法を使って認証のスコープを拡大できます。 + もうひとつのシナリオは、ひとつの認証タイプと異なる承認を + 組み合わせる方法でしょう。たとえば、パスワードファイルで認証して、 + ldap ディレクトリで承認を行うといった場合です。</p> - <p>$BG'>Z%W%m%P%$%@$rJ#?t<BAu$G$-$k$h$&$K!">5G'J}K!$bJ#?t;HMQ$G$-$^$9!#(B - $B$3$NNc$G$O(B file $B%0%k!<%W>5G'$H(B ldap $B%0%k!<%W>5G'$r;H$C$F$$$^$9!#(B</p> + <p>認証プロバイダを複数実装できるように、承認方法も複数使用できます。 + この例では file グループ承認と ldap グループ承認を使っています。</p> <example> <Directory /www/docs/private><br /> @@ -442,44 +442,44 @@ Require ldap-group cn=mygroup,o=yourorg </example> - <p>$B>5G'$r$h$j:Y$+$/@)8f$7$?$$>l9g$O!"(B - <directive module="mod_authz_core"><SatisfyAll></directive> $B$H(B + <p>承認をより細かく制御したい場合は、 + <directive module="mod_authz_core"><SatisfyAll></directive> と <directive module="mod_authz_core"><SatisfyOne></directive> - $B%G%#%l%/%F%#%V$r;H$C$F(B AND/OR $B%m%8%C%/$G;XDj$7!"@_Dj%U%!%$%k$G(B - $B>5G'$N=hM}=gHV$N@)8f$,$G$-$k$h$&$K$J$C$F$$$^$9!#(B - $B$3$l$i$N%G%#%l%/%F%#%V$r$I$N$h$&$K;H$($k$+!"LVMe$7$?Nc$r$4Mw$/$@$5$$!#(B</p> + ディレクティブを使って AND/OR ロジックで指定し、設定ファイルで + 承認の処理順番の制御ができるようになっています。 + これらのディレクティブをどのように使えるか、網羅した例をご覧ください。</p> </section> -<section id="beyond"><title>$BC1=c$J>5G'$N$=$N@h(B</title> - - <p>$B>5G'$NJ}K!$O!"$R$H$D$N%G!<%?%=!<%9$r8+$F0l2s$@$1%A%'%C%/$9$k$N$HHf$Y$F!"(B - $B$:$C$HB?:L$JE,MQJ}K!$,$G$-$^$9!#(B - $B>5G'=hM}$NE,MQ=g=x$d@)8f!"A*Br$,$G$-$k$h$&$K$J$j$^$7$?!#(B</p> - - <section id="authandororder"><title>AND/OR $B%m%8%C%/$NE,MQ$H=g=xIU$1(B</title> - <p>$B>5G'$,$I$N$h$&$J=g=x$GE,MQ$5$l$F$$$k$+!"$^$?!"$=$l$r$I$N$h$&$K@)8f$9$k$+$O!"(B - $B$3$l$^$G:.Mp$r>7$$$F$$$^$7$?!#(B - Apache 2.2 $B$G$O%W%m%P%$%@%Y!<%9$NG'>Z%a%+%K%:%`$,F3F~$5$l!"(B - $B>5G'=hM}$+$iG'>Z=hM}$H%5%]!<%H5!G=$H$,@Z$jJ,$1$i$l$^$7$?!#(B - $B$3$l$K$h$k$R$H$D$N8z2L$H$7$F!"(B - $BG'>Z%b%8%e!<%k$N%m!<%I=g$d%b%8%e!<%k<+BN$N=g=x$K0MB8$9$k$3$H$J$/!"(B - $B;XDj$7$?=gHV$GG'>Z%W%m%P%$%@$,8F$S=P$;$k$h$&!"(B - $B@_Dj$G$-$k$h$&$K$J$j$^$7$?!#(B - $B$3$N%W%m%P%$%@%a%+%K%:%`$O>5G'=hM}$G$bF3F~$5$l$F$$$^$9!#(B - $B$D$^$j!"(B<directive module="mod_authz_core">Require</directive> - $B%G%#%l%/%F%#%V$OC1$K$I$N>5G'<jK!$,;H$o$l$k$+$r;XDj$9$k$@$1$G$O$J$/!"(B - $B$=$l$i$N8F$S=P$7=g=x$b;XDj$G$-$k$h$&$K$J$j$^$7$?!#(B - $BJ#?t$N>5G'<jK!$,$"$k$H$-!"$=$N8F$S=P$7=g$O!"@_Dj%U%!%$%k$N(B - <directive module="mod_authz_core">Require</directive> $B%G%#%l%/%F%#%VCf$G(B - $B8=$l$?=g=x$HF1$8$K$J$j$^$9!#(B</p> - - <p>$BDI2C$GF3F~$5$l$?(B +<section id="beyond"><title>単純な承認のその先</title> + + <p>承認の方法は、ひとつのデータソースを見て一回だけチェックするのと比べて、 + ずっと多彩な適用方法ができます。 + 承認処理の適用順序や制御、選択ができるようになりました。</p> + + <section id="authandororder"><title>AND/OR ロジックの適用と順序付け</title> + <p>承認がどのような順序で適用されているか、また、それをどのように制御するかは、 + これまで混乱を招いていました。 + Apache 2.2 ではプロバイダベースの認証メカニズムが導入され、 + 承認処理から認証処理とサポート機能とが切り分けられました。 + これによるひとつの効果として、 + 認証モジュールのロード順やモジュール自体の順序に依存することなく、 + 指定した順番で認証プロバイダが呼び出せるよう、 + 設定できるようになりました。 + このプロバイダメカニズムは承認処理でも導入されています。 + つまり、<directive module="mod_authz_core">Require</directive> + ディレクティブは単にどの承認手法が使われるかを指定するだけではなく、 + それらの呼び出し順序も指定できるようになりました。 + 複数の承認手法があるとき、その呼び出し順は、設定ファイルの + <directive module="mod_authz_core">Require</directive> ディレクティブ中で + 現れた順序と同じになります。</p> + + <p>追加で導入された <directive module="mod_authz_core"><SatisfyAll></directive>, <directive module="mod_authz_core"><SatisfyOne></directive> - $B%G%#%l%/%F%#%V$r;H$C$F!">5G'<jK!$,$$$D8F$S=P$5$l!"%"%/%;%9$,5v2D$5$l$?:]$K(B - $B$I$N<jB3$-$,E,MQ$5$l$k$+;XDj$9$k$3$H$,$G$-$^$9!#(B - $B$?$H$($P!"<!$N>5G'%V%m%C%/$N%m%8%C%/$r8+$F$_$^$7$g$&(B:</p> + ディレクティブを使って、承認手法がいつ呼び出され、アクセスが許可された際に + どの手続きが適用されるか指定することができます。 + たとえば、次の承認ブロックのロジックを見てみましょう:</p> <example> # if ((user == "John") ||<br /> @@ -514,66 +514,66 @@ </Directory> </example> - <p>$B%G%U%)%k%H$G$O(B <directive module="mod_authz_core">Require</directive> - $B%G%#%l%/%F%#%V$O(B OR $BA`:n$H$7$F07$o$l$^$9!#$D$^$j!"$b$7;XDj$7$?>5G'<jK!$N(B - $B$R$H$D$G$b9g3J$9$l$P!">5G'$5$l$^$9!#(B - <directive module="mod_authz_core">Require</directive> $B%G%#%l%/%F%#%V$N%;%C%H$r(B - $B$R$H$D$N(B <directive module="mod_authz_core"><SatisfyAll></directive> - $B%V%m%C%/$G0O$`$H(BAND $BA`:n$H$J$j!"A4$F$N>5G'<jK!$G9g3J$7$J$1$l$P5v2D$5$l$^$;$s!#(B</p> + <p>デフォルトでは <directive module="mod_authz_core">Require</directive> + ディレクティブは OR 操作として扱われます。つまり、もし指定した承認手法の + ひとつでも合格すれば、承認されます。 + <directive module="mod_authz_core">Require</directive> ディレクティブのセットを + ひとつの <directive module="mod_authz_core"><SatisfyAll></directive> + ブロックで囲むとAND 操作となり、全ての承認手法で合格しなければ許可されません。</p> </section> - <section id="reqaccessctrl"><title>$B%"%/%;%9@)8f$K$*$1$k(B Require $B$H(B Reject $B$N;H$$J}(B</title> - <p>$B%f!<%6L>$H%Q%9%o!<%I$K$h$kG'>Z$OA4BN$N0lItJ,$G$7$+$"$j$^$;$s!#(B - $BC/$,%"%/%;%9$7$F$-$?$+$H$$$C$?>pJs0J30$N>r7o$r;H$$$?$$!"(B - $B$H$h$/;W$&$3$H$G$7$g$&!#(B - $B$?$H$($P!"$I$3$+$i%"%/%;%9$7$F$-$F$$$k$+!"$H$$$C$?6q9g$G$9!#(B</p> + <section id="reqaccessctrl"><title>アクセス制御における Require と Reject の使い方</title> + <p>ユーザ名とパスワードによる認証は全体の一部分でしかありません。 + 誰がアクセスしてきたかといった情報以外の条件を使いたい、 + とよく思うことでしょう。 + たとえば、どこからアクセスしてきているか、といった具合です。</p> - <p>$B>5G'%W%m%P%$%@(B <directive module="mod_authz_host">all</directive>, + <p>承認プロバイダ <directive module="mod_authz_host">all</directive>, <directive module="mod_authz_host">env</directive>, <directive module="mod_authz_host">host</directive>, <directive module="mod_authz_host">ip</directive> - $B$r;H$&$H!"%j%/%(%9%H$rAw?.$7$F$-$F$$$k%^%7%s$N%[%9%HL>$d(B IP $B%"%I%l%9(B - $B$H$$$C$?!"%[%9%H%Y!<%9$G$N%"%/%;%9@)8f$,$G$-$^$9!#(B</p> + を使うと、リクエストを送信してきているマシンのホスト名や IP アドレス + といった、ホストベースでのアクセス制御ができます。</p> - <p>$B$3$l$i%W%m%P%$%@$N07$$$O(B - <directive module="mod_authz_core">Require</directive> $B$d(B - <directive module="mod_authz_core">Reject</directive> $B$G(B - $B;XDj$5$l$^$9!#$3$l$i$N%G%#%l%/%F%#%V$O>5G'%W%m%P%$%@$rEPO?$7!"(B - $B%j%/%(%9%H=hM}$N>5G'CJ3,$G8F$S=P$5$l$^$9!#$?$H$($P(B:</p> + <p>これらプロバイダの扱いは + <directive module="mod_authz_core">Require</directive> や + <directive module="mod_authz_core">Reject</directive> で + 指定されます。これらのディレクティブは承認プロバイダを登録し、 + リクエスト処理の承認段階で呼び出されます。たとえば:</p> <example> Require ip <var>address</var> </example> - <p>$B$3$3$G!"(B<var>address</var> $B$O(B IP $B%"%I%l%9(B ($B$"$k$$$O(B IP $B%"%I%l%9$N(B - $B0lIt(B) $B$+(B : </p> + <p>ここで、<var>address</var> は IP アドレス (あるいは IP アドレスの + 一部) か : </p> <example> Require host <var>domain_name</var> </example> - <p>$B$3$3$G(B <var>domain_name</var> $B$O(B FQDN ($B$"$k$$$O%I%a%$%sL>$N0lIt(B) - $B$G!"I,MW$G$"$l$PJ#?t$N%"%I%l%9$d%I%a%$%sL>$r=q$/$3$H$,$G$-$^$9!#(B</p> + <p>ここで <var>domain_name</var> は FQDN (あるいはドメイン名の一部) + で、必要であれば複数のアドレスやドメイン名を書くことができます。</p> - <p>$B$?$H$($P!"%9%Q%`%a%C%;!<%8$rAw?.$7$F$/$kC/$+$r5qH]$7$?$$>l9g!"(B - $B<!$N$h$&$K$J$j$^$9(B : </p> + <p>たとえば、スパムメッセージを送信してくる誰かを拒否したい場合、 + 次のようになります : </p> <example> Reject ip 10.252.46.165 </example> - <p>$B$3$N%G%#%l%/%F%#%V$,M-8z$JHO0O$N%3%s%F%s%D$KBP$7$F$O!"(B - $B$=$N%"%I%l%9$+$i%"%/%;%9$7$F$-$F$b8+$k$3$H$,$G$-$^$;$s!#(B - $B$b$7%^%7%sL>$,$o$+$C$F$$$F(B IP $B%"%I%l%9$h$j$b$=$A$i$G(B - $B;XDj$7$?$$$N$G$"$l$P!"$=$N%^%7%sL>$,;H$($^$9!#(B</p> + <p>このディレクティブが有効な範囲のコンテンツに対しては、 + そのアドレスからアクセスしてきても見ることができません。 + もしマシン名がわかっていて IP アドレスよりもそちらで + 指定したいのであれば、そのマシン名が使えます。</p> <example> Reject host <var>host.example.com</var> </example> - <p>$B$^$?!"FCDj$N%I%a%$%s$+$i$N%"%/%;%9A4$F$r%V%m%C%/$7$?$$>l9g$O!"(B - IP $B%"%I%l%9$N0lIt$d!"%I%a%$%sL>$,;XDj$G$-$^$9(B :</p> + <p>また、特定のドメインからのアクセス全てをブロックしたい場合は、 + IP アドレスの一部や、ドメイン名が指定できます :</p> <example> <SatisfyAll><br /> @@ -584,57 +584,57 @@ </SatisfyAll> </example> - <p><directive module="mod_authz_host">Reject</directive> $B%G%#%l%/%F%#%V$r(B - <directive module="mod_authz_core"><SatisfyAll></directive> $B%V%m%C%/$NCf$G;H$&$H!"(B - $B5v2D$7$?$$%0%k!<%W$K$N$_%"%/%;%9$,$G$-$k$h$&$K3NG'$G$-$^$9!#(B</p> + <p><directive module="mod_authz_host">Reject</directive> ディレクティブを + <directive module="mod_authz_core"><SatisfyAll></directive> ブロックの中で使うと、 + 許可したいグループにのみアクセスができるように確認できます。</p> - <p>$B>e5-$NNc$G$O(B <directive module="mod_authz_core"><SatisfyAll></directive> - $B$r;H$C$F!"%"%/%;%9$K9g3J$9$kA0CJ3,$G!"A4$F$N(B - <directive module="mod_authz_host">Reject</directive> $B%G%#%l%/%F%#%V$,(B - $BK~$?$5$l$F$$$k$3$H$r3NG'$7$F$$$^$9!#(B</p> + <p>上記の例では <directive module="mod_authz_core"><SatisfyAll></directive> + を使って、アクセスに合格する前段階で、全ての + <directive module="mod_authz_host">Reject</directive> ディレクティブが + 満たされていることを確認しています。</p> </section> - <section id="filesystem"><title>$B%"%/%;%9@)8f$N8eJ}8_49@-(B</title> - <p>$BG'>Z%W%m%P%$%@%Y!<%9$N5!9=$,$"$k$?$a!"0JA0;HMQ$5$l$F$$$?%G%#%l%/%F%#%V(B + <section id="filesystem"><title>アクセス制御の後方互換性</title> + <p>認証プロバイダベースの機構があるため、以前使用されていたディレクティブ <directive module="mod_access_compat">Order</directive>, <directive module="mod_access_compat">Allow</directive>, <directive module="mod_access_compat">Deny</directive>, <directive module="mod_access_compat">Satisfy</directive> - $B$OI,MW$J$/$J$j$^$7$?!#(B - $B$H$O$$$&$b$N$N!"8E$$@_Dj%U%!%$%k$G$N8eJ}8_49@-$rDs6!$9$k$?$a!"(B - $B$3$l$i$N%G%#%l%/%F%#%V$O(B <module>mod_access_compat</module> $B%b%8%e!<%k$K0\$5$l$^$7$?!#(B</p> - - <p>$B$3$l$i$N%G%#%l%/%F%#%V$NJz$($F$$$?LdBj$N$R$H$D$K!">5G'$N@_Dj9T$H%"%/%;%9@)8f$N@_Dj9T$N(B - $B4X78$,$H$F$b$"$$$^$$$@$C$?$3$H$,5s$2$i$l$^$9!#(B - <directive module="mod_access_compat">Satisfy</directive> $B%G%#%l%/%F%#%V$O(B - $B%j%/%(%9%H=hM}Cf$G$=$l<+?H$r8F$S=P$9$3$H$K$h$C$F!"$3$l$i$N(B 2 $B$D$N=hM}CJ3,$r7k$S$D$1$h$&$H$7$^$9!#(B - $B8=:_$O!"$3$l$i$N%G%#%l%/%F%#%V$O(B <module>mod_access_compat</module> $B$K0\F0$7!"(B - $B?7$7$$G'>Z%G%#%l%/%F%#%V$H8E$$%"%/%;%9@)8f%G%#%l%/%F%#%V$r:.$<$F;H$&$3$H$O(B - $BFq$7$/$J$C$F$$$^$9!#$3$NLdBj$N$?$a!"(B<module>mod_authz_default</module> $B%b%8%e!<%k$r(B - $B%m!<%I$9$k$3$H$,$H$F$b=EMW$G!"I,?\$K$J$C$F$$$^$9!#(B - <module>mod_authz_default</module>$B!!%b%8%e!<%k$N<g$JL\E*$O!"$I$N>5G'%W%m%P%$%@$G(B - $B=hM}$5$l$J$+$C$?>5G'%j%/%(%9%H$r<u$1$k$3$H$K$"$j$^$9!#(B - $B$7$+$7!"8E$$%"%/%;%9@)8f%G%#%l%/%F%#%V$,MQ$$$i$l$?>l9g$K$O!"(B - $B%"%/%;%9@)8f$H>5G'$r7k$S$D$1$F!"$9$Y$F$N=hM}CJ3,$N=PNO7k2L$r8+$F%"%/%;%9$K9g3J$9$k$+$r7h$a$F$$$^$9!#(B - $B$G$9$+$i!"8E$$%G%#%l%/%F%#%V$,$&$^$/F0:n$7$J$$>l9g$O!"(B - <module>mod_authz_default</module> $B$,%m!<%I$5$l$F$$$J$$$+$i$+$b$7$l$J$$!"(B - $B$H5?$C$F$_$F$/$@$5$$!#(B</p> + は必要なくなりました。 + とはいうものの、古い設定ファイルでの後方互換性を提供するため、 + これらのディレクティブは <module>mod_access_compat</module> モジュールに移されました。</p> + + <p>これらのディレクティブの抱えていた問題のひとつに、承認の設定行とアクセス制御の設定行の + 関係がとてもあいまいだったことが挙げられます。 + <directive module="mod_access_compat">Satisfy</directive> ディレクティブは + リクエスト処理中でそれ自身を呼び出すことによって、これらの 2 つの処理段階を結びつけようとします。 + 現在は、これらのディレクティブは <module>mod_access_compat</module> に移動し、 + 新しい認証ディレクティブと古いアクセス制御ディレクティブを混ぜて使うことは + 難しくなっています。この問題のため、<module>mod_authz_default</module> モジュールを + ロードすることがとても重要で、必須になっています。 + <module>mod_authz_default</module> モジュールの主な目的は、どの承認プロバイダで + 処理されなかった承認リクエストを受けることにあります。 + しかし、古いアクセス制御ディレクティブが用いられた場合には、 + アクセス制御と承認を結びつけて、すべての処理段階の出力結果を見てアクセスに合格するかを決めています。 + ですから、古いディレクティブがうまく動作しない場合は、 + <module>mod_authz_default</module> がロードされていないからかもしれない、 + と疑ってみてください。</p> </section> </section> -<section id="moreinformation"><title>$BDI2C>pJs(B</title> - <p>$B$3$l$iA4$F$,$I$N$h$&$KF0:n$9$k$+$K$D$$$F(B - $B$b$C$HB?$/$N>pJs$,=q$+$l$F$$$k(B <module>mod_auth_basic</module> $B$H(B +<section id="moreinformation"><title>追加情報</title> + <p>これら全てがどのように動作するかについて + もっと多くの情報が書かれている <module>mod_auth_basic</module> と <module>mod_authz_host</module> - $B$NJ8=q$bFI$`$H$h$$$G$7$g$&!#(B + の文書も読むとよいでしょう。 <directive module="mod_authn_core"><AuthnProviderAlias></directive> - $B%G%#%l%/%F%#%V$r;H$&$H!"FCDj$NG'>Z@_Dj$,4JC1$K=q$1$k$h$&$K$J$j$^$9!#(B</p> + ディレクティブを使うと、特定の認証設定が簡単に書けるようになります。</p> - <p><a href="access.html">$B%"%/%;%9@)8f(B</a>$B$NJ}K!$b!"(B - $B4XO"$9$k%H%T%C%/$,$?$/$5$s5-:\$5$l$F$$$^$9$N$G!"$4Mw$/$@$5$$!#(B</p> + <p><a href="access.html">アクセス制御</a>の方法も、 + 関連するトピックがたくさん記載されていますので、ご覧ください。</p> </section> diff --git a/docs/manual/howto/cgi.xml.ja b/docs/manual/howto/cgi.xml.ja index d64a29d35a..eaba1ef1dd 100644 --- a/docs/manual/howto/cgi.xml.ja +++ b/docs/manual/howto/cgi.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:545841 (outdated) --> @@ -21,12 +21,12 @@ --> <manualpage metafile="cgi.xml.meta"> - <parentdocument href="./">How-To / $B%A%e!<%H%j%"%k(B</parentdocument> + <parentdocument href="./">How-To / チュートリアル</parentdocument> - <title>Apache Tutorial: CGI $B$K$h$kF0E*%3%s%F%s%D(B</title> + <title>Apache Tutorial: CGI による動的コンテンツ</title> <section id="intro"> - <title>$B$O$8$a$K(B</title> + <title>はじめに</title> <related> <modulelist> @@ -41,96 +41,96 @@ </directivelist> </related> - <p>CGI (Common Gateway Interface) $B$O!"%&%'%V%5!<%P$,(B - $B%3%s%F%s%D@8@.$r$9$k30It%W%m%0%i%`$H6(D4$7$FF0:n$9$k$?$a$NJ}K!$r(B - $BDj5A$7$F$$$^$9!#$=$N%W%m%0%i%`$O$7$P$7$P(B CGI $B%W%m%0%i%`$d(B - CGI $B%9%/%j%W%H$H8F$P$l$^$9!#(BCGI $B$O!"%&%'%V%5%$%H$KF0E*$J(B - $B%3%s%F%s%D$rCV$/$?$a$N:G$b4JC1$G0lHLE*$JJ}K!$G$9!#$3$N%I%-%e%a%s%H$O!"(B - Apache $B%&%'%V%5!<%P$G(B CGI $B$r@_Dj$7!"(B - CGI $B%W%m%0%i%`$r=q$-;O$a$k$?$a$NF~Lg=q$H$J$k$G$7$g$&!#(B</p> + <p>CGI (Common Gateway Interface) は、ウェブサーバが + コンテンツ生成をする外部プログラムと協調して動作するための方法を + 定義しています。そのプログラムはしばしば CGI プログラムや + CGI スクリプトと呼ばれます。CGI は、ウェブサイトに動的な + コンテンツを置くための最も簡単で一般的な方法です。このドキュメントは、 + Apache ウェブサーバで CGI を設定し、 + CGI プログラムを書き始めるための入門書となるでしょう。</p> </section> <section id="configuring"> - <title>CGI $B$r5v2D$9$k$h$&$K(B Apache $B$r@_Dj$9$k(B</title> + <title>CGI を許可するように Apache を設定する</title> - <p>CGI $B%W%m%0%i%`$r@5$7$/F0:n$5$;$k$K$O!"(BCGI $B$r5v2D$9$k$h$&$K(B - Apache $B$N@_Dj$r9T$&I,MW$,$"$j$^$9!#(B - $B$3$l$r9T$J$&$?$a$NJ}K!$,$$$/$D$+$"$j$^$9!#(B</p> + <p>CGI プログラムを正しく動作させるには、CGI を許可するように + Apache の設定を行う必要があります。 + これを行なうための方法がいくつかあります。</p> <section id="scriptalias"> <title>ScriptAlias</title> <p><directive module="mod_alias">ScriptAlias</directive> - $B%G%#%l%/%F%#%V$r;HMQ$7$F!"(B - CGI $B%W%m%0%i%`MQ$NFCJL$JJL%G%#%l%/%H%j$r(B Apache $B$K@_Dj$7$^$9!#(B - Apache $B$O!"$3$N%G%#%l%/%H%jCf$NA4$F$N%U%!%$%k$r(B CGI - $B%W%m%0%i%`$G$"$k$H2>Dj$7$^$9!#(B - $B$=$7$F!"$3$NFCJL$J%j%=!<%9$,%/%i%$%"%s%H$+$iMW5a$5$l$k$H!"(B - $B$=$N%W%m%0%i%`$N<B9T$r;n$_$^$9!#(B</p> + ディレクティブを使用して、 + CGI プログラム用の特別な別ディレクトリを Apache に設定します。 + Apache は、このディレクトリ中の全てのファイルを CGI + プログラムであると仮定します。 + そして、この特別なリソースがクライアントから要求されると、 + そのプログラムの実行を試みます。</p> <p><directive module="mod_alias">ScriptAlias</directive> - $B%G%#%l%/%F%#%V$O0J2<$N$h$&$K;HMQ$7$^$9(B:</p> + ディレクティブは以下のように使用します:</p> <example> ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/ </example> - <p>$B%G%U%)%k%H0LCV$K(B Apache $B$r%$%s%9%H!<%k$7$?$J$i$P!"(B - $B$3$NNc$O%G%U%)%k%H>uBV$N(B <code>httpd.conf</code> - $B@_Dj%U%!%$%k$K4^$^$l$F$$$^$9!#(B + <p>デフォルト位置に Apache をインストールしたならば、 + この例はデフォルト状態の <code>httpd.conf</code> + 設定ファイルに含まれています。 <directive module="mod_alias">ScriptAlias</directive> - $B%G%#%l%/%F%#%V$O!"(BURL $B$NA0$KIU2C$9$k%G%#%l%/%H%j$rDj5A$9$k(B + ディレクティブは、URL の前に付加するディレクトリを定義する <directive module="mod_alias">Alias</directive> - $B%G%#%l%/%F%#%V$H$+$J$j;w$F$$$^$9!#(B - <directive>Alias</directive> $B$H(B <directive>ScriptAlias</directive> - $B$ODL>o!"(B<directive module="core">DocumentRoot</directive> - $B%G%#%l%/%H%j30$N%G%#%l%/%H%j$N$?$a$K;HMQ$5$l$^$9!#(B - <directive>Alias</directive> $B$H(B <directive>ScriptAlias</directive> - $B$H$N:9$O!"(B<directive>ScriptAlias</directive> $B$,@\F,<-$G;O$^$k$9$Y$F$N(B - URL $B$O(B CGI $B%W%m%0%i%`$H$_$J$5$l$k$H$$$&DI2C$N0UL#$r4^$s$G$$$k$3$H$G$9!#(B - $B=>$C$F!">e5-$NNc$G$O!"(B<code>/cgi-bin/</code> - $B$G;O$^$k%j%=!<%9$X$N$"$i$f$k%j%/%(%9%H$KBP$7$F!"%G%#%l%/%H%j(B - <code>/usr/local/apache2/cgi-bin/</code> $B$+$iDs6!$7!"$=$l$i$r(B - CGI $B%W%m%0%i%`$H$7$F07$&$h$&(B Apache $B$K<($7$^$9!#(B</p> - - <p>$BNc$($P!"(BURL <code>http://www.example.com/cgi-bin/test.pl</code> - $B$,MW5a$5$l$?>l9g!"(BApache $B$O(B $B%U%!%$%k(B + ディレクティブとかなり似ています。 + <directive>Alias</directive> と <directive>ScriptAlias</directive> + は通常、<directive module="core">DocumentRoot</directive> + ディレクトリ外のディレクトリのために使用されます。 + <directive>Alias</directive> と <directive>ScriptAlias</directive> + との差は、<directive>ScriptAlias</directive> が接頭辞で始まるすべての + URL は CGI プログラムとみなされるという追加の意味を含んでいることです。 + 従って、上記の例では、<code>/cgi-bin/</code> + で始まるリソースへのあらゆるリクエストに対して、ディレクトリ + <code>/usr/local/apache2/cgi-bin/</code> から提供し、それらを + CGI プログラムとして扱うよう Apache に示します。</p> + + <p>例えば、URL <code>http://www.example.com/cgi-bin/test.pl</code> + が要求された場合、Apache は ファイル <code>/usr/local/apache2/cgi-bin/test.pl</code> - $B$r<B9T$7!"$=$N=PNO$rJV$9$3$H$r;n$_$^$9!#(B - $B$b$A$m$s!"%U%!%$%k$,B8:_$7!"<B9T2DG=$G$"$j!"7h$a$i$l$?J}K!$G=PNO$rJV$7$^$9!#(B - $B$=$&$G$J$1$l$P!"(BApache $B$O%(%i!<%a%C%;!<%8$rJV$7$^$9!#(B</p> + を実行し、その出力を返すことを試みます。 + もちろん、ファイルが存在し、実行可能であり、決められた方法で出力を返します。 + そうでなければ、Apache はエラーメッセージを返します。</p> </section> <section id="nonscriptalias"> - <title>ScriptAlias $B%G%#%l%/%H%j30$N(B CGI</title> + <title>ScriptAlias ディレクトリ外の CGI</title> - <p>CGI $B%W%m%0%i%`$O!"%;%-%e%j%F%#>e$NM}M3$+$i(B + <p>CGI プログラムは、セキュリティ上の理由から <directive module="mod_alias">ScriptAlias</directive> - $B$5$l$?%G%#%l%/%H%j$K@)8B$5$l$k$3$H$,$7$P$7$P$"$j$^$9!#$3$NJ}K!$K$h$j!"(B - CGI $B%W%m%0%i%`$r;HMQ$G$-$k%f!<%6$r4IM}<T$,87$7$/@)8f$9$k$3$H$,$G$-$^$9!#(B - $B$7$+$7$J$,$i!"E,@Z$J%;%-%e%j%F%#;vA0BP:v$,$H$i$l$k$J$i$P!"(BCGI - $B%W%m%0%i%`$rG$0U$N%G%#%l%/%H%j$G<B9T$G$-$J$$$h$&$K$9$kM}M3$O$"$j$^$;$s!#(B - $BNc$($P!"%f!<%6$K(B <directive module="mod_userdir">UserDir</directive> - $B%G%#%l%/%F%#%V$GH`$i$N%[!<%`%G%#%l%/%H%jG[2<$K%&%'%V%3%s%F%s%D$r;}$?$;$?$$$H$7$^$9!#(B - $B$b$7!"H`$i$,(B CGI $B%W%m%0%i%`$r;}$D$3$H$rK>$s$G$$$F$b!"%a%$%s$N(B - <code>cgi-bin</code> $B%G%#%l%/%H%j$X$N%"%/%;%9$,$G$-$J$$>l9g!"(B - CGI $B%W%m%0%i%`$r<B9T$9$k$3$H$,$G$-$kB>$N>l=j$,I,MW$K$J$j$^$9!#(B</p> - - <p>$BG$0U$N%G%#%l%/%H%j$G(B CGI $B$N<B9T$r5v2D$9$k$K$OFsCJ3,$N@_Dj$,I,MW$G$9!#(B - $B$^$:!"(B<directive - module="mod_mime">AddHandler</directive> $B$d(B <directive - module="core">SetHandler</directive> $B%G%#%l%/%F%#%V$K$h$C$F(B - <code>cgi-script</code> $B%O%s%I%i$,2DG=$K$J$C$F$$$kI,MW$,$"$j$^$9!#(B - $B<!$K!"(B<directive module="core">Options</directive> $B%G%#%l%/%F%#%V$G(B - <code>ExecCGI</code> $B$,;XDj$5$l$F$$$J$1$l$P$J$j$^$;$s!#(B</p> + されたディレクトリに制限されることがしばしばあります。この方法により、 + CGI プログラムを使用できるユーザを管理者が厳しく制御することができます。 + しかしながら、適切なセキュリティ事前対策がとられるならば、CGI + プログラムを任意のディレクトリで実行できないようにする理由はありません。 + 例えば、ユーザに <directive module="mod_userdir">UserDir</directive> + ディレクティブで彼らのホームディレクトリ配下にウェブコンテンツを持たせたいとします。 + もし、彼らが CGI プログラムを持つことを望んでいても、メインの + <code>cgi-bin</code> ディレクトリへのアクセスができない場合、 + CGI プログラムを実行することができる他の場所が必要になります。</p> + + <p>任意のディレクトリで CGI の実行を許可するには二段階の設定が必要です。 + まず、<directive + module="mod_mime">AddHandler</directive> や <directive + module="core">SetHandler</directive> ディレクティブによって + <code>cgi-script</code> ハンドラが可能になっている必要があります。 + 次に、<directive module="core">Options</directive> ディレクティブで + <code>ExecCGI</code> が指定されていなければなりません。</p> </section> <section id="options"> - <title>CGI $B$N<B9T$r2DG=$K$9$k$?$a$K(B Options $B$rL@<(E*$K;HMQ$9$k(B</title> + <title>CGI の実行を可能にするために Options を明示的に使用する</title> - <p>$B%5!<%P$N%a%$%s$N@_Dj%U%!%$%kCf$G(B <directive module="core">Options</directive> - $B%G%#%l%/%F%#%V$rL@<(E*$K;HMQ$9$k$3$H$G!"FCDj$N%G%#%l%/%H%jG[2<$G(B - CGI $B$N<B9T$r5v2D$9$k$h$&$K;XDj$9$k$3$H$,$G$-$^$9(B:</p> + <p>サーバのメインの設定ファイル中で <directive module="core">Options</directive> + ディレクティブを明示的に使用することで、特定のディレクトリ配下で + CGI の実行を許可するように指定することができます:</p> <example> <Directory /usr/local/apache2/htdocs/somedir><br /> @@ -140,13 +140,13 @@ </Directory> </example> - <p>$B>e5-%G%#%l%/%F%#%V$O!"(BCGI $B%U%!%$%k$N<B9T$r2DG=$K$9$k$h$&(B - Apache $B$KEA$($^$9!#$^$?!"$I$N%U%!%$%k$,(B CGI $B%U%!%$%k$+$r(B - $B%5!<%P$KEA$($kI,MW$,$"$j$^$9!#<!$N(B + <p>上記ディレクティブは、CGI ファイルの実行を可能にするよう + Apache に伝えます。また、どのファイルが CGI ファイルかを + サーバに伝える必要があります。次の <directive module="mod_mime">AddHandler</directive> - $B%G%#%l%/%F%#%V$NNc$G$O!"(B<code>cgi</code> $B$^$?$O(B <code>pl</code> - $B$r3HD%;R$K;}$D$9$Y$F$N%U%!%$%k$r(B CGI - $B%W%m%0%i%`$H$7$F$_$J$9$3$H$r%5!<%P$KEA$($^$9(B:</p> + ディレクティブの例では、<code>cgi</code> または <code>pl</code> + を拡張子に持つすべてのファイルを CGI + プログラムとしてみなすことをサーバに伝えます:</p> <example> AddHandler cgi-script .cgi .pl @@ -154,18 +154,18 @@ </section> <section id="htaccess"> - <title>.htaccess $B%U%!%$%k(B</title> + <title>.htaccess ファイル</title> - <p><a href="htaccess.html"><code>.htaccess</code> $B%A%e!<%H%j%"%k(B</a> - $B$O(B <code>httpd.conf</code> $B$rJQ99$G$-$J$$>l9g$K$I$&$d$C$F(B CGI $B%W%m%0%i%`$r(B - $B;H$($k$h$&$K$9$k$+$r@bL@$7$F$$$^$9!#(B</p> + <p><a href="htaccess.html"><code>.htaccess</code> チュートリアル</a> + は <code>httpd.conf</code> を変更できない場合にどうやって CGI プログラムを + 使えるようにするかを説明しています。</p> </section> <section id="userdir"> - <title>User $B%G%#%l%/%H%j(B</title> + <title>User ディレクトリ</title> - <p><code>.cgi</code> $B$G=*$o$k$9$Y$F$N%U%!%$%k$KBP$7$F(B CGI $B%W%m%0%i%`$N(B - $B<B9T$r5v2D$9$k$K$O!"0J2<$N@_Dj$r;HMQ$G$-$^$9!#(B</p> + <p><code>.cgi</code> で終わるすべてのファイルに対して CGI プログラムの + 実行を許可するには、以下の設定を使用できます。</p> <example> <Directory /home/*/public_html><br/> @@ -176,9 +176,9 @@ </Directory> </example> - <p>$B%f!<%6%G%#%l%/%H%j$N(B <code>cgi-bin</code> $B%5%V%G%#%l%/%H%j$N(B - $B$9$Y$F$N%U%!%$%k$r(B CGI $B%W%m%0%i%`$H$7$F;XDj$7$?$$>l9g$K$O(B - $B0J2<$N$h$&$J$b$N$r;H$$$^$9!#(B</p> + <p>ユーザディレクトリの <code>cgi-bin</code> サブディレクトリの + すべてのファイルを CGI プログラムとして指定したい場合には + 以下のようなものを使います。</p> <example> <Directory /home/*/public_html/cgi-bin><br/> @@ -193,35 +193,35 @@ </section> <section id="writing"> - <title>CGI $B%W%m%0%i%`$r=q$/(B</title> + <title>CGI プログラムを書く</title> - <p>$B!VDL>o$N!W%W%m%0%i%_%s%0$H(B CGI - $B%W%m%0%i%_%s%0$N4V$K$O<g$KFs$D$N0c$$$,$"$j$^$9!#(B</p> + <p>「通常の」プログラミングと CGI + プログラミングの間には主に二つの違いがあります。</p> - <p>$B0l$D$O!"(BCGI $B%W%m%0%i%`$N$9$Y$F$N=PNO$K$O(B MIME-type - $B%X%C%@$rIU$1$J$1$l$P$J$j$^$;$s!#(B - $B$3$l$O$I$N$h$&$J<oN`$N%3%s%F%s%D$r<u$1<h$C$F$$$k$+$r%/%i%$%"%s%H$K<($9(B - HTTP $B%X%C%@$G$9!#$[$H$s$I$N>l9g$G$O!"<!$N$h$&$K=PNO$7$^$9(B:</p> + <p>一つは、CGI プログラムのすべての出力には MIME-type + ヘッダを付けなければなりません。 + これはどのような種類のコンテンツを受け取っているかをクライアントに示す + HTTP ヘッダです。ほとんどの場合では、次のように出力します:</p> <example> Content-type: text/html </example> - <p>$B$b$&0l$D$O!"=PNO$r(B HTML - $B$+!"%V%i%&%6$,I=<($9$k$3$H$,$G$-$k2?$+B>$N7A<0$K$9$kI,MW$,$"$j$^$9!#(B - $BBgDq$N>l9g$O(B HTML $B$G$7$g$&$,!"(BGIF $B%$%a!<%8$dB>$NHs(B HTML - $B%3%s%F%s%D$r=PNO$9$k(B CGI $B%W%m%0%i%`$r=q$/$3$H$b$"$k$G$7$g$&!#(B</p> + <p>もう一つは、出力を HTML + か、ブラウザが表示することができる何か他の形式にする必要があります。 + 大抵の場合は HTML でしょうが、GIF イメージや他の非 HTML + コンテンツを出力する CGI プログラムを書くこともあるでしょう。</p> - <p>$B$3$l$iFsE@0J30$G$O!"(BCGI $B%W%m%0%i%`$r=q$/$3$H$O!"(B - $B$"$J$?$,=q$$$F$$$kB>$N%W%m%0%i%`$H$h$/;w$F$$$k$G$7$g$&!#(B</p> + <p>これら二点以外では、CGI プログラムを書くことは、 + あなたが書いている他のプログラムとよく似ているでしょう。</p> <section id="firstcgi"> - <title>$B:G=i$N(B CGI $B%W%m%0%i%`(B</title> + <title>最初の CGI プログラム</title> - <p>$B<!$K<($9$N$O!"%V%i%&%6$K(B 1 $B9T0u;z$9$k(B CGI - $B%W%m%0%i%`$NNc$G$9!#0J2<$rF~NO$7!"(B<code>first.pl</code> - $B$H$$$&%U%!%$%k$KJ]B8$7!"$=$l$r(B <code>cgi-bin</code> - $B%G%#%l%/%H%j$KCV$$$F$/$@$5$$!#(B</p> + <p>次に示すのは、ブラウザに 1 行印字する CGI + プログラムの例です。以下を入力し、<code>first.pl</code> + というファイルに保存し、それを <code>cgi-bin</code> + ディレクトリに置いてください。</p> <example> #!/usr/bin/perl<br /> @@ -229,227 +229,227 @@ print "Hello, World."; </example> - <p>Perl $B$K@:DL$7$F$$$J$/$F$b!"(B - $B2?$,5/$3$k$+$rM}2r$9$k$3$H$O$G$-$k$G$7$g$&!#(B1 $B9TL\$O!"(B - <code>/usr/bin/perl</code> $B$G8+$D$1$i$l$k%$%s%?%W%j%?$K(B - $B$3$N%U%!%$%k$r6!5k$9$k$3$H$G$3$N%W%m%0%i%`$,<B9T$5$l$k$3$H$r(B - Apache $B$K(B ($B%7%'%k>e$G<B9T$7$h$&$H$7$F$$$k$J$i$P!"$=$N%7%'%k$K(B ) - $B<($7$^$9!#(B2 $B9TL\$O!"A0=R$7$?$H$*$j(B content-type $B$NDj5A$r0u;z$7$^$9!#(B - $B$3$l$K$OI|5"2~9T$NFs$D$NAH$r8e$KIU2C$7$^$9!#(B - $B$3$l$K$h$j!"%X%C%@$N=*$j$K6u9T$,CV$+$l!"(BHTTP - $B%X%C%@$N=*$j$H%\%G%#$N;O$^$j$r<($7$^$9!#(B3 $B9TL\$O!"(B"Hello, World." - $B$H$$$&J8;zNs$r0u;z$7!"$3$l$G=*$j$H$J$j$^$9!#(B</p> + <p>Perl に精通していなくても、 + 何が起こるかを理解することはできるでしょう。1 行目は、 + <code>/usr/bin/perl</code> で見つけられるインタプリタに + このファイルを供給することでこのプログラムが実行されることを + Apache に (シェル上で実行しようとしているならば、そのシェルに ) + 示します。2 行目は、前述したとおり content-type の定義を印字します。 + これには復帰改行の二つの組を後に付加します。 + これにより、ヘッダの終りに空行が置かれ、HTTP + ヘッダの終りとボディの始まりを示します。3 行目は、"Hello, World." + という文字列を印字し、これで終りとなります。</p> - <p>$B9%$_$N%V%i%&%6$r3+$-!"%"%I%l%9(B</p> + <p>好みのブラウザを開き、アドレス</p> <example> http://www.example.com/cgi-bin/first.pl </example> - <p>$B$"$k$$$O%U%!%$%k$rCV$$$?%m%1!<%7%g%s$r;XDj$9$k$H!"(B + <p>あるいはファイルを置いたロケーションを指定すると、 <code>Hello, World.</code> - $B$H$$$&(B 1 $B9T$,%V%i%&%6%&%#%s%I$K8=$l$k$G$7$g$&!#(B - $B$=$l$O$"$^$j%(%-%5%$%F%#%s%0$J$3$H$G$O$"$j$^$;$s!#(B - $B$7$+$7!"$3$l$,$&$^$/F0$1$P!"(B - $BB>$N$I$N$h$&$J$b$N$G$bF0$+$9$3$H$,$G$-$k$h$&$K$J$j$^$9!#(B</p> + という 1 行がブラウザウィンドに現れるでしょう。 + それはあまりエキサイティングなことではありません。 + しかし、これがうまく動けば、 + 他のどのようなものでも動かすことができるようになります。</p> </section> </section> <section id="troubleshoot"> - <title>$B$7$+$7!"$^$@F0$+$J$$(B !</title> + <title>しかし、まだ動かない !</title> - <p>$B%&%'%V$+$i(B CGI $B%W%m%0%i%`$X$N%"%/%;%9$r9T$J$C$?$H$-!"(B - $B%V%i%&%6$G8+$k2DG=@-$,$"$k;M$D$N4pK\E*$J$3$H$,$"$j$^$9(B:</p> + <p>ウェブから CGI プログラムへのアクセスを行なったとき、 + ブラウザで見る可能性がある四つの基本的なことがあります:</p> <dl> - <dt>CGI $B%W%m%0%i%`$N=PNO(B</dt> - <dd>$BAG@2$i$7$$(B ! $B$=$l$O$9$Y$F$,$&$^$/F0$$$?$3$H$r0UL#$7$^$9!#(B - $B=PNO$,@5>o$@$1$l$I$b!"%V%i%&%6$,@5>o$K=hM}$7$F$/$l$J$$>l9g$O!"(B - $B@5$7$$(B <code>Content-Type</code> $B$r(B CGI $B%W%m%0%i%`Fb$G(B - $B%;%C%H$7$?$+$r3NG'$7$F$/$@$5$$!#(B</dd> - - <dt>CGI $B%W%m%0%i%`$N%=!<%9%3!<%I!"$^$?$O(B "POST Method Not Allowed" - $B$H$$$&%a%C%;!<%8(B</dt> - <dd>$B$3$l$O!"(BCGI $B%W%m%0%i%`$r=hM}$G$-$k$h$&(B Apache - $B$rE,@Z$K@_Dj$7$F$$$J$+$C$?$3$H$r0UL#$7$^$9!#(B<a - href="#configuring">$B!V(BCGI $B$r5v2D$9$k$h$&$K(B - Apache $B$r@_Dj$9$k!W(B</a>$B$N>O$rFI$_D>$7!"(B - $B$"$J$?$,2?$r4V0c$($?$+$rC5$7$F$_$F$/$@$5$$!#(B + <dt>CGI プログラムの出力</dt> + <dd>素晴らしい ! それはすべてがうまく動いたことを意味します。 + 出力が正常だけれども、ブラウザが正常に処理してくれない場合は、 + 正しい <code>Content-Type</code> を CGI プログラム内で + セットしたかを確認してください。</dd> + + <dt>CGI プログラムのソースコード、または "POST Method Not Allowed" + というメッセージ</dt> + <dd>これは、CGI プログラムを処理できるよう Apache + を適切に設定していなかったことを意味します。<a + href="#configuring">「CGI を許可するように + Apache を設定する」</a>の章を読み直し、 + あなたが何を間違えたかを探してみてください。 </dd> - <dt>$B%a%C%;!<%8$,(B "Forbidden" $B$G;O$^$C$F$$$k(B</dt> - <dd>$B$3$l$O%Q!<%_%C%7%g%s$NLdBj$H$$$&$3$H$r0UL#$7$^$9!#(B - <a href="#errorlogs">Apache $B$N%(%i!<%m%0(B</a>$B$H!"8e=R$N(B<a - href="#permissions">$B!V%U%!%$%k$N%Q!<%_%C%7%g%s!W(B</a> - $B$N>O$r%A%'%C%/$7$F$/$@$5$$!#(B + <dt>メッセージが "Forbidden" で始まっている</dt> + <dd>これはパーミッションの問題ということを意味します。 + <a href="#errorlogs">Apache のエラーログ</a>と、後述の<a + href="#permissions">「ファイルのパーミッション」</a> + の章をチェックしてください。 </dd> - <dt>"Internal Server Error" $B$H$$$&%a%C%;!<%8(B</dt> + <dt>"Internal Server Error" というメッセージ</dt> <dd><a href="#errorlogs">Apache - $B$N%(%i!<%m%0(B</a>$B$r%A%'%C%/$9$k$H!"(B"Premature end of script headers" - $B$H$$$&%m%0$,5-O?$5$l$F$$$k$H;W$$$^$9!#$=$7$F!"$*$=$i$/(B CGI - $B%W%m%0%i%`$K$h$C$F@8@.$5$l$?%(%i!<%a%C%;!<%8$b5-O?$5$l$F$$$k$G$7$g$&!#(B - $B$3$N>l9g!"(BCGI $B%W%m%0%i%`$,E,@Z$J(B - HTTP $B%X%C%@$r=PNO$G$-$J$$860x$rCN$k$?$a$K!"(B - $B0J2<$N3F>O$G%A%'%C%/$7$F$_$F$/$@$5$$!#(B</dd> + のエラーログ</a>をチェックすると、"Premature end of script headers" + というログが記録されていると思います。そして、おそらく CGI + プログラムによって生成されたエラーメッセージも記録されているでしょう。 + この場合、CGI プログラムが適切な + HTTP ヘッダを出力できない原因を知るために、 + 以下の各章でチェックしてみてください。</dd> </dl> <section id="permissions"> - <title>$B%U%!%$%k$N%Q!<%_%C%7%g%s(B</title> + <title>ファイルのパーミッション</title> - <p>$B%5!<%P$O$"$J$?$N8"8B$G<B9T$5$l$F$$$J$$$N$rK:$l$J$$$h$&$K!#(B - $B$D$^$j!"5/F0$9$k$H$-!"%5!<%P$OFC8"$r$b$?$J$$%f!<%6(B - $BDL>o(B <code>nobody</code> - $B$d(B <code>www</code> $B$N8"8B$G<B9T$5$l$^$9!#$7$?$,$C$F!"$"$J$?$,=jM-$9$k(B - $B%U%!%$%k$r<B9T$9$k$K$OJL$N%Q!<%_%C%7%g%s$,I,MW$H$J$j$^$9!#(B - $BDL>o!"(B<code>nobody</code> $B$,<B9T$9$k$N$K==J,$J%Q!<%_%C%7%g%s$rM?$($kJ}K!$O!"(B - $B%U%!%$%k$KC/$G$b<B9T2DG=$H$9$k%Q!<%_%C%7%g%s$rM?$($k$3$H$G$9(B:</p> + <p>サーバはあなたの権限で実行されていないのを忘れないように。 + つまり、起動するとき、サーバは特権をもたないユーザ - 通常 <code>nobody</code> + や <code>www</code> の権限で実行されます。したがって、あなたが所有する + ファイルを実行するには別のパーミッションが必要となります。 + 通常、<code>nobody</code> が実行するのに十分なパーミッションを与える方法は、 + ファイルに誰でも実行可能とするパーミッションを与えることです:</p> <example> chmod a+x first.pl </example> - <p>$B$^$?!"$b$7$"$J$?$N%W%m%0%i%`$,B>$N%U%!%$%k$rFI$_=q$-$9$k$J$i$P!"(B - $B$=$l$i$N%U%!%$%k$O!"$3$l$,2DG=$H$J$k@5$7$$%Q!<%_%C%7%g%s(B - $B$r;}$C$F$$$kI,MW$,$"$j$^$9!#(B</p> + <p>また、もしあなたのプログラムが他のファイルを読み書きするならば、 + それらのファイルは、これが可能となる正しいパーミッション + を持っている必要があります。</p> </section> <section id="pathinformation"> - <title>$B%Q%9>pJs$H4D6-(B</title> + <title>パス情報と環境</title> - <p>$B%3%^%s%I%i%$%s$+$i%W%m%0%i%`$r<B9T$9$k$H$-!"(B - $B0U<1$7$J$/$F$b%7%'%k$KEO$5$l$k>pJs$,$"$j$^$9!#(B - $BNc$($P!";2>H$9$k%U%!%$%k$N$?$a$K$I$3$r8!:w$7$?$i$h$$$+$r(B - $B%7%'%k$KEA$($k(B <code>PATH</code> $B$,$"$j$^$9!#(B</p> + <p>コマンドラインからプログラムを実行するとき、 + 意識しなくてもシェルに渡される情報があります。 + 例えば、参照するファイルのためにどこを検索したらよいかを + シェルに伝える <code>PATH</code> があります。</p> - <p>$B%W%m%0%i%`$,(B CGI $B%W%m%0%i%`$H$7$F%&%'%V%5!<%P$K$h$C$F<B9T$5$l$k$H$-!"(B - $B$=$l$OF1$8(B <code>PATH</code> $B$G$O$J$$$+$b$7$l$^$;$s!#(B - CGI $B%W%m%0%i%`Fb$G8F$S=P$9$"$i$f$k%W%m%0%i%`(B - ($BNc$($P!"(B<code>sendmail</code> $B$N$h$&$J$b$N(B) $B$O!"(B - $B%U%k%Q%9$G;XDj$9$kI,MW$,$"$k$G$7$g$&!#$=$l$K$h$j!"(BCGI - $B%W%m%0%i%`$r<B9T$7$h$&$H$7$?$H$-!"(B - $B%7%'%k$O$=$N$h$&$J%W%m%0%i%`$r8+$D$1$k$3$H$,$G$-$^$9!#(B</p> + <p>プログラムが CGI プログラムとしてウェブサーバによって実行されるとき、 + それは同じ <code>PATH</code> ではないかもしれません。 + CGI プログラム内で呼び出すあらゆるプログラム + (例えば、<code>sendmail</code> のようなもの) は、 + フルパスで指定する必要があるでしょう。それにより、CGI + プログラムを実行しようとしたとき、 + シェルはそのようなプログラムを見つけることができます。</p> - <p>$BF1MM$J$3$H$O!"%9%/%j%W%H$N%$%s%?%W%j%?(B ($B$7$P$7$P(B <code>perl</code>) - $B$X$N%Q%9$G!"(BCGI $B%W%m%0%i%`$N(B 1 $B9TL\$K<!$N$h$&$K<($5$l$^$9(B:</p> + <p>同様なことは、スクリプトのインタプリタ (しばしば <code>perl</code>) + へのパスで、CGI プログラムの 1 行目に次のように示されます:</p> <example> #!/usr/bin/perl </example> - <p>$B$3$l$,%$%s%?!<%W%j%?$X$N<B:]$N%Q%9$G$"$k$3$H$r3NG'$7$F$*$-$^$9!#(B</p> + <p>これがインタープリタへの実際のパスであることを確認しておきます。</p> </section> - <p>$B$^$?!"(BCGI $B%W%m%0%i%`$,B>$N(B<a - href="#env">$B4D6-JQ?t(B</a>$B$K0MB8$7$F$$$k>l9g$O!"$=$N4D6-JQ?t$,(B - Apache $B$+$iEO$5$l$k$h$&$K$9$kI,MW$,$"$j$^$9!#(B</p> + <p>また、CGI プログラムが他の<a + href="#env">環境変数</a>に依存している場合は、その環境変数が + Apache から渡されるようにする必要があります。</p> <section id="syntaxerrors"> - <title>$B%W%m%0%i%`%(%i!<(B</title> + <title>プログラムエラー</title> <p>CGI - $B%W%m%0%i%`$,<:GT$9$k$N$OBgDq!"%W%m%0%i%`<+?H$KLdBj$,$"$k>l9g$G$9!#(B - $B0lEY(B CGI $B$N;H$$J}$rM}2r$7!"A0=R$NFs$D$N8m$j$rHH$7$F$$$J$$$J$i$P!"(B - $B$^$:4V0c$$$J$/$=$&$G$7$g$&!#%V%i%&%6$r;H$C$F%F%9%H$9$kA0$K(B - $B$^$:3NG'$9$k$3$H$O!"%3%^%s%I%i%$%s$+$i%W%m%0%i%`$,<B9T$G$-$k$3$H$G$9!#(B - $BNc$($P!"0J2<$r<B9T$7$F$_$F$/$@$5$$(B:</p> + プログラムが失敗するのは大抵、プログラム自身に問題がある場合です。 + 一度 CGI の使い方を理解し、前述の二つの誤りを犯していないならば、 + まず間違いなくそうでしょう。ブラウザを使ってテストする前に + まず確認することは、コマンドラインからプログラムが実行できることです。 + 例えば、以下を実行してみてください:</p> <example> cd /usr/local/apache2/cgi-bin<br/> ./first.pl </example> - <p>(<code>perl</code> $B%$%s%?%W%j%?$O8F$P$J$$$G$/$@$5$$!#(B - $B%7%'%k$H(B Apache $B$,%9%/%j%W%H$N:G=i$N9T$N(B <a - href="#pathinformation">$B%Q%9>pJs(B</a> $B$r;H$C$F8+$D$1$^$9!#(B)</p> + <p>(<code>perl</code> インタプリタは呼ばないでください。 + シェルと Apache がスクリプトの最初の行の <a + href="#pathinformation">パス情報</a> を使って見つけます。)</p> - <p>$B:G=i$K%W%m%0%i%`$+$i=PNO$5$l$k$N$O(B <code>Content-Type</code> $B$r4^$_!"(B - $B8e$K6u9T$NB3$/(B HTTP $B%X%C%@$G$J$1$l$P$J$j$^$;$s!#B>$N$b$N$,=PNO$5$l$F$$$k(B - $B>l9g$O!"(BApache $B$O$3$N%W%m%0%i%`$r%5!<%P7PM3$G<B9T$7$h$&$H$7$?$H$-$K$O(B - <code>Premature end of script headers</code> $B%(%i!<$r=PNO$7$^$9!#>\:Y$O(B - $B>e5-$N(B <a - href="#writing">CGI $B%W%m%0%i%`$r=q$/(B</a> $B$rFI$s$G$/$@$5$$!#(B</p> + <p>最初にプログラムから出力されるのは <code>Content-Type</code> を含み、 + 後に空行の続く HTTP ヘッダでなければなりません。他のものが出力されている + 場合は、Apache はこのプログラムをサーバ経由で実行しようとしたときには + <code>Premature end of script headers</code> エラーを出力します。詳細は + 上記の <a + href="#writing">CGI プログラムを書く</a> を読んでください。</p> </section> <section id="errorlogs"> - <title>$B%(%i!<%m%0(B</title> - - <p>$B%(%i!<%m%0$OM'C#$G$9!#(B - $BA4$F$N$&$^$/$$$+$J$$$3$H$O!"%(%i!<%m%0$K%a%C%;!<%8$r@8@.$7$^$9!#(B - $BI,$:$=$l$r:G=i$K8+$k$Y$-$G$9!#(B - $B$b$7!"$"$J$?$,%&%'%V%5%$%H$r<g:E$7$F$$$k>l=j$,(B - $B%(%i!<%m%0$N;2>H$r5v$7$F$$$J$$$J$i$P!"$-$C$HB>$N%5%$%H$G<g:E$9$k$Y$-$G$9!#(B - $B%(%i!<%m%0$NFI$_J}$r3X$V$3$H$G!"$[$H$s$IA4$F$NLdBj$,?WB.$K3NG'$5$l!"(B - $B?WB.$K2r7h$5$l$k$H$$$&$3$H$,J,$+$k$G$7$g$&!#(B</p> + <title>エラーログ</title> + + <p>エラーログは友達です。 + 全てのうまくいかないことは、エラーログにメッセージを生成します。 + 必ずそれを最初に見るべきです。 + もし、あなたがウェブサイトを主催している場所が + エラーログの参照を許していないならば、きっと他のサイトで主催するべきです。 + エラーログの読み方を学ぶことで、ほとんど全ての問題が迅速に確認され、 + 迅速に解決されるということが分かるでしょう。</p> </section> <section id="suexec"> <title>Suexec</title> - <p><a href="../suexec.html">suexec</a> $B%5%]!<%H%W%m%0%i%`$O(B - $B%P!<%A%c%k%[%9%H$d%f!<%6$N%[!<%`%G%#%l%/%H%j$N>l=j$K0M$C$F(B - CGI $B%W%m%0%i%`$r0c$&%f!<%68"8B$N2<$GAv$i$;$k$3$H$r2DG=$K$7$^$9!#(B - Suexec $B$N8"8B$N%A%'%C%/$OHs>o$K87$7$/!"$=$l$rK~$?$5$J$$>l9g$O(B - CGI $B%W%m%0%i%`$,(B <code>Premature end of script headers</code> $B%(%i!<$G(B - $B<B9T$5$l$^$;$s!#(B</p> - - <p>suexec $B$r;H$C$F$$$k$+$I$&$+$rD4$Y$?$a$K$O(B <code>apachectl - -V</code> $B$r<B9T$7$F!"(B<code>SUEXEC_BIN</code> $B$N>l=j$rD4$Y$F$/$@$5$$!#(B - Apache $B$,$=$3$K(B <program>suexec</program> $B$N%P%$%J%j$rH/8+$7$?>l9g$O!"(Bsuexec $B$,(B - $B;HMQ$5$l$^$9!#(B</p> - - <p>suexec $B$r40A4$KM}2r$7$F$$$J$$8B$j!";H$&$Y$-$G$O$"$j$^$;$s!#(B - suexec $B$rL58z$K$9$k$K$O!"(B<code>SUEXEC_BIN</code> $B$+$i;X$5$l$F$$$k(B - <program>suexec</program> $B%P%$%J%j$r:o=|(B ($B$+L>A0$rJQ99(B) $B$9$k$@$1$G$9!#(B - <a href="../suexec.html">suexec</a> $B$rFI$s$@8e$G!"$^$@$=$l$r(B - $B;H$$$?$$$N$G$"$l$P!"(B<code>suexec -V</code> $B$r<B9T$7$F(B suexec $B$N(B - $B%m%0%U%!%$%k$N0LCV$rD4$Y!"$=$N%m%0%U%!%$%k$r;H$C$F%]%j%7!<0cH?$r(B - $B8+$D$1$F$/$@$5$$!#(B</p> + <p><a href="../suexec.html">suexec</a> サポートプログラムは + バーチャルホストやユーザのホームディレクトリの場所に依って + CGI プログラムを違うユーザ権限の下で走らせることを可能にします。 + Suexec の権限のチェックは非常に厳しく、それを満たさない場合は + CGI プログラムが <code>Premature end of script headers</code> エラーで + 実行されません。</p> + + <p>suexec を使っているかどうかを調べためには <code>apachectl + -V</code> を実行して、<code>SUEXEC_BIN</code> の場所を調べてください。 + Apache がそこに <program>suexec</program> のバイナリを発見した場合は、suexec が + 使用されます。</p> + + <p>suexec を完全に理解していない限り、使うべきではありません。 + suexec を無効にするには、<code>SUEXEC_BIN</code> から指されている + <program>suexec</program> バイナリを削除 (か名前を変更) するだけです。 + <a href="../suexec.html">suexec</a> を読んだ後で、まだそれを + 使いたいのであれば、<code>suexec -V</code> を実行して suexec の + ログファイルの位置を調べ、そのログファイルを使ってポリシー違反を + 見つけてください。</p> </section> </section> <section id="behindscenes"> - <title>$BN"$G2?$,5/$3$C$F$$$k$N$+(B?</title> + <title>裏で何が起こっているのか?</title> - <p>CGI $B%W%m%0%i%_%s%0$K=,=O$9$k$H!"(B - $BN"$G5/$3$C$F$$$k$3$H$K$D$$$F99$KM}2r$9$k$3$H$NLr$KN)$A$^$9!#(B - $B%V%i%&%6$H%5!<%P$,$I$N$h$&$KAj8_DL?.$9$k$+$K$D$$$F$OFC$K$=$&$G$9!#(B - $B$J$<$J$i!"(B"Hello, World." - $B$r0u;z$9$k%W%m%0%i%`$r=q$/$3$H$O$*$*$$$K7k9=$G$9$,!"(B - $B$=$l$OFC$KM-1W$G$O$"$j$^$;$s!#(B</p> + <p>CGI プログラミングに習熟すると、 + 裏で起こっていることについて更に理解することの役に立ちます。 + ブラウザとサーバがどのように相互通信するかについては特にそうです。 + なぜなら、"Hello, World." + を印字するプログラムを書くことはおおいに結構ですが、 + それは特に有益ではありません。</p> <section id="env"> - <title>$B4D6-JQ?t(B</title> - - <p>$B4D6-JQ?t$O!"(B - $B$"$J$?$,%3%s%T%e!<%?$r;H$&$H$-$KJU$j$KB8:_$7$F$$$kCM$G$9!#(B - $B$=$l$i$O!"%Q%9(B - ($B%3%^%s%I$r%?%$%W$7$?$H$-$K<B9T$9$k<B:]$N%U%!%$%k$rC5$7=P$9$H$3$m(B)$B!"(B - $B%f!<%6L>!"C<Kv7?$J$I$N$h$&$JJXMx$J$b$N$G$9!#(B - $BDL>o!"IaCJ;HMQ$7$F$$$k4D6-JQ?t$N40A4$J%j%9%H$rD4$Y$k$K$O!"(B - $B%3%^%s%I%W%m%s%W%H$G(B <code>env</code> $B$rF~NO$7$^$9!#(B</p> - - <p>CGI $B$N=hM}Cf!"%5!<%P$H%V%i%&%6$b4D6-JQ?t$r@_Dj$7!"(B - $B$=$l$K$h$jAj8_$KDL?.$9$k$3$H$,$G$-$k$h$&$K$J$j$^$9!#(B - $B$=$N4D6-JQ?t$O!"%V%i%&%6%?%$%W(B (Netscape, IE, Lynx)$B!"%5!<%P%?%$%W(B - (Apache, IIS, WebSite)$B!"<B9T$5$l$F$$$k(B CGI - $B%W%m%0%i%`$NL>A0$J$I$G$9!#(B</p> - - <p>$B$3$l$i$NJQ?t$O(B CGI $B%W%m%0%i%^$,;HMQ$G$-$^$9!#(B - $B$=$7$F!"$=$l$O%/%i%$%"%s%H$H%5!<%P$NDL?.$NOC$NH>J,$G$9!#(B - $BI,MW$JJQ?t$N40A4$J%j%9%H$O(B <a + <title>環境変数</title> + + <p>環境変数は、 + あなたがコンピュータを使うときに辺りに存在している値です。 + それらは、パス + (コマンドをタイプしたときに実行する実際のファイルを探し出すところ)、 + ユーザ名、端末型などのような便利なものです。 + 通常、普段使用している環境変数の完全なリストを調べるには、 + コマンドプロンプトで <code>env</code> を入力します。</p> + + <p>CGI の処理中、サーバとブラウザも環境変数を設定し、 + それにより相互に通信することができるようになります。 + その環境変数は、ブラウザタイプ (Netscape, IE, Lynx)、サーバタイプ + (Apache, IIS, WebSite)、実行されている CGI + プログラムの名前などです。</p> + + <p>これらの変数は CGI プログラマが使用できます。 + そして、それはクライアントとサーバの通信の話の半分です。 + 必要な変数の完全なリストは <a href="http://hoohoo.ncsa.uiuc.edu/cgi/env.html" - >http://hoohoo.ncsa.uiuc.edu/cgi/env.html</a> $B$K$"$j$^$9!#(B</p> - - <p>$B0J2<$NC1=c$J(B Perl CGI - $B%W%m%0%i%`$O!"EO$5$l$kA4$F$N4D6-JQ?t$rI=<($7$^$9!#F1MM$N%W%m%0%i%`$O!"(B - Apache $B%G%#%9%H%j%S%e!<%7%g%s$N(B <code>cgi-bin</code> - $B%G%#%l%/%H%j$KFs$D4^$^$l$F$$$^$9!#(B - $B$$$/$D$+$NJQ?t$,I,?\$G$"$j!"$$$/$D$+$OG$0U$G$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B - $B$=$7$F!"8x<0$N%j%9%H$K$O$J$$$$$/$D$+$NJQ?t$,I=<($5$l$F$$$k$+$b$7$l$^$;$s!#(B - $B$5$i$K!"(BApache $B$O%G%U%)%k%H$GMQ0U$5$l$F$$$k4pK\E*$J$b$N$K(B - <a href="../env.html">$B$"$J$?<+?H$N4D6-JQ?t$r2C$($k(B</a>$B$?$a$N!"(B - $BB?$/$N0[$J$kJ}K!$rMQ0U$7$F$7$^$9!#(B</p> + >http://hoohoo.ncsa.uiuc.edu/cgi/env.html</a> にあります。</p> + + <p>以下の単純な Perl CGI + プログラムは、渡される全ての環境変数を表示します。同様のプログラムは、 + Apache ディストリビューションの <code>cgi-bin</code> + ディレクトリに二つ含まれています。 + いくつかの変数が必須であり、いくつかは任意であることに注意してください。 + そして、公式のリストにはないいくつかの変数が表示されているかもしれません。 + さらに、Apache はデフォルトで用意されている基本的なものに + <a href="../env.html">あなた自身の環境変数を加える</a>ための、 + 多くの異なる方法を用意してします。</p> <example> #!/usr/bin/perl<br /> @@ -463,95 +463,95 @@ </section> <section id="stdin"> - <title>STDIN $B$H(B STDOUT</title> - - <p>$B%5!<%P$H%/%i%$%"%s%H4V$N$b$&0l$D$NDL?.$O!"I8=`F~NO(B - (<code>STDIN</code>)$B$HI8=`=PNO(B (<code>STDOUT</code>) - $B$rDL$8$F9T$J$o$l$^$9!#DL>o$NJ8L.$K$*$$$F!"(B<code>STDIN</code> - $B$O%-!<%\!<%I$d%W%m%0%i%`$,F0:n$9$k$?$a$KM?$($i$l$k%U%!%$%k$r0UL#$7!"(B - <code>STDOUT</code> $B$ODL>o%3%s%=!<%k$^$?$O%9%/%j!<%s$r0UL#$7$^$9!#(B</p> - - <p>$B%&%'%V%U%)!<%`$+$i(B CGI $B%W%m%0%i%`$X(B<code>POST</code> - $B$7$?$H$-!"%U%)!<%`$N%G!<%?$OFCJL$J%U%)!<%^%C%H$GB+$M$i$l!"(B - <code>STDIN</code> $B$rDL$7$F!"(BCGI $B%W%m%0%i%`$K0z$-EO$5$l$^$9!#(B - $B%W%m%0%i%`$O%G!<%?$,%-!<%\!<%I(B - $B$b$7$/$O%U%!%$%k$+$iMh$F$$$?$+$N$h$&$K=hM}$9$k$3$H$,$G$-$^$9!#(B</p> - - <p>$B!VFCJL$J%U%)!<%^%C%H!W$O$H$F$bC1=c$G$9!#%U%#!<%k%IL>$HCM$O%$%3!<%k(B - (=) $B$G7k$P$l$^$9!#$=$7$FCM$NAH$O%"%s%Q%5%s%I(B (&) $B$G7k$P$l$^$9!#(B - $B%9%Z!<%9!"%"%s%Q%5%s%I!"%$%3!<%k$N$h$&$JLLE]$JJ8;z$O!"(B - $B$=$l$i$,F0:n$rBLL\$K$7$J$$$h$&$K$=$NJ8;z$KAjEv$9$k(B 16 $B?J$KJQ49$5$l$^$9!#(B - $BA4%G!<%?J8;zNs$O!"0J2<$N$h$&$K$J$j$^$9(B: + <title>STDIN と STDOUT</title> + + <p>サーバとクライアント間のもう一つの通信は、標準入力 + (<code>STDIN</code>)と標準出力 (<code>STDOUT</code>) + を通じて行なわれます。通常の文脈において、<code>STDIN</code> + はキーボードやプログラムが動作するために与えられるファイルを意味し、 + <code>STDOUT</code> は通常コンソールまたはスクリーンを意味します。</p> + + <p>ウェブフォームから CGI プログラムへ<code>POST</code> + したとき、フォームのデータは特別なフォーマットで束ねられ、 + <code>STDIN</code> を通して、CGI プログラムに引き渡されます。 + プログラムはデータがキーボード + もしくはファイルから来ていたかのように処理することができます。</p> + + <p>「特別なフォーマット」はとても単純です。フィールド名と値はイコール + (=) で結ばれます。そして値の組はアンパサンド (&) で結ばれます。 + スペース、アンパサンド、イコールのような面倒な文字は、 + それらが動作を駄目にしないようにその文字に相当する 16 進に変換されます。 + 全データ文字列は、以下のようになります: </p> <example> name=Rich%20Bowen&city=Lexington&state=KY&sidekick=Squirrel%20Monkey </example> - <p>$B;~!9!"$3$N$h$&$JJ8;zNs$,(B URL - $B$KIU2C$5$l$k$N$r8+$k$G$7$g$&!#$=$N>l9g!"%5!<%P$O(B - <code>QUERY_STRING</code> $B$H$$$&4D6-JQ?t$K$=$NJ8;zNs$rF~$l$^$9!#$=$l$O(B - <code>GET</code> $B%j%/%(%9%H$H8F$P$l$^$9!#(B - HTML $B%U%)!<%`$G$O!"%G!<%?$rEO$9$?$a$K(B <code>GET</code> $B$H(B - <code>POST</code> $B$N$I$A$i$r;HMQ$9$k$+$r!"(B<code>FORM</code> $B%?%0$N(B - <code>METHOD</code> $BB0@-$N@_Dj$G;XDj$7$^$9!#(B</p> - - <p>CGI $B%W%m%0%i%`$O!"$=$NJ8;zNs$rLr$KN)$D>pJs$KJ,3d$9$k@UG$$,$"$j$^$9!#(B - $B9,$$$K$b!"$=$N%G!<%?=hM}$r=u$1$k%i%$%V%i%j$d%b%8%e!<%k$,B8:_$7$^$9!#(B - $B$3$l$i$O!"(BCGI $B%W%m%0%i%`$NB>$NLL$G$bF1MM$KLr$KN)$A$^$9!#(B</p> + <p>時々、このような文字列が URL + に付加されるのを見るでしょう。その場合、サーバは + <code>QUERY_STRING</code> という環境変数にその文字列を入れます。それは + <code>GET</code> リクエストと呼ばれます。 + HTML フォームでは、データを渡すために <code>GET</code> と + <code>POST</code> のどちらを使用するかを、<code>FORM</code> タグの + <code>METHOD</code> 属性の設定で指定します。</p> + + <p>CGI プログラムは、その文字列を役に立つ情報に分割する責任があります。 + 幸いにも、そのデータ処理を助けるライブラリやモジュールが存在します。 + これらは、CGI プログラムの他の面でも同様に役に立ちます。</p> </section> </section> <section id="libraries"> - <title>CGI $B%b%8%e!<%k(B/$B%i%$%V%i%j(B</title> + <title>CGI モジュール/ライブラリ</title> - <p>CGI $B%W%m%0%i%`$r=q$/$H$-!"LLE]$J;E;v$NBgItJ,$r$7$F$/$l$k(B - $B%3!<%I%i%$%V%i%j$^$?$O%b%8%e!<%k$r;H$&$3$H$r8!F$$9$Y$-$G$9!#(B - $B$3$l$O%(%i!<$r8:$i$7!"Aa$$3+H/$K$D$J$,$j$^$9!#(B</p> + <p>CGI プログラムを書くとき、面倒な仕事の大部分をしてくれる + コードライブラリまたはモジュールを使うことを検討すべきです。 + これはエラーを減らし、早い開発につながります。</p> - <p>Perl $B$G(B CGI $B%W%m%0%i%`$r=q$$$F$$$k$J$i!"%b%8%e!<%k$O(B <a - href="http://www.cpan.org/">CPAN</a> $B$GDs6!$5$l$F$$$^$9!#(B - $B$3$NL\E*$N$?$a$N:G$bIa5Z$7$F$$$k%b%8%e!<%k$O(B <code>CGI.pm</code> $B$G$9!#(B - <code>CGI::Lite</code> $B$b8!F$$7$^$7$g$&!#$3$l$O!"$[$H$s$I$N%W%m%0%i%`(B - $B$K$*$$$FI,MW$H$9$k$9$Y$F$N5!G=$N:G>.%;%C%H$N<BAu$G$9!#(B</p> + <p>Perl で CGI プログラムを書いているなら、モジュールは <a + href="http://www.cpan.org/">CPAN</a> で提供されています。 + この目的のための最も普及しているモジュールは <code>CGI.pm</code> です。 + <code>CGI::Lite</code> も検討しましょう。これは、ほとんどのプログラム + において必要とするすべての機能の最小セットの実装です。</p> - <p>C $B$G(B CGI $B%W%m%0%i%`$r=q$$$F$$$k$J$i!"$$$m$$$m$J(B - $B%*%W%7%g%s$,$"$j$^$9!#$3$l$i$NFb$N0l$D$O(B <a + <p>C で CGI プログラムを書いているなら、いろいろな + オプションがあります。これらの内の一つは <a href="http://www.boutell.com/cgic/">http://www.boutell.com/cgic/</a> - $B$GDs6!$5$l$F$$$k(B <code>CGIC</code> $B%i%$%V%i%j$G$9!#(B</p> + で提供されている <code>CGIC</code> ライブラリです。</p> </section> <section id="moreinfo"> - <title>$B99$J$k>pJs(B</title> + <title>更なる情報</title> - <p>CGI $B$K4X$9$k>pJs$O%&%'%V$G?tB?$/Ds6!$5$l$F$$$^$9!#(BCGI - $B$NLdBj$K$D$$$F$O(B Usenet $B$N(B <a href="news:comp.infosystems.www.authoring.cgi" - >comp.infosystems.www.authoring.cgi</a> $B$G!"(B - $BB>$N%f!<%6$HO@5D$9$k$3$H$,$G$-$^$9!#(BHTML Writers Guide $B$N(B - -servers $B%a!<%j%s%0%j%9%H$O!"$"$J$?$N<ALd$K2sEz$7$F$/$l$k0NBg$J%j%=!<%9$G$9!#(B + <p>CGI に関する情報はウェブで数多く提供されています。CGI + の問題については Usenet の <a href="news:comp.infosystems.www.authoring.cgi" + >comp.infosystems.www.authoring.cgi</a> で、 + 他のユーザと論議することができます。HTML Writers Guide の + -servers メーリングリストは、あなたの質問に回答してくれる偉大なリソースです。 <a href="http://www.hwg.org/lists/hwg-servers/" >http://www.hwg.org/lists/hwg-servers/</a> - $B$G99$KB?$/$rC5$7=P$9$3$H$,$G$-$^$9!#(B</p> + で更に多くを探し出すことができます。</p> - <p>$B$=$7$F$b$A$m$s!"$*$=$i$/(B CGI - $B%W%m%0%i%`$NF0:n$K4X$9$k>\:Y$NA4$F$,5-=R$5$l$F$$$k(B - CGI $B$N;EMM$rFI$`$Y$-$G$9!#%*%j%8%J%k%P!<%8%g%s$r(B + <p>そしてもちろん、おそらく CGI + プログラムの動作に関する詳細の全てが記述されている + CGI の仕様を読むべきです。オリジナルバージョンを <a href="http://hoohoo.ncsa.uiuc.edu/cgi/interface.html">NCSA</a> - $B$G!"%"%C%W%G!<%H$5$l$?%I%i%U%H$r(B + で、アップデートされたドラフトを <a href="http://web.golux.com/coar/cgi/">Common Gateway Interface RFC - $B%W%m%8%'%/%H(B</a>$B$G;2>H$9$k$3$H$,$G$-$^$9!#(B</p> - - <p>CGI $B$NLdBj$K$D$$$F!"2C$o$C$F$$$k%a!<%j%s%0%j%9%H$^$?$O%K%e!<%9(B - $B%0%k!<%W$K<ALd$rAw$k$H$-!"5/$3$C$?$b$N!"5/$3$C$F$[$7$$$3$H!"(B - $B<B:]$K5/$3$C$?$3$H$,$I$&0c$&$+!";HMQ$7$F$$$k%5!<%P!"(B - CGI $B%W%m%0%i%`$r5-=R$7$F$$$k8@8l$K4X$9$k==J,$J>pJs$H!"(B - $B2DG=$G$"$l$PLdBj$N%3!<%I$rDs6!$9$k$h$&$K$7$F$/$@$5$$!#(B - $B$=$&$9$k$3$H$G!"LdBj$,$h$j4VC1$K8+$D$+$k$h$&$K$J$j$^$9!#(B</p> - - <p>Apache $B$N%=!<%9%3!<%I$K$*$$$FLdBj$rH/8+$7$?$3$H$r3N?.$7$F$$$J$$8B$j!"(B - CGI $B$NLdBj$K4X$9$k<ALd$r(B Apache - $B%P%0%G!<%?%Y!<%9$K(B<strong>$BAw$k$Y$-$G$J$$(B</strong> - $B$3$H$KCmL\$7$F$/$@$5$$!#(B</p> + プロジェクト</a>で参照することができます。</p> + + <p>CGI の問題について、加わっているメーリングリストまたはニュース + グループに質問を送るとき、起こったもの、起こってほしいこと、 + 実際に起こったことがどう違うか、使用しているサーバ、 + CGI プログラムを記述している言語に関する十分な情報と、 + 可能であれば問題のコードを提供するようにしてください。 + そうすることで、問題がより間単に見つかるようになります。</p> + + <p>Apache のソースコードにおいて問題を発見したことを確信していない限り、 + CGI の問題に関する質問を Apache + バグデータベースに<strong>送るべきでない</strong> + ことに注目してください。</p> </section> </manualpage> diff --git a/docs/manual/howto/htaccess.xml.ja b/docs/manual/howto/htaccess.xml.ja index d34e68fd83..9c5aaa1c3c 100644 --- a/docs/manual/howto/htaccess.xml.ja +++ b/docs/manual/howto/htaccess.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:574882 (outdated) --> @@ -21,16 +21,16 @@ --> <manualpage metafile="htaccess.xml.meta"> -<parentdocument href="./">How-To / $B%A%e!<%H%j%"%k(B</parentdocument> +<parentdocument href="./">How-To / チュートリアル</parentdocument> -<title>Apache $B%A%e!<%H%j%"%k(B: .htaccess $B%U%!%$%k(B</title> +<title>Apache チュートリアル: .htaccess ファイル</title> <summary> -<p><code>.htaccess</code> $B%U%!%$%k$O%G%#%l%/%H%jKh$K@_Dj$rJQ99$9$kJ}K!$r(B -$BDs6!$7$^$9!#(B</p> +<p><code>.htaccess</code> ファイルはディレクトリ毎に設定を変更する方法を +提供します。</p> </summary> -<section id="related"><title>.htaccess $B%U%!%$%k(B</title> +<section id="related"><title>.htaccess ファイル</title> <related> <modulelist> <module>core</module> @@ -58,106 +58,106 @@ </section> <section id="what"> -<title>.htaccess $B%U%!%$%k$H$O2?$+(B/$B$=$N;H$$J}(B</title> +<title>.htaccess ファイルとは何か/その使い方</title> - <p><code>.htaccess</code> $B%U%!%$%k(B ($B!VJ,;6@_Dj%U%!%$%k!W(B) $B$O(B - $B%G%#%l%/%H%jKh$K@_Dj$rJQ99$9$kJ}K!$rDs6!$7$^$9!#%G%#%l%/%F%#%V$N(B - $B=q$+$l$?%U%!%$%k$r%G%#%l%/%H%j$KCV$/$3$H$G!"$=$N%G%#%l%/%H%j$H$=$N(B - $B%5%V%G%#%l%/%H%j$9$Y$F$K%G%#%l%/%F%#%V$rE,MQ$5$;$k$3$H$,$G$-$^$9!#(B</p> + <p><code>.htaccess</code> ファイル (「分散設定ファイル」) は + ディレクトリ毎に設定を変更する方法を提供します。ディレクティブの + 書かれたファイルをディレクトリに置くことで、そのディレクトリとその + サブディレクトリすべてにディレクティブを適用させることができます。</p> - <note><title>$BCm(B:</title> - <p><code>.htaccess</code> $B%U%!%$%k$rJL$NL>A0$K$7$?$$>l9g$O!"(B - <directive module="core">AccessFileName</directive> $B%G%#%l%/%F%#%V$r(B - $B;H$C$FJQ99$9$k$3$H$,$G$-$^$9!#Nc$($P!"$=$N%U%!%$%k$r(B <code>.config</code> - $B$H$$$&L>A0$K$7$?$$>l9g$O!"0J2<$N@_Dj$r%5!<%P@_Dj%U%!%$%k$KF~$l$k$3$H$,(B - $B$G$-$^$9(B:</p> + <note><title>注:</title> + <p><code>.htaccess</code> ファイルを別の名前にしたい場合は、 + <directive module="core">AccessFileName</directive> ディレクティブを + 使って変更することができます。例えば、そのファイルを <code>.config</code> + という名前にしたい場合は、以下の設定をサーバ設定ファイルに入れることが + できます:</p> <example> AccessFileName .config </example> </note> - <p>$B0lHL$K!"(B<code>.htaccess</code> $B%U%!%$%k$N9=J8$O(B - <a href="../configuring.html#syntax">$B<g@_Dj%U%!%$%k(B</a> - $B$HF1$8$G$9!#$3$l$i$N%U%!%$%k$K=q$/$3$H$N$G$-$k%G%#%l%/%F%#%V$O(B <directive - module="core">AllowOverride</directive> $B%G%#%l%/%F%#%V$K$h$j7h$^$j$^$9!#(B - $B$3$N%G%#%l%/%F%#%V$O!"(B<code>.htaccess</code> $B%U%!%$%k$K(B - $B=q$+$l$?%G%#%l%/%F%#%V$NCf$G!"!"(B - $B$I$N%G%#%l%/%F%#%V$,E,MQ$5$l$k$+$r%+%F%4%j!<C10L$G;XDj$7$^$9!#(B - <code>.htaccess</code> $B$K=q$/$3$H$N$G$-$k%G%#%l%/%F%#%V$G$"$l$P!"(B - $B@bL@J8=q$K$O!V>e=q$-!W$H$$$&9`L\$,$"$j!"(B.htaccess $B$K=q$/$3$H$,$G$-$k$h$&$K(B - $B$J$k$?$a$N(B <directive - module="core">AllowOverride</directive> $B$NCM$,;XDj$5$l$F$$$^$9!#(B</p> - - <p>$BNc$($P!"(B<directive - module="core">AddDefaultCharset</directive> $B%G%#%l%/%F%#%V$N@bL@$r(B - $B8+$k$H!"(B<code>.htaccess</code> $B%U%!%$%k$G$N;HMQ$,5v2D$5$l$F$$$k$3$H$,(B - $B$o$+$j$^$9!#(B ($B%G%#%l%/%F%#%V$N35MW$N=j$K$"$k!V%3%s%F%-%9%H!W$H=q$+$l$F$$$k(B - $B9T$r8+$F$/$@$5$$!#(B) <a - href="../mod/directive-dict.html#Context">$B>e=q$-(B</a>$B$H=q$+$l$F$$$k9T$K$O(B - <code>FileInfo</code> $B$H$"$j$^$9!#$G$9$+$i!"(B<code>.htaccess</code> $BCf$N(B - $B$3$N%G%#%l%/%F%#%V$,M-8z$K$J$k$?$a$K$O!">/$J$/$H$b(B - <code>AllowOverride FileInfo</code> $B$,@_Dj$5$l$F$$$kI,MW$,$"$j$^$9!#(B</p> - - <example><title>$BNc(B:</title> + <p>一般に、<code>.htaccess</code> ファイルの構文は + <a href="../configuring.html#syntax">主設定ファイル</a> + と同じです。これらのファイルに書くことのできるディレクティブは <directive + module="core">AllowOverride</directive> ディレクティブにより決まります。 + このディレクティブは、<code>.htaccess</code> ファイルに + 書かれたディレクティブの中で、、 + どのディレクティブが適用されるかをカテゴリー単位で指定します。 + <code>.htaccess</code> に書くことのできるディレクティブであれば、 + 説明文書には「上書き」という項目があり、.htaccess に書くことができるように + なるための <directive + module="core">AllowOverride</directive> の値が指定されています。</p> + + <p>例えば、<directive + module="core">AddDefaultCharset</directive> ディレクティブの説明を + 見ると、<code>.htaccess</code> ファイルでの使用が許可されていることが + わかります。 (ディレクティブの概要の所にある「コンテキスト」と書かれている + 行を見てください。) <a + href="../mod/directive-dict.html#Context">上書き</a>と書かれている行には + <code>FileInfo</code> とあります。ですから、<code>.htaccess</code> 中の + このディレクティブが有効になるためには、少なくとも + <code>AllowOverride FileInfo</code> が設定されている必要があります。</p> + + <example><title>例:</title> <table> <tr> <td><a - href="../mod/directive-dict.html#Context">$B%3%s%F%-%9%H(B:</a></td> - <td>$B%5!<%P@_Dj%U%!%$%k(B,$B%P!<%A%c%k%[%9%H(B,$B%G%#%l%/%H%j(B,.htaccess</td> + href="../mod/directive-dict.html#Context">コンテキスト:</a></td> + <td>サーバ設定ファイル,バーチャルホスト,ディレクトリ,.htaccess</td> </tr> <tr> <td><a - href="../mod/directive-dict.html#Override">$B>e=q$-(B:</a></td> + href="../mod/directive-dict.html#Override">上書き:</a></td> <td>FileInfo</td> </tr> </table> </example> - <p>$B$"$k%G%#%l%/%F%#%V$r(B <code>.htaccess</code> $B%U%!%$%k$K=q$/$3$H$,$G$-$k$+(B - $B$I$&$+$o$+$i$J$$$H$-$O!"$=$N%G%#%l%/%F%#%V$N@bL@$rC5$7$F!"(B".htaccess" - $B$N$?$a$N!V%3%s%F%-%9%H!W$N9T$rD4$Y$F$/$@$5$$!#(B</p> + <p>あるディレクティブを <code>.htaccess</code> ファイルに書くことができるか + どうかわからないときは、そのディレクティブの説明を探して、".htaccess" + のための「コンテキスト」の行を調べてください。</p> </section> - <section id="when"><title>$B$$$D(B .htaccess $B%U%!%$%k$r;H$&(B($B;H$o$J$$(B)$B$+!#(B</title> - - <p>$B0lHLE*$K!"%5!<%P$N<g@_Dj%U%!%$%k$K%"%/%;%9$G$-$J$$>l9g$r=|$$$F!"(B - <code>.htaccess</code> $B%U%!%$%k$N;HMQ$O6KNOHr$1$F$/$@$5$$!#(B - $B@$$NCf$K$O!"Nc$($P!"%f!<%6G'>Z$O>o$K(B <code>.htaccess</code> $B%U%!%$%k$G(B - $B9T$J$o$J$1$l$P$J$i$J$$!"$H$$$&8m2r$,9-$^$C$F$$$^$9$,!"$^$C$?$/$=$s$J$3$H$O(B - $B$"$j$^$;$s!#%f!<%6G'>Z$N@_Dj$O%5!<%P<g@_Dj%U%!%$%k$K=q$/$3$H$,$G$-!"(B - $B<B:]!"$=$NJ}$,$h$jNI$$@_DjJ}K!$G$9!#(B</p> - - <p><code>.htaccess</code> $B%U%!%$%k$O%3%s%F%s%DDs6!<T$,%G%#%l%/%H%jKh$N(B - $B@_Dj$r9T$J$$$?$$$1$l$I!"%5!<%P%7%9%F%`$N(B root $B%"%/%;%98"8B$r;}$C$F$$$J$$(B - $B$H$$$&>l9g$K$N$_;H$&$Y$-$b$N$G$9!#%5!<%P4IM}<T$,IQHK$K@_DjJQ99$r9T$J$$$?$/$O(B - $B$J$$!"$H$$$&$H$-$K$O8D!9$N%f!<%6$,(B <code>.htaccess</code> $B%U%!%$%k$r;H$C$F(B - $B<+J,$G@_Dj$NJQ99$r9T$J$&$3$H$r5v2D$7$?J}$,NI$$$H$-$b$"$k$G$7$g$&!#(B - $B$3$l$OFC$K!"(BISP $B$,J#?t$N%f!<%6$N%5%$%H$r0l$D$N%^%7%s$G%[%9%H$7$F$$$F!"(B - $B3F%f!<%6$,@_Dj$NJQ99$r$G$-$k$h$&$K$7$?$$$h$&$J$H$-$K$"$F$O$^$j$^$9!#(B</p> - - <p>$B$7$+$7!"IaDL$O2DG=$G$"$l$P(B <code>.htaccess</code> $B%U%!%$%k$N;HMQ$O(B - $BHr$1$F$/$@$5$$!#(B<code>.htaccess</code> $B%U%!%$%k$K=q$3$&$H9M$($k$h$&$J(B - $B$9$Y$F$N@_Dj$O!"%5!<%P$N<g@_Dj%U%!%$%k$N(B <directive module="core" - type="section">Directory</directive> $B%;%/%7%g%s$GF1$8$h$&$K9T$J$&$3$H$,(B - $B$G$-$^$9!#(B</p> - - <p><code>.htaccess</code> $B%U%!%$%k$N;HMQ$rHr$1$kM}M3$O<g$KFs$D$"$j$^$9!#(B</p> - - <p>$B0l$DL\$O%5!<%P$N@-G=$NLdBj$G$9!#(B<directive - module="core">AllowOverride</directive> $B%G%#%l%/%F%#%V$,(B - <code>.htaccess</code> $B%U%!%$%k$N@_Dj$r5v2D$7$F$$$k>l9g$O!"(BApache $B$O(B - $B3F%G%#%l%/%H%j$G(B <code>.htaccess</code> $B%U%!%$%k$rC5$7$^$9!#(B - $B$G$9$+$i!"(B<code>.htaccess</code> $B%U%!%$%k$r5v2D$9$k$H!"<B:]$K;HMQ$7$F$$$k$+(B - $B$I$&$+$K4X$o$i$:!"@-G=$NDc2<$r>7$/$3$H$K$J$j$^$9(B! $B$^$?!"(B<code>.htaccess</code> - $B%U%!%$%k$OJ8=q$,%j%/%(%9%H$5$l$kEY$KFI$_9~$^$l$^$9!#(B</p> - - <p>$B$5$i$K!"(BApache $B$OE,MQ$9$Y$-%G%#%l%/%F%#%V$r=8$a$k$?$a$K!"$9$Y$F$N(B - $B>e0L$N%G%#%l%/%H%j$N(B <code>.htaccess</code> $B%U%!%$%k$rC5$9I,MW$,$"$k$3$H$K$b(B - $BCm0U$7$F$/$@$5$$!#(B(<a href="#how">$B%G%#%l%/%F%#%V$,E,MQ$5$l$kJ}K!(B</a>$B$r(B - $B;2>H$7$F$/$@$5$$!#(B)$B$G$9$+$i!"(B<code>/www/htdocs/example</code> $B$K$"$k(B - $B%U%!%$%k$,%j%/%(%9%H$5$l$?$H$-$O!"(BApache $B$O0J2<$N%U%!%$%k$rD4$Y$^$9!#(B</p> + <section id="when"><title>いつ .htaccess ファイルを使う(使わない)か。</title> + + <p>一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、 + <code>.htaccess</code> ファイルの使用は極力避けてください。 + 世の中には、例えば、ユーザ認証は常に <code>.htaccess</code> ファイルで + 行なわなければならない、という誤解が広まっていますが、まったくそんなことは + ありません。ユーザ認証の設定はサーバ主設定ファイルに書くことができ、 + 実際、その方がより良い設定方法です。</p> + + <p><code>.htaccess</code> ファイルはコンテンツ提供者がディレクトリ毎の + 設定を行ないたいけれど、サーバシステムの root アクセス権限を持っていない + という場合にのみ使うべきものです。サーバ管理者が頻繁に設定変更を行ないたくは + ない、というときには個々のユーザが <code>.htaccess</code> ファイルを使って + 自分で設定の変更を行なうことを許可した方が良いときもあるでしょう。 + これは特に、ISP が複数のユーザのサイトを一つのマシンでホストしていて、 + 各ユーザが設定の変更をできるようにしたいようなときにあてはまります。</p> + + <p>しかし、普通は可能であれば <code>.htaccess</code> ファイルの使用は + 避けてください。<code>.htaccess</code> ファイルに書こうと考えるような + すべての設定は、サーバの主設定ファイルの <directive module="core" + type="section">Directory</directive> セクションで同じように行なうことが + できます。</p> + + <p><code>.htaccess</code> ファイルの使用を避ける理由は主に二つあります。</p> + + <p>一つ目はサーバの性能の問題です。<directive + module="core">AllowOverride</directive> ディレクティブが + <code>.htaccess</code> ファイルの設定を許可している場合は、Apache は + 各ディレクトリで <code>.htaccess</code> ファイルを探します。 + ですから、<code>.htaccess</code> ファイルを許可すると、実際に使用しているか + どうかに関わらず、性能の低下を招くことになります! また、<code>.htaccess</code> + ファイルは文書がリクエストされる度に読み込まれます。</p> + + <p>さらに、Apache は適用すべきディレクティブを集めるために、すべての + 上位のディレクトリの <code>.htaccess</code> ファイルを探す必要があることにも + 注意してください。(<a href="#how">ディレクティブが適用される方法</a>を + 参照してください。)ですから、<code>/www/htdocs/example</code> にある + ファイルがリクエストされたときは、Apache は以下のファイルを調べます。</p> <example> /.htaccess<br /> @@ -166,37 +166,37 @@ /www/htdocs/example/.htaccess </example> - <p>$B$G$9$+$i!"$=$N%G%#%l%/%H%j$N$=$l$>$l$N%U%!%$%k$X$N%"%/%;%9$KBP$7$F!"(B - $B>e$NNc$N%U%!%$%k$,$^$C$?$/B8:_$7$J$$$H$-$G$b!"DI2C$N%U%!%$%k%7%9%F%`$N(B - $B%"%/%;%9$,9T$J$o$l$k$3$H$K$J$j$^$9!#(B($B$3$l$O!"(B<code>.htaccess</code> $B$,(B - <code>/</code> $B$KBP$7$FM-8z$K$J$C$F$$$k$H$-$N>l9g$G!"IaDL$O$=$&$J$C$F(B - $B$$$J$$$3$H$KCm0U$7$F$/$@$5$$!#(B)</p> - - <p>$BFs$DL\$O%;%-%e%j%F%#$G$9!#%f!<%6$K%5!<%P$N@_Dj$rJQ99$9$k$3$H$r(B - $B5v2D$9$k$3$H$K$J$j$^$9$N$G!"$"$J$?<+?H$,4IM}$G$-$J$$JQ99$r$5$l$k(B - $B62$l$,$"$j$^$9!#%f!<%6$K$3$NFC8"$rM?$($k$N$,NI$$$N$+$I$&$+!"==J,(B - $B8!F$$7$F$/$@$5$$!#$^$?!"%f!<%6$KM?$($k8"8B$,I,MW$J$b$N$h$j$b>/$J$9$.$k$H!"(B - $BM>J,$J5;=Q%5%]!<%HJs9p$r<u$1<h$k$h$&$K$J$k2DG=@-$,9b$$$3$H$K$b(B - $BCm0U$7$F$/$@$5$$!#3N<B$K!"%f!<%6$K$I$NDxEY$N8"8B$rM?$($?$+L@3N$K9p$2$k$h$&$K(B - $B$7$F$/$@$5$$!#(B<directive module="core">AllowOverride</directive> $B$K(B - $B2?$r@_Dj$7$?$+$H$$$&$3$H$H!"4XO"$9$kJ8=q$r<($9$3$H$G!"(B - $B8e!9$N:.Mp$r$0$C$H8:$i$9$3$H$,(B - $B$G$-$^$9!#(B</p> - - <p>$B$H$3$m$G!"%G%#%l%/%F%#%V$N=q$+$l$?(B <code>.htaccess</code> $B$r(B - <code>/www/htdocs/example</code> $B$KCV$/$3$H$H!"F1$8%G%#%l%/%F%#%V$r(B - $B<g%5!<%P@_Dj$N(B Directory $B%;%/%7%g%s(B - <code><Directory /www/htdocs/example></code> $B$K=q$/$3$H$O(B - $B40A4$KEy2A$G$9(B:</p> - - <p><code>/www/htdocs/example</code> $B$N(B <code>.htaccess</code> $B%U%!%$%k(B:</p> - - <example><title><code>/www/htdocs/example</code> $B$N(B .htaccess $B%U%!%$%k$N(B - $BFbMF(B</title> + <p>ですから、そのディレクトリのそれぞれのファイルへのアクセスに対して、 + 上の例のファイルがまったく存在しないときでも、追加のファイルシステムの + アクセスが行なわれることになります。(これは、<code>.htaccess</code> が + <code>/</code> に対して有効になっているときの場合で、普通はそうなって + いないことに注意してください。)</p> + + <p>二つ目はセキュリティです。ユーザにサーバの設定を変更することを + 許可することになりますので、あなた自身が管理できない変更をされる + 恐れがあります。ユーザにこの特権を与えるのが良いのかどうか、十分 + 検討してください。また、ユーザに与える権限が必要なものよりも少なすぎると、 + 余分な技術サポート報告を受け取るようになる可能性が高いことにも + 注意してください。確実に、ユーザにどの程度の権限を与えたか明確に告げるように + してください。<directive module="core">AllowOverride</directive> に + 何を設定したかということと、関連する文書を示すことで、 + 後々の混乱をぐっと減らすことが + できます。</p> + + <p>ところで、ディレクティブの書かれた <code>.htaccess</code> を + <code>/www/htdocs/example</code> に置くことと、同じディレクティブを + 主サーバ設定の Directory セクション + <code><Directory /www/htdocs/example></code> に書くことは + 完全に等価です:</p> + + <p><code>/www/htdocs/example</code> の <code>.htaccess</code> ファイル:</p> + + <example><title><code>/www/htdocs/example</code> の .htaccess ファイルの + 内容</title> AddType text/example .exm </example> - <example><title><code>httpd.conf $B$N%;%/%7%g%s(B</code> + <example><title><code>httpd.conf のセクション</code> file</title> <Directory /www/htdocs/example><br /> <indent> @@ -205,60 +205,60 @@ </Directory> </example> - <p>$B$7$+$7!"$3$N@_Dj$O%5!<%P@_Dj%U%!%$%k$K=q$$$?J}$,%Q%U%)!<%^%s%9$N(B - $BDc2<$,>/$J$/$J$j$^$9!#%U%!%$%k$,%j%/%(%9%H$5$l$kEY$K(B - $BFI$_9~$^$l$kBe$o$j$K!"(BApache $B$N5/F0;~$K(B 1 $B2s$@$1FI$_9~$a$P(B - $B$h$/$J$k$+$i$G$9!#(B</p> + <p>しかし、この設定はサーバ設定ファイルに書いた方がパフォーマンスの + 低下が少なくなります。ファイルがリクエストされる度に + 読み込まれる代わりに、Apache の起動時に 1 回だけ読み込めば + よくなるからです。</p> - <p><directive module="core">AllowOverride</directive> $B%G%#%l%/%F%#%V$N(B - $BCM$r(B <code>none</code> $B$K@_Dj$9$k$3$H$G(B <code>.htaccess</code> $B%U%!%$%k(B - $B$N;HMQ$r40A4$KL58z$K$9$k$3$H$,$G$-$^$9!#(B</p> + <p><directive module="core">AllowOverride</directive> ディレクティブの + 値を <code>none</code> に設定することで <code>.htaccess</code> ファイル + の使用を完全に無効にすることができます。</p> <example> AllowOverride None </example> </section> -<section id="how"><title>$B%G%#%l%/%F%#%V$NE,MQ$N$5$lJ}(B</title> +<section id="how"><title>ディレクティブの適用のされ方</title> - <p><code>.htaccess</code> $B%U%!%$%k$N@_Dj%G%#%l%/%F%#%V$O(B <code>.htaccess</code> - $B%U%!%$%k$NB8:_$9$k%G%#%l%/%H%j$H!"$=$N%5%V%G%#%l%/%H%j$9$Y$F$KE,MQ$5$l$^$9!#(B - $B$7$+$7!">e$N3,AX$N%G%#%l%/%H%j$K$b(B <code>.htaccess</code> $B%U%!%$%k$,(B - $BB8:_$9$k$+$b$7$l$J$$$3$H$r3P$($F$*$/$3$H$OBg@Z$G$9!#%G%#%l%/%F%#%V$O8=$l$k(B - $B=gHV$KE,MQ$5$l$^$9!#$G$9$+$i!"$"$k%G%#%l%/%H%j$N(B <code>.htaccess</code> $B$O(B - $B%G%#%l%/%H%j%D%j!<$N$h$j>e$N3,AX$N(B <code>.htaccess</code> $B%U%!%$%k$N(B - $B@_Dj$r>e=q$-$9$k$+$b$7$l$^$;$s!#$=$7$F!"$=$N(B <code>.htaccess</code> $B$b(B - $B$h$j>e$N3,AX$G=q$+$l$?%G%#%l%/%F%#%V$r>e=q$-$7$?$j!"<g%5!<%P@_Dj%U%!%$%k(B - $B$=$N$b$N$N@_Dj$r>e=q$-$7$?$j$7$F$$$k$+$b$7$l$^$;$s!#(B</p> + <p><code>.htaccess</code> ファイルの設定ディレクティブは <code>.htaccess</code> + ファイルの存在するディレクトリと、そのサブディレクトリすべてに適用されます。 + しかし、上の階層のディレクトリにも <code>.htaccess</code> ファイルが + 存在するかもしれないことを覚えておくことは大切です。ディレクティブは現れる + 順番に適用されます。ですから、あるディレクトリの <code>.htaccess</code> は + ディレクトリツリーのより上の階層の <code>.htaccess</code> ファイルの + 設定を上書きするかもしれません。そして、その <code>.htaccess</code> も + より上の階層で書かれたディレクティブを上書きしたり、主サーバ設定ファイル + そのものの設定を上書きしたりしているかもしれません。</p> - <p>$BNc(B:</p> + <p>例:</p> - <p>$B%G%#%l%/%H%j(B <code>/www/htdocs/example1</code> $B$K0J2<$NFbMF$N(B - <code>.htaccess</code> $B%U%!%$%k$,$"$j$^$9(B:</p> + <p>ディレクトリ <code>/www/htdocs/example1</code> に以下の内容の + <code>.htaccess</code> ファイルがあります:</p> <example> Options +ExecCGI </example> - <p>($BCm(B: <code>.htaccess</code> - $B%U%!%$%k$G(B "<directive - module="core">Options</directive>" $B%G%#%l%/%F%#%V$,M-8z$K$J$k$?$a$K$O!"(B - "<code>AllowOverride Options</code>" $B$rM-8z$K$9$kI,MW$,$"$j$^$9!#(B)</p> + <p>(注: <code>.htaccess</code> + ファイルで "<directive + module="core">Options</directive>" ディレクティブが有効になるためには、 + "<code>AllowOverride Options</code>" を有効にする必要があります。)</p> - <p>$B%G%#%l%/%H%j(B <code>/www/htdocs/example1/example2</code> $B$K$O(B - $B0J2<$N$h$&$J(B <code>.htaccess</code> $B%U%!%$%k$,$"$j$^$9(B:</p> + <p>ディレクトリ <code>/www/htdocs/example1/example2</code> には + 以下のような <code>.htaccess</code> ファイルがあります:</p> <example> Options Includes </example> - <p>$BFs$D$a$N(B <code>.htaccess</code> $B$K$h$j!"%G%#%l%/%H%j(B - <code>/www/htdocs/example1/example2</code> $B$G$O(B CGI $B$N<B9T$O(B - $B5v2D$5$l$^$;$s!#$3$l$O!"(B<code>Options Includes</code> $B$N$_$,(B - $B8zNO$r;}$A!"$=$l$,$9$Y$F$N0JA0$N@_Dj$r>e=q$-$9$k$+$i$G$9!#(B</p> + <p>二つめの <code>.htaccess</code> により、ディレクトリ + <code>/www/htdocs/example1/example2</code> では CGI の実行は + 許可されません。これは、<code>Options Includes</code> のみが + 効力を持ち、それがすべての以前の設定を上書きするからです。</p> - <section id="merge"><title>$B%a%$%s@_Dj%U%!%$%k$KBP$9$k(B - .htaccess $B$N%^!<%8(B</title> + <section id="merge"><title>メイン設定ファイルに対する + .htaccess のマージ</title> <p>As discussed in the documentation on <a href="../sections.html">Configuration Sections</a>, @@ -271,18 +271,18 @@ module="core">AllowOverride</directive> setting. For example, to prevent script execution while allowing anything else to be set in <code>.htaccess</code> you can use:</p> - <p><a href="../sections.html">$B%;%/%7%g%s$N@_Dj(B</a> - $B$K5-:\$5$l$F$$$k$h$&$K!"(B<code>.htaccess</code> $B%U%!%$%k$r;H$C$F(B + <p><a href="../sections.html">セクションの設定</a> + に記載されているように、<code>.htaccess</code> ファイルを使って <directive type="section" module="core">Directory</directive> - $B%;%/%7%g%s$N@_Dj$r%G%#%l%/%H%jKh$K>e=q$-$G$-$^$9$,!"(B - $B%a%$%s@_Dj%U%!%$%kCf$K$"$k!"B>$N<oN`$N@_Dj%;%/%7%g%s$K$h$C$F(B - $B$5$i$K>e=q$-$5$l$k$3$H$b$"$j$^$9!#(B - $B$3$NFCD'$r;H$C$F!"(B + セクションの設定をディレクトリ毎に上書きできますが、 + メイン設定ファイル中にある、他の種類の設定セクションによって + さらに上書きされることもあります。 + この特徴を使って、 <directive module="core">AllowOverride</directive> - $B$G<+M3EY$N9b$$@_Dj$,$"$C$?$H$7$F$b!"$"$kFCDj$N@_Dj$,3N<B$K(B - $BH?1G$5$l$k$h$&$K$G$-$^$9!#Nc$($P!"(BCGI $B%9%/%j%W%H$N<B9T$O(B - $BIT5v2D$K!"$+$D!"(B<code>.htaccess</code> $B$G$=$NB>$N9`L\$O(B - $B@_Dj$G$-$k$h$&$K!"$H$$$&>l9g$O<!$N$h$&$K$G$-$^$9(B :</p> + で自由度の高い設定があったとしても、ある特定の設定が確実に + 反映されるようにできます。例えば、CGI スクリプトの実行は + 不許可に、かつ、<code>.htaccess</code> でその他の項目は + 設定できるように、という場合は次のようにできます :</p> <example> <Directory /><br /> @@ -301,24 +301,24 @@ Options +IncludesNoExec -ExecCGI<br /> </section> -<section id="auth"><title>$BG'>Z$NNc(B</title> +<section id="auth"><title>認証の例</title> - <p>$B$b$7G'>Z$NJ}K!$rCN$k$?$a$K$3$NItJ,$KD>@\Mh$?$N$G$"$l$P!"<!$N$3$H$r(B - $BCN$C$F$*$/$3$H$,=EMW$G$9!#$h$/$"$k8m2r$K!"%Q%9%o!<%IG'>Z$r9T$J$&$?$a$K$O(B - <code>.htaccess</code> $B%U%!%$%k$r;H$&I,MW$,$"$k!"$H$$$&$b$N$,$"$j$^$9!#(B - $B$3$l$O@5$7$/$"$j$^$;$s!#<g%5!<%P@_Dj%U%!%$%k$N(B <directive - module="core" type="section">Directory</directive> $B%;%/%7%g%s$K(B - $BG'>ZMQ$N%G%#%l%/%F%#%V$r=q$/J}$,?d>)$5$l$kJ}K!$G!"(B<code>.htaccess</code> - $B%U%!%$%k$O<g%5!<%P@_Dj%U%!%$%k$rJQ99$G$-$J$$$H$-$K$N$_;HMQ$9$Y$-$G$9!#(B - $B$$$D(B <code>.htaccess</code> $B%U%!%$%k$r;H$&$Y$-$G!"$$$D;H$&$Y$-$G$O$J$$$+$K(B - $B$D$$$F$O(B <a - href="#when">$B>e(B</a>$B$r;2>H$7$F$/$@$5$$!#(B</p> + <p>もし認証の方法を知るためにこの部分に直接来たのであれば、次のことを + 知っておくことが重要です。よくある誤解に、パスワード認証を行なうためには + <code>.htaccess</code> ファイルを使う必要がある、というものがあります。 + これは正しくありません。主サーバ設定ファイルの <directive + module="core" type="section">Directory</directive> セクションに + 認証用のディレクティブを書く方が推奨される方法で、<code>.htaccess</code> + ファイルは主サーバ設定ファイルを変更できないときにのみ使用すべきです。 + いつ <code>.htaccess</code> ファイルを使うべきで、いつ使うべきではないかに + ついては <a + href="#when">上</a>を参照してください。</p> - <p>$B0J>e$N$3$H$r$U$^$($?>e$G!"$b$7(B <code>.htaccess</code> $B$N;HMQ$,(B - $B$^$@I,MW$@$H;W$&>l9g$O!"<!$N$h$&$J$b$N$,K>$_$N$3$H$r$7$F$/$l$k$+$b(B - $B$7$l$^$;$s!#(B</p> + <p>以上のことをふまえた上で、もし <code>.htaccess</code> の使用が + まだ必要だと思う場合は、次のようなものが望みのことをしてくれるかも + しれません。</p> - <p><code>.htaccess</code> $B%U%!%$%k$NFbMF(B:</p> + <p><code>.htaccess</code> ファイルの内容:</p> <example> AuthType Basic<br /> @@ -328,20 +328,20 @@ Options +IncludesNoExec -ExecCGI<br /> Require Group admins </example> - <p>$B$3$l$i$N%G%#%l%/%F%#%V$,M-8z$K$J$k$?$a$K$O!"(B - <code>AllowOverride AuthConfig</code> $B$,M-8z$G$J$/$F$O$J$i$J$$$3$H$K(B - $BCm0U$7$F$/$@$5$$!#(B</p> + <p>これらのディレクティブが有効になるためには、 + <code>AllowOverride AuthConfig</code> が有効でなくてはならないことに + 注意してください。</p> - <p>$BG'>Z$H>5G'$K$D$$$F$O(B <a href="auth.html">$BG'>Z%A%e!<%H%j%"%k(B</a>$B$r(B - $B;2>H$7$F$/$@$5$$!#(B</p> + <p>認証と承認については <a href="auth.html">認証チュートリアル</a>を + 参照してください。</p> </section> -<section id="ssi"><title>SSI $B$NNc(B</title> +<section id="ssi"><title>SSI の例</title> - <p>$B$b$&0l$D$N(B <code>.htaccess</code> $B%U%!%$%k$N$h$/$"$kMxMQK!$O(B - $BFCDj$N%G%#%l%/%H%j$G(B SSI $B$rM-8z$K$9$k$3$H$G$9!#$3$l$O!"K>$_$N%G%#%l%/%H%j$N(B - <code>.htaccess</code> $B%U%!%$%k$K0J2<$N@_Dj%G%#%l%/%F%#%V$r=q$/$3$H$G(B - $BC#@.$G$-$^$9(B:</p> + <p>もう一つの <code>.htaccess</code> ファイルのよくある利用法は + 特定のディレクトリで SSI を有効にすることです。これは、望みのディレクトリの + <code>.htaccess</code> ファイルに以下の設定ディレクティブを書くことで + 達成できます:</p> <example> Options +Includes<br /> @@ -349,59 +349,59 @@ Options +IncludesNoExec -ExecCGI<br /> AddHandler server-parsed shtml </example> - <p>$B$3$l$i$N%G%#%l%/%F%#%V$,M-8z$K$J$k$?$a$K$O!"(B - <code>AllowOverride Options</code> $B$H(B <code>AllowOverride - FileInfo</code> $B$,M-8z$K$J$C$F$$$kI,MW$,$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + <p>これらのディレクティブが有効になるためには、 + <code>AllowOverride Options</code> と <code>AllowOverride + FileInfo</code> が有効になっている必要があることに注意してください。</p> - <p>$B$h$j$^$H$^$C$?(B SSI $B$N@bL@$O(B <a href="ssi.html">SSI $B%A%e!<%H%j%"%k(B</a>$B$r(B - $B;2>H$7$F$/$@$5$$!#(B</p> + <p>よりまとまった SSI の説明は <a href="ssi.html">SSI チュートリアル</a>を + 参照してください。</p> </section> -<section id="cgi"><title>CGI $B$NNc(B</title> +<section id="cgi"><title>CGI の例</title> - <p>$B:G8e$K!"FCDj$N%G%#%l%/%H%j$G(B CGI $B%W%m%0%i%`$N<B9T$r5v2D$7$?$$$3$H$,(B - $B$"$k$G$7$g$&!#$3$l$O0J2<$N@_Dj$G9T$J$&$3$H$,$G$-$^$9(B:</p> + <p>最後に、特定のディレクトリで CGI プログラムの実行を許可したいことが + あるでしょう。これは以下の設定で行なうことができます:</p> <example> Options +ExecCGI<br /> AddHandler cgi-script cgi pl </example> - <p>$B$b$7$/$O!"$"$k%G%#%l%/%H%j$N$9$Y$F$N%U%!%$%k$,(B CGI $B%W%m%0%i%`$H(B - $B$_$J$5$l$k$h$&$K$7$?$$$J$i!"0J2<$N@_Dj$G<B8=$9$k$3$H$,$G$-$^$9(B:</p> + <p>もしくは、あるディレクトリのすべてのファイルが CGI プログラムと + みなされるようにしたいなら、以下の設定で実現することができます:</p> <example> Options +ExecCGI<br /> SetHandler cgi-script </example> - <p>$B$3$l$i$N%G%#%l%/%F%#%V$,M-8z$K$J$k$?$a$K$O!"(B - <code>AllowOverride Options</code> $B$H(B <code>AllowOverride - FileInfo</code> $B$,M-8z$G$"$kI,MW$,$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + <p>これらのディレクティブが有効になるためには、 + <code>AllowOverride Options</code> と <code>AllowOverride + FileInfo</code> が有効である必要があることに注意してください。</p> - <p>CGI $B%W%m%0%i%`$H@_Dj$N$h$j$^$H$^$C$?@bL@$O(B <a - href="cgi.html">CGI $B%A%e!<%H%j%"%k(B</a>$B$r;2>H$7$F$/$@$5$$!#(B</p> + <p>CGI プログラムと設定のよりまとまった説明は <a + href="cgi.html">CGI チュートリアル</a>を参照してください。</p> </section> -<section id="troubleshoot"><title>$BLdBj2r7h(B</title> +<section id="troubleshoot"><title>問題解決</title> - <p>$B@_Dj%G%#%l%/%F%#%V$r(B <code>.htaccess</code> $B%U%!%$%k$K=q$$$?$1$l$I$b!"(B - $B4|BT$7$?8z2L$,F@$i$l$J$$$H$-$K$O!"$$$/$D$+$N860x$,9M$($i$l$^$9!#(B</p> + <p>設定ディレクティブを <code>.htaccess</code> ファイルに書いたけれども、 + 期待した効果が得られないときには、いくつかの原因が考えられます。</p> - <p>$B0lHV$h$/$"$k$3$H$O!"@_Dj%G%#%l%/%F%#%V$,9MN8$5$l$k$h$&$K$O(B - <directive module="core">AllowOverride</directive> $B$,@_Dj$5$l$F$$$J$$(B - $B$H$$$&$b$N$G$9!#3:Ev$N%U%!%$%k$N%9%3!<%W$K(B <code>AllowOverride None</code> - $B$,@_Dj$5$l$F$$$J$$$3$H$r3NG'$7$F$/$@$5$$!#$3$l$rD4$Y$k$?$a$NNI$$J}K!$O!"(B - <code>.htaccess</code> $B%U%!%$%k$K$4$_$r=q$$$F!"%j%m!<%I$9$k$3$H$G$9!#(B - $B%5!<%P$N%(%i!<$,@8@.$5$l$J$$$H$-$O!"$[$\3N<B$K(B <code>AllowOverride - None</code> $B$,@_Dj$5$l$F$$$k>uBV$K$J$C$F$$$^$9!#(B</p> + <p>一番よくあることは、設定ディレクティブが考慮されるようには + <directive module="core">AllowOverride</directive> が設定されていない + というものです。該当のファイルのスコープに <code>AllowOverride None</code> + が設定されていないことを確認してください。これを調べるための良い方法は、 + <code>.htaccess</code> ファイルにごみを書いて、リロードすることです。 + サーバのエラーが生成されないときは、ほぼ確実に <code>AllowOverride + None</code> が設定されている状態になっています。</p> - <p>$B$=$&$G$O$J$/!"J8=q$r%"%/%;%9$7$h$&$H$7$?$H$-$K%(%i!<$,H/@8$7$F$$$k(B - $B$H$-$O!"(BApache $B$N%(%i!<%m%0$rD4$Y$F$/$@$5$$!#(B<code>.htaccess</code> $B%U%!%$%k$G(B - $B;HMQ$5$l$?%G%#%l%/%F%#%V$,5v2D$5$l$F$$$J$$!"$H$$$&$3$H$rCN$i$;$F$$$k(B - $B2DG=@-$,9b$$$G$9!#$^$?$O!"9=J8$N4V0c$$$,$"$k$3$H$r=R$Y$F$$$k$+$b$7$l$^$;$s!#(B - $B$=$N>l9g$K$O$^$:$=$l$r=$@5$9$kI,MW$,$"$j$^$9!#(B</p> + <p>そうではなく、文書をアクセスしようとしたときにエラーが発生している + ときは、Apache のエラーログを調べてください。<code>.htaccess</code> ファイルで + 使用されたディレクティブが許可されていない、ということを知らせている + 可能性が高いです。または、構文の間違いがあることを述べているかもしれません。 + その場合にはまずそれを修正する必要があります。</p> </section> diff --git a/docs/manual/howto/index.xml.ja b/docs/manual/howto/index.xml.ja index fe73f19ff0..3efd07524d 100644 --- a/docs/manual/howto/index.xml.ja +++ b/docs/manual/howto/index.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp" ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -23,74 +23,74 @@ <manualpage metafile="index.xml.meta"> <parentdocument href="../"/> - <title>How-To / $B%A%e!<%H%j%"%k(B</title> + <title>How-To / チュートリアル</title> <section id="howto"> - <title>How-To / $B%A%e!<%H%j%"%k(B</title> + <title>How-To / チュートリアル</title> <dl> - <dt>$BG'>Z(B</dt> + <dt>認証</dt> <dd> - <p>$BG'>Z$H$O!"C/$+$,<+J,$OC/$G$"$k$+$rL>>h$C$F$$$k$b$N$r8!>Z$9$k(B - $B=hM}$N$3$H$G$9!#>5G'$H$O!"C/$+$,K>$_$N>l=j$KC)$jCe$1$?$j!"(B - $BK>$_$N>pJs$r<j$KF~$l$?$j$9$k$3$H$r5v2D$9$k=hM}$N$3$H$G$9!#(B</p> + <p>認証とは、誰かが自分は誰であるかを名乗っているものを検証する + 処理のことです。承認とは、誰かが望みの場所に辿り着けたり、 + 望みの情報を手に入れたりすることを許可する処理のことです。</p> - <p>$B;2>H(B: <a href="auth.html">$BG'>Z!">5G'!"%"%/%;%9@)8f(B</a></p> + <p>参照: <a href="auth.html">認証、承認、アクセス制御</a></p> </dd> </dl> <dl> - <dt>CGI $B$K$h$kF0E*%3%s%F%s%D(B</dt> + <dt>CGI による動的コンテンツ</dt> <dd> - <p>CGI (Common Gateway Interface) $B$O%&%'%V%5!<%P$,30It$N%3%s%F%s%D(B - $B@8@.%W%m%0%i%`$H$I$N$h$&$KAj8_F0:n$r$9$k$+$rDj5A$7$^$9!#(B - $B$=$N30It%W%m%0%i%`$ODL>o(B CGI $B%W%m%0%i%`$d(B CGI $B%9%/%j%W%H$H8F$P$l$^$9!#(B - CGI $B$O%&%'%V%5%$%H$KF0E*$J%3%s%F%s%D$rDI2C$9$k$?$a$N!"(B - $B0lHVC1=c$G$h$/;H$o$l$F$$$kJ}K!$G$9!#$3$NJ8=q$O(B Apache $B%&%'%V%5!<%P$K(B - CGI $B$r@_Dj$7!"(BCGI $B%W%m%0%i%`$r=q$-;O$a$k$?$a$N%$%s%H%m%@%/%7%g%s$G$9!#(B</p> - - <p>$B;2>H(B: <a href="cgi.html">CGI: $BF0E*%3%s%F%s%D(B</a></p> + <p>CGI (Common Gateway Interface) はウェブサーバが外部のコンテンツ + 生成プログラムとどのように相互動作をするかを定義します。 + その外部プログラムは通常 CGI プログラムや CGI スクリプトと呼ばれます。 + CGI はウェブサイトに動的なコンテンツを追加するための、 + 一番単純でよく使われている方法です。この文書は Apache ウェブサーバに + CGI を設定し、CGI プログラムを書き始めるためのイントロダクションです。</p> + + <p>参照: <a href="cgi.html">CGI: 動的コンテンツ</a></p> </dd> </dl> <dl> - <dt><code>.htaccess</code> $B%U%!%$%k(B</dt> + <dt><code>.htaccess</code> ファイル</dt> <dd> - <p><code>.htaccess</code> $B%U%!%$%k$O%G%#%l%/%H%jKh$K@_Dj$rJQ99$9$k$?$a$N(B - $BJ}K!$rDs6!$7$^$9!#@_Dj%G%#%l%/%F%#%V$,=q$+$l$?%U%!%$%k$,!"$"$k%I%-%e%a%s%H(B - $B%G%#%l%/%H%j$KCV$+$l$k$H!"%G%#%l%/%F%#%V$O$=$N%G%#%l%/%H%j$H(B - $B$9$Y$F$N%5%V%G%#%l%/%H%j$KE,MQ$5$l$^$9!#(B</p> + <p><code>.htaccess</code> ファイルはディレクトリ毎に設定を変更するための + 方法を提供します。設定ディレクティブが書かれたファイルが、あるドキュメント + ディレクトリに置かれると、ディレクティブはそのディレクトリと + すべてのサブディレクトリに適用されます。</p> - <p>$B;2>H(B: <a href="htaccess.html"><code>.htaccess</code> $B%U%!%$%k(B</a></p> + <p>参照: <a href="htaccess.html"><code>.htaccess</code> ファイル</a></p> </dd> </dl> <dl> - <dt>Server Side Includes $B%$%s%H%m%@%/%7%g%s(B</dt> + <dt>Server Side Includes イントロダクション</dt> <dd> - <p>SSI (Server Side Includes) $B$O(B HTML $B%Z!<%8Cf$K=q$+$l$k%G%#%l%/%F%#%V$G!"(B - $B%Z!<%8$,Aw$i$l$k;~$K%5!<%P$K$h$jI>2A$5$l$^$9!#$3$l$K$h$j!"%Z!<%8A4BN$r(B - CGI $B%W%m%0%i%`$G@8@.$7$?$j!"B>$NF0E*$J5;=Q$r;H$&$3$H$J$/!"4{B8$N(B HTML - $B%Z!<%8$KF0E*$K@8@.$5$l$?FbMF$rIU2C$9$k$3$H$,$G$-$^$9!#(B</p> + <p>SSI (Server Side Includes) は HTML ページ中に書かれるディレクティブで、 + ページが送られる時にサーバにより評価されます。これにより、ページ全体を + CGI プログラムで生成したり、他の動的な技術を使うことなく、既存の HTML + ページに動的に生成された内容を付加することができます。</p> - <p>$B;2>H(B: <a href="ssi.html">Server Side Includes (SSI)</a></p> + <p>参照: <a href="ssi.html">Server Side Includes (SSI)</a></p> </dd> </dl> <dl> - <dt>$B%f!<%6Kh$N%&%'%V%G%#%l%/%H%j(B</dt> + <dt>ユーザ毎のウェブディレクトリ</dt> <dd> - <p>$BJ#?t%f!<%6$NB8:_$9$k%7%9%F%`$G$O!"$=$l$>$l$N%f!<%6$O(B <directive - module="mod_userdir">UserDir</directive> $B%G%#%l%/%F%#%V$r;H$&$3$H$K$h$C$F(B - $B%[!<%`%G%#%l%/%H%j>e$K%&%'%V%5%$%H$r:n@.$9$k$3$H$,$G$-$^$9!#(B - URL <code>http://example.com/~username/</code> $B$rK,$l$??M$O(B - $B%f!<%6(B "<code>username</code>" $B$N%[!<%`%G%#%l%/%H%j$N!"(B<directive - module="mod_userdir">UserDir</directive> $B%G%#%l%/%F%#%V$G;XDj$5$l$?(B - $B%5%V%G%#%l%/%H%j$+$i%3%s%F%s%D$rF@$k$3$H$K$J$j$^$9!#(B</p> - - <p>$B;2>H(B: <a href="public_html.html" - >$B%f!<%6%&%'%V%G%#%l%/%H%j(B (<code>public_html</code>)</a></p> + <p>複数ユーザの存在するシステムでは、それぞれのユーザは <directive + module="mod_userdir">UserDir</directive> ディレクティブを使うことによって + ホームディレクトリ上にウェブサイトを作成することができます。 + URL <code>http://example.com/~username/</code> を訪れた人は + ユーザ "<code>username</code>" のホームディレクトリの、<directive + module="mod_userdir">UserDir</directive> ディレクティブで指定された + サブディレクトリからコンテンツを得ることになります。</p> + + <p>参照: <a href="public_html.html" + >ユーザウェブディレクトリ (<code>public_html</code>)</a></p> </dd> </dl> diff --git a/docs/manual/howto/public_html.xml.ja b/docs/manual/howto/public_html.xml.ja index 3354998f7f..06df2012a9 100644 --- a/docs/manual/howto/public_html.xml.ja +++ b/docs/manual/howto/public_html.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:659902 (outdated) --> @@ -21,24 +21,24 @@ --> <manualpage metafile="public_html.xml.meta"> -<parentdocument href="./">How-To / $B%A%e!<%H%j%"%k(B</parentdocument> +<parentdocument href="./">How-To / チュートリアル</parentdocument> - <title>$B%f!<%6Kh$N%&%'%V%G%#%l%/%H%j(B</title> + <title>ユーザ毎のウェブディレクトリ</title> <summary> -<p>$BJ#?t$N%f!<%6$N$$$k%7%9%F%`$G$O!"(B<directive - module="mod_userdir">UserDir</directive> $B%G%#%l%/%F%#%V$r;H$C$F(B - $B3F%f!<%6$,%[!<%`%G%#%l%/%H%j$K%&%'%V%5%$%H$r9=C[$G$-$k$h$&$K@_Dj$9$k$3$H$,(B - $B2DG=$G$9!#(BURL <code>http://example.com/~username/</code> $B$rK,$l$??M$O(B - "<code>username</code>" $B$H$$$&%f!<%6$N(B <directive - module="mod_userdir">UserDir</directive> $B%G%#%l%/%F%#%V$G;XDj$5$l$?(B - $B%5%V%G%#%l%/%H%j$+$i%3%s%F%s%D$rF@$k$3$H$K$J$j$^$9!#(B</p> +<p>複数のユーザのいるシステムでは、<directive + module="mod_userdir">UserDir</directive> ディレクティブを使って + 各ユーザがホームディレクトリにウェブサイトを構築できるように設定することが + 可能です。URL <code>http://example.com/~username/</code> を訪れた人は + "<code>username</code>" というユーザの <directive + module="mod_userdir">UserDir</directive> ディレクティブで指定された + サブディレクトリからコンテンツを得ることになります。</p> </summary> -<seealso><a href="../urlmapping.html">URL $B$+$i%U%!%$%k%7%9%F%`$X$N%^%C%T%s%0(B</a></seealso> +<seealso><a href="../urlmapping.html">URL からファイルシステムへのマッピング</a></seealso> <section id="related"> - <title>$B%f!<%6Kh$N%&%'%V%G%#%l%/%H%j(B</title> + <title>ユーザ毎のウェブディレクトリ</title> <related> <modulelist> <module>mod_userdir</module> @@ -52,77 +52,77 @@ </section> <section id="userdir"> - <title>UserDir $B$r;H$C$F%U%!%$%k$N%Q%9$r@_Dj$9$k(B</title> + <title>UserDir を使ってファイルのパスを設定する</title> - <p><directive module="mod_userdir">UserDir</directive> $B%G%#%l%/%F%#%V$O(B - $B%f!<%6Kh$N%3%s%F%s%D$,FI$_9~$^$l$k%G%#%l%/%H%j$r;XDj$7$^$9!#(B - $B$3$N%G%#%l%/%F%#%V$O$$$m$$$m0c$C$?7A<0$r<h$k$3$H$,$G$-$^$9!#(B</p> + <p><directive module="mod_userdir">UserDir</directive> ディレクティブは + ユーザ毎のコンテンツが読み込まれるディレクトリを指定します。 + このディレクティブはいろいろ違った形式を取ることができます。</p> - <p>$B%9%i%C%7%e$G;O$^$i$J$$%Q%9$,M?$($i$l$?$H$-$O!"%f!<%6$N%[!<%`%G%#%l%/%H%j(B - $B$+$i$NAjBP%Q%9$H$_$J$5$l$^$9!#<!$N@_Dj$,$"$C$?$H$-$K(B:</p> + <p>スラッシュで始まらないパスが与えられたときは、ユーザのホームディレクトリ + からの相対パスとみなされます。次の設定があったときに:</p> <example> UserDir public_html </example> - <p>URL <code>http://example.com/~rbowen/file.html</code> $B$O(B - $B%Q%9(B <code>/home/rbowen/public_html/file.html</code> $B$X(B - $BJQ49$5$l$^$9!#(B</p> + <p>URL <code>http://example.com/~rbowen/file.html</code> は + パス <code>/home/rbowen/public_html/file.html</code> へ + 変換されます。</p> - <p>$B%Q%9$,%9%i%C%7%e$G;O$^$k$H$-$O!"%G%#%l%/%H%j%Q%9$O$=$N%Q%9$K(B - $B%f!<%6L>$r2C$($?$b$N$+$i$J$j$^$9!#<!$N@_Dj$N$H$-(B:</p> + <p>パスがスラッシュで始まるときは、ディレクトリパスはそのパスに + ユーザ名を加えたものからなります。次の設定のとき:</p> <example> UserDir /var/html </example> - <p>URL <code>http://example.com/~rbowen/file.html</code> $B$O(B - $B%Q%9(B <code>/var/html/rbowen/file.html</code> $B$XJQ49$5$l$^$9!#(B</p> + <p>URL <code>http://example.com/~rbowen/file.html</code> は + パス <code>/var/html/rbowen/file.html</code> へ変換されます。</p> - <p>$B%"%9%?%j%9%/(B (*) $B$r4^$`%Q%9$,;XDj$5$l$?$H$-$O!"%"%9%?%j%9%/$r(B - $B%f!<%6L>$GCV49$7$?$b$N$,;HMQ$5$l$^$9!#$3$N$h$&$J@_Dj$@$H(B:</p> + <p>アスタリスク (*) を含むパスが指定されたときは、アスタリスクを + ユーザ名で置換したものが使用されます。このような設定だと:</p> <example> UserDir /var/www/*/docs </example> - <p>URL <code>http://example.com/~rbowen/file.html</code> $B$O(B - $B%Q%9(B <code>/var/www/rbowen/docs/file.html</code> $B$XJQ49$5$l$^$9!#(B</p> + <p>URL <code>http://example.com/~rbowen/file.html</code> は + パス <code>/var/www/rbowen/docs/file.html</code> へ変換されます。</p> </section> <section id="enable"> - <title>$B$3$N5!G=$r;HMQ$G$-$k%f!<%6$r@)8B$9$k(B</title> + <title>この機能を使用できるユーザを制限する</title> - <p>UserDir $B$N%I%-%e%a%s%H$K<($5$l$F$$$k9=J8$r;H$&$3$H$G!"(B - $B$I$N%f!<%6$,$3$N5!G=$r;H$&$3$H$,$G$-$k$+$r@)8B$9$k$3$H$,$G$-$^$9(B:</p> + <p>UserDir のドキュメントに示されている構文を使うことで、 + どのユーザがこの機能を使うことができるかを制限することができます:</p> <example> UserDir enabled<br /> UserDir disabled root jro fish </example> - <p>$B>e$N@_Dj$O(B <code>dissabled</code> $BJ8$N%f!<%60J30$N$9$Y$F$N%f!<%6$K(B - $BBP$7$F(B UserDir $B$N5!G=$rM-8z$K$7$^$9!#F1MM$K$7$F!"0J2<$N$h$&$K(B - $B?tL>$N%f!<%60J30$KBP$7$F$3$N5!G=$rL58z$K$9$k$3$H$b$G$-$^$9(B:</p> + <p>上の設定は <code>dissabled</code> 文のユーザ以外のすべてのユーザに + 対して UserDir の機能を有効にします。同様にして、以下のように + 数名のユーザ以外に対してこの機能を無効にすることもできます:</p> <example> UserDir disabled<br /> UserDir enabled rbowen krietz </example> - <p>$BB>$NNc$O(B <directive module="mod_userdir">UserDir</directive> - $B$N@bL@$r;2>H$7$F$/$@$5$$!#(B</p> + <p>他の例は <directive module="mod_userdir">UserDir</directive> + の説明を参照してください。</p> </section> <section id="cgi"> - <title>$B%f!<%6Kh$N(B CGI $B%G%#%l%/%H%j(B</title> + <title>ユーザ毎の CGI ディレクトリ</title> - <p>$B$=$l$>$l$N%f!<%6$K@lMQ$N(B cgi-bin $B%G%#%l%/%H%j$rM?$($k$?$a$K!"(B + <p>それぞれのユーザに専用の cgi-bin ディレクトリを与えるために、 <directive module="core" type="section">Directory</directive> - $B$r;H$C$F%f!<%6$N%[!<%`%G%#%l%/%H%j$N;XDj$5$l$?NN0h$KBP$7$F(B CGI $B$rM-8z$K(B - $B$9$k$3$H$,$G$-$^$9!#(B</p> + を使ってユーザのホームディレクトリの指定された領域に対して CGI を有効に + することができます。</p> <example> <Directory /home/*/public_html/cgi-bin/><br /> @@ -131,10 +131,10 @@ </Directory> </example> - <p>$B$=$7$F!"(B<code>UserDir</code> $B$,(B - <code>public_html</code> $B$K@_Dj$5$l$F$$$k$H2>Dj$9$k$H!"(B - $B$=$N%G%#%l%/%H%j$N(B CGI $B%W%m%0%i%`(B <code>example.cgi</code> - $B$O0J2<$NMM$K8F$S=P$5$l$k$3$H$,$G$-$^$9(B:</p> + <p>そして、<code>UserDir</code> が + <code>public_html</code> に設定されていると仮定すると、 + そのディレクトリの CGI プログラム <code>example.cgi</code> + は以下の様に呼び出されることができます:</p> <example> http://example.com/~rbowen/cgi-bin/example.cgi @@ -143,15 +143,15 @@ </section> <section id="htaccess"> - <title>$B%f!<%6$K$h$k@_DjJQ99$r5v2D(B</title> - - <p>$B%f!<%6$KH`$i$N%&%'%V6u4V$G$N%5!<%P$N@_Dj$NJQ99$r5v2D$9$k>l9g!"(B - $B%f!<%6$O(B <code>.htaccess</code> $B%U%!%$%k$r;H$C$F@_Dj$rJQ99$9$kI,MW$,$"$j$^$9!#(B - <directive module="core">AllowOverride</directive> $B$NCM$r(B - $B%f!<%6$,JQ99$9$k$3$H$r5v2D$7$?$$%G%#%l%/%F%#%V$KBP$7$F==J,$J$b$N$K(B - $B@_Dj$7$F$$$k$3$H$r3NG'$7$F$/$@$5$$!#$3$N5!G=$,$I$N$h$&$K$7$FF0:n$7$F$$$k$+(B - $B$N>\:Y$O(B <a href="htaccess.html">.htaccess $B%A%e!<%H%j%"%k(B</a> $B$rFI$s$G(B - $B$/$@$5$$!#(B</p> + <title>ユーザによる設定変更を許可</title> + + <p>ユーザに彼らのウェブ空間でのサーバの設定の変更を許可する場合、 + ユーザは <code>.htaccess</code> ファイルを使って設定を変更する必要があります。 + <directive module="core">AllowOverride</directive> の値を + ユーザが変更することを許可したいディレクティブに対して十分なものに + 設定していることを確認してください。この機能がどのようにして動作しているか + の詳細は <a href="htaccess.html">.htaccess チュートリアル</a> を読んで + ください。</p> </section> diff --git a/docs/manual/howto/ssi.xml.ja b/docs/manual/howto/ssi.xml.ja index 68d2715855..b765f2069c 100644 --- a/docs/manual/howto/ssi.xml.ja +++ b/docs/manual/howto/ssi.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 659902 --> @@ -21,16 +21,16 @@ --> <manualpage metafile="ssi.xml.meta"> -<parentdocument href="./">How-To / $B%A%e!<%H%j%"%k(B</parentdocument> +<parentdocument href="./">How-To / チュートリアル</parentdocument> -<title>Apache $B%A%e!<%H%j%"%k(B: Server Side Includes $BF~Lg(B</title> +<title>Apache チュートリアル: Server Side Includes 入門</title> <summary> -<p>$B%5!<%P%5%$%I%$%s%/%k!<%I$K$h$C$F!"4{B8$N(B HTML -$B%I%-%e%a%s%H$KF0E*$J%3%s%F%s%D$rDI2C$9$k$3$H$,$G$-$^$9!#(B</p> +<p>サーバサイドインクルードによって、既存の HTML +ドキュメントに動的なコンテンツを追加することができます。</p> </summary> -<section id="related"><title>$B$O$8$a$K(B</title> +<section id="related"><title>はじめに</title> <related> <modulelist> <module>mod_include</module> @@ -47,149 +47,149 @@ </directivelist> </related> - <p>$B$3$N5-;v$O!"DL>o$OC1$K(B SSI $B$H8F$P$l$k(B Server Side Includes - $B$r07$$$^$9!#$3$N5-;v$K$*$$$F$O!"%5!<%P$G$N(B SSI $B$r5v2D$9$k$?$a$N@_Dj$H!"(B - $B8=:_$N(B HTML $B%Z!<%8$KF0E*$J%3%s%F%s%D$r2C$($k$?$a$N$$$/$D$+$N4pK\E*$J(B - SSI $B5;=Q$r>R2p$7$^$9!#(B</p> + <p>この記事は、通常は単に SSI と呼ばれる Server Side Includes + を扱います。この記事においては、サーバでの SSI を許可するための設定と、 + 現在の HTML ページに動的なコンテンツを加えるためのいくつかの基本的な + SSI 技術を紹介します。</p> - <p>$B5-;v$N8eH>$G$O!"(BSSI $B%G%#%l%/%F%#%V$G(B SSI - $B$H6&$K<B9T$9$k$3$H$,$G$-$k>r7oJ8$N$h$&$J(B - $B4vJ,9bEY$J;vJA$K$D$$$F=R$Y$F$$$^$9!#(B</p> + <p>記事の後半では、SSI ディレクティブで SSI + と共に実行することができる条件文のような + 幾分高度な事柄について述べています。</p> </section> -<section id="what"><title>SSI $B$H$O(B ?</title> +<section id="what"><title>SSI とは ?</title> - <p>SSI (Server Side Includes) $B$O!"(BHTML - $B%Z!<%8Cf$KG[CV$5$l$k%G%#%l%/%F%#%V$G$"$j!"(B - $B%5!<%P$G%Z!<%8$rDs6!$9$k;~$KI>2A$5$l$^$9!#(BSSI $B$O!"(BCGI - $B%W%m%0%i%`$d$=$NB>$NF0E*$J5;=Q$GA4$F$N%Z!<%8$rDs6!$;$:$K!"(B - $BF0E*$K@8@.$5$l$?%3%s%F%s%D$r8=:_$N(B HTML $B%Z!<%8$K2C$($^$9!#(B</p> + <p>SSI (Server Side Includes) は、HTML + ページ中に配置されるディレクティブであり、 + サーバでページを提供する時に評価されます。SSI は、CGI + プログラムやその他の動的な技術で全てのページを提供せずに、 + 動的に生成されたコンテンツを現在の HTML ページに加えます。</p> - <p>$B$I$&$$$&>l9g$K(B SSI $B$r;H$$!"$I$&$$$&>l9g$K%W%m%0%i%`$G(B - $B%Z!<%8$r40A4$K@8@.$9$k$+$O!"%Z!<%8$N$&$A$I$NDxEY$,@EE*$G$"$j!"(B - $B%Z!<%8$,Ds6!$5$l$k$?$S$K:F7W;;$9$kI,MW$,$I$NDxEY$"$k$+$GDL>o$O7hDj$7$^$9!#(B - SSI $B$O8=:_;~9o$N$h$&$J>.$5$$>pJs$r2C$($k$K$O$&$C$F$D$1$NJ}K!$G$9!#(B - $B$7$+$7!"$=$N%Z!<%8$N$[$H$s$I$NItJ,$,Ds6!;~$K@8@.$5$l$k>l9g$O!"(B - $BB>$NJ}K!$rC5$9I,MW$,$"$j$^$9!#(B</p> + <p>どういう場合に SSI を使い、どういう場合にプログラムで + ページを完全に生成するかは、ページのうちどの程度が静的であり、 + ページが提供されるたびに再計算する必要がどの程度あるかで通常は決定します。 + SSI は現在時刻のような小さい情報を加えるにはうってつけの方法です。 + しかし、そのページのほとんどの部分が提供時に生成される場合は、 + 他の方法を探す必要があります。</p> </section> <section id="configuring"> -<title>SSI $B$r5v2D$9$k$?$a$N%5!<%P$N@_Dj(B</title> +<title>SSI を許可するためのサーバの設定</title> - <p>$B%5!<%P$G(B SSI $B$r5v2D$9$k$K$O!"(B<code>httpd.conf</code> - $B%U%!%$%k$^$?$O(B <code>.htaccess</code> - $B%U%!%$%k$K<!$N%G%#%l%/%F%#%V$r;XDj$9$kI,MW$,$"$j$^$9(B:</p> + <p>サーバで SSI を許可するには、<code>httpd.conf</code> + ファイルまたは <code>.htaccess</code> + ファイルに次のディレクティブを指定する必要があります:</p> <example> Options +Includes </example> - <p>$B$3$N;XDj$O!"%U%!%$%k$r(B SSI - $B%G%#%l%/%F%#%V$G2r@O$5$;$k$3$H$r5v2D$9$k$H$$$&$3$H$r(B Apache - $B$KEA$($^$9!#$[$H$s$I$N@_Dj$G$O$*8_$$$r>e=q$-$G$-$k!"J#?t$N(B - <directive module="core">Options</directive> $B$,$"$k$3$H$K(B - $BCm0U$7$F$/$@$5$$!#$*$=$i$/!"@_Dj$,:G8e$KI>2A$5$l$k$3$H$r(B - $BJ]>Z$5$l$k$?$a$K!"(BSSI $B$r;HMQ$7$?$$%G%#%l%/%H%j$K(B <code>Options</code> - $B%G%#%l%/%F%#%V$rE,MQ$9$kI,MW$,$"$k$G$7$g$&!#(B</p> - - <p>$BA4$F$N%U%!%$%k$,(B SSI - $B%G%#%l%/%F%#%V$G2r@O$5$l$k$H$$$&$o$1$G$O$"$j$^$;$s!#(B - $B$I$N%U%!%$%k$,2r@O$5$l$k$+$r(B Apache $B$KEA$($kI,MW$,$"$j$^$9!#(B - $B$3$l$r9T$J$&$K$OFs$DJ}K!$,$"$j$^$9!#(B - $B<!$N%G%#%l%/%F%#%V$r;H$&$3$H$G!"Nc$($P(B <code>.shtml</code> - $B$N$h$&$JFCJL$J%U%!%$%k3HD%;R$r;}$D%U%!%$%k$r2r@O$9$k$h$&(B - Apache $B$KEA$($k$3$H$,$G$-$^$9(B:</p> + <p>この指定は、ファイルを SSI + ディレクティブで解析させることを許可するということを Apache + に伝えます。ほとんどの設定ではお互いを上書きできる、複数の + <directive module="core">Options</directive> があることに + 注意してください。おそらく、設定が最後に評価されることを + 保証されるために、SSI を使用したいディレクトリに <code>Options</code> + ディレクティブを適用する必要があるでしょう。</p> + + <p>全てのファイルが SSI + ディレクティブで解析されるというわけではありません。 + どのファイルが解析されるかを Apache に伝える必要があります。 + これを行なうには二つ方法があります。 + 次のディレクティブを使うことで、例えば <code>.shtml</code> + のような特別なファイル拡張子を持つファイルを解析するよう + Apache に伝えることができます:</p> <example> AddType text/html .shtml<br /> AddOutputFilter INCLUDES .shtml </example> - <p>$B$3$NJ}K!$N7gE@$O!"$b$78=:_$N%Z!<%8$K(B SSI $B%G%#%l%/%F%#%V$r2C$($?$$>l9g!"(B - $B$=$l$i$N%G%#%l%/%F%#%V$,<B9T$5$l$k$h$&$K(B - <code>.shtml</code> $B3HD%;R$K$9$k$?$a!"$=$N%Z!<%8$NL>A0$H!"(B - $B$=$N%Z!<%8$X$NA4$F$N%j%s%/$rJQ99$7$J$1$l$P$J$i$J$$$3$H$G$9!#(B</p> + <p>この方法の欠点は、もし現在のページに SSI ディレクティブを加えたい場合、 + それらのディレクティブが実行されるように + <code>.shtml</code> 拡張子にするため、そのページの名前と、 + そのページへの全てのリンクを変更しなければならないことです。</p> - <p>$B$b$&0l$D$NJ}K!$O!"(B<directive module="mod_include">XBitHack</directive> - $B%G%#%l%/%F%#%V$r;HMQ$9$k$3$H$G$9(B:</p> + <p>もう一つの方法は、<directive module="mod_include">XBitHack</directive> + ディレクティブを使用することです:</p> <example> XBitHack on </example> <p><directive module="mod_include">XBitHack</directive> - $B$O!"%U%!%$%k$N<B9T%S%C%H$,N)$C$F$$$k>l9g!"(B - SSI $B%G%#%l%/%F%#%V$K$h$j2r@O$9$k$3$H$r(B Apache $B$KEA$($^$9!#(B - $B=>$C$F!"(BSSI $B%G%#%l%/%F%#%V$r8=:_$N%Z!<%8$K2C$($k$?$a$K$O!"(B - $B%U%!%$%kL>$rJQ99$7$J$/$F$b$h$/!"C1$K(B <code>chmod</code> - $B$r;HMQ$7$F%U%!%$%k$r<B9T2DG=$K$9$k$@$1$G:Q$_$^$9!#(B</p> + は、ファイルの実行ビットが立っている場合、 + SSI ディレクティブにより解析することを Apache に伝えます。 + 従って、SSI ディレクティブを現在のページに加えるためには、 + ファイル名を変更しなくてもよく、単に <code>chmod</code> + を使用してファイルを実行可能にするだけで済みます。</p> <example> chmod +x pagename.html </example> - <p>$B9T$J$&$Y$-$G$O$J$$$3$H$K4X$9$kC;$$%3%a%s%H!#;~!9C/$+$,!"A4$F$N(B - <code>.html</code> $B%U%!%$%k$r(B SSI $B$G2r@O$9$k$h$&(B Apache $B$KEA$($l$P!"(B - $B$o$6$o$6(B <code>.shtml</code> $B$H$$$&%U%!%$%kL>$K$9$kI,MW$,$J$$$H$$$C$F(B - $BA&$a$k$N$r8+$k$3$H$G$7$g$&!#$3$&$$$&?M$?$A$O!"$*$=$i$/(B + <p>行なうべきではないことに関する短いコメント。時々誰かが、全ての + <code>.html</code> ファイルを SSI で解析するよう Apache に伝えれば、 + わざわざ <code>.shtml</code> というファイル名にする必要がないといって + 薦めるのを見ることでしょう。こういう人たちは、おそらく <directive module="mod_include">XBitHack</directive> - $B$K$D$$$FJ9$$$?$3$H$,$J$$$N$G$7$g$&!#(B - $B$3$NJ}K!$K$D$$$FCm0U$9$k$3$H$O!"$?$H$((B SSI - $B%G%#%l%/%F%#%V$rA4$/4^$^$J$$>l9g$G$b!"(BApache $B$,%/%i%$%"%s%H$K(B - $BAw$kA4$F$N%U%!%$%k$r:G8e$^$GFI$_9~$^$;$k$3$H$K$J$j$^$9!#(B - $B$3$NJ}K!$O$+$J$j=hM}$rCY$/$9$k$b$N$G$"$j!"NI$/$J$$%"%$%G%"$G$9!#(B</p> - - <p>$B$b$A$m$s!"(BWindows $B$G$O$=$N$h$&$J<B9T%S%C%H$r%;%C%H(B - $B$9$k$h$&$J$b$N$O$"$j$^$;$s$N$G%*%W%7%g%s$,>/$7@)8B$5$l$F$$$^$9!#(B</p> - - <p>$B%G%U%)%k%H$N@_Dj$G$O!"(BApache $B$O(B SSI $B%Z!<%8$K$D$$$F:G=*JQ99;~9o$d(B - $B%3%s%F%s%D$ND9$5$r(B HTTP $B%X%C%@$KAw$j$^$;$s!#(B - $BF0E*$J%3%s%F%s%D$G$"$k$?$a!"$=$l$i$NCM$r7W;;$9$k$N$,Fq$7$$$+$i$G$9!#(B - $B$3$N$?$a%I%-%e%a%s%H$,%-%c%C%7%e$5$l$J$/$J$j!"(B - $B7k2L$H$7$F%/%i%$%"%s%H$N@-G=$,CY$/$J$C$?$h$&$K46$8$5$;$k$3$H$K$J$j$^$9!#(B - $B$3$l$r2r7h$9$kJ}K!$,Fs$D$"$j$^$9(B:</p> + について聞いたことがないのでしょう。 + この方法について注意することは、たとえ SSI + ディレクティブを全く含まない場合でも、Apache がクライアントに + 送る全てのファイルを最後まで読み込ませることになります。 + この方法はかなり処理を遅くするものであり、良くないアイデアです。</p> + + <p>もちろん、Windows ではそのような実行ビットをセット + するようなものはありませんのでオプションが少し制限されています。</p> + + <p>デフォルトの設定では、Apache は SSI ページについて最終変更時刻や + コンテンツの長さを HTTP ヘッダに送りません。 + 動的なコンテンツであるため、それらの値を計算するのが難しいからです。 + このためドキュメントがキャッシュされなくなり、 + 結果としてクライアントの性能が遅くなったように感じさせることになります。 + これを解決する方法が二つあります:</p> <ol> - <li><code>XBitHack Full</code> $B@_Dj$r;HMQ$9$k!#(B - $B$3$N@_Dj$K$h$j!"$b$H$b$HMW5a$5$l$?%U%!%$%k$N;~9o$r;2>H$7!"(B - $BFI$_9~$^$l$k%U%!%$%k$NJQ99;~9o$rL5;k$7$F:G=*JQ99;~9o$r7hDj$9$k$h$&(B - Apache $B$KEA$($^$9!#(B</li> + <li><code>XBitHack Full</code> 設定を使用する。 + この設定により、もともと要求されたファイルの時刻を参照し、 + 読み込まれるファイルの変更時刻を無視して最終変更時刻を決定するよう + Apache に伝えます。</li> <li><a href="../mod/mod_expires.html">mod_expires</a> - $B$GDs6!$5$l$F$$$k%G%#%l%/%F%#%V$r;HMQ$7$F!"(B - $B%U%!%$%k$,L58z$K$J$k;~9o$rL@<($7$^$9!#$3$l$K$h$j!"(B - $B%V%i%&%6$H%W%m%-%7$K%-%c%C%7%e$,M-8z$G$"$k$3$H$rDLCN$7$^$9!#(B</li> + で提供されているディレクティブを使用して、 + ファイルが無効になる時刻を明示します。これにより、 + ブラウザとプロキシにキャッシュが有効であることを通知します。</li> </ol> </section> -<section id="basic"><title>$B4pK\E*$J(B SSI $B%G%#%l%/%F%#%V(B</title> +<section id="basic"><title>基本的な SSI ディレクティブ</title> - <p>SSI $B%G%#%l%/%F%#%V$O0J2<$NJ8K!$G5-=R$7$^$9(B:</p> + <p>SSI ディレクティブは以下の文法で記述します:</p> <example> <!--#element attribute=value attribute=value ... --> </example> - <p>HTML $B$N%3%a%s%H$N$h$&$J=q<0$r$7$F$$$k$N$G!"$b$7(B SSI - $B$r@5$7$/F0:n2DG=$K$7$J$1$l$P!"%V%i%&%6$O$=$l$rL5;k$9$k$G$7$g$&!#(B - $B$7$+$7!"(BHTML $B%=!<%9Cf$G$O8+$($^$9!#$b$7(B SSI $B$r@5$7$/@_Dj$7$?$J$i!"(B - $B%G%#%l%/%F%#%V$O$=$N7k2L$HCV$-49$($i$l$^$9!#(B</p> + <p>HTML のコメントのような書式をしているので、もし SSI + を正しく動作可能にしなければ、ブラウザはそれを無視するでしょう。 + しかし、HTML ソース中では見えます。もし SSI を正しく設定したなら、 + ディレクティブはその結果と置き換えられます。</p> - <p>element $B$O$?$/$5$s$"$k$b$N$+$i0l$D;XDj$9$k$3$H$,$G$-$^$9!#(B - $B;XDj$G$-$k$b$N$NBgB??t$K$D$$$F$O!"<!2s$b$&>/$7>\$7$/@bL@$7$^$9!#(B - $B$3$3$G$O!"(BSSI $B$G9T$J$&$3$H$,$G$-$kNc$r$$$/$D$+<($7$^$9!#(B</p> + <p>element はたくさんあるものから一つ指定することができます。 + 指定できるものの大多数については、次回もう少し詳しく説明します。 + ここでは、SSI で行なうことができる例をいくつか示します。</p> -<section id="todaysdate"><title>$B:#F|$NF|IU(B</title> +<section id="todaysdate"><title>今日の日付</title> <example> <!--#echo var="DATE_LOCAL" --> </example> - <p><code>echo</code> $BMWAG$OC1$KJQ?t$NCM$r=PNO$7$^$9!#(B - CGI $B%W%m%0%i%`$KMxMQ2DG=$J4D6-JQ?t$NA4$F$N(B - $B%;%C%H$r4^$`B?$/$NI8=`JQ?t$,$"$j$^$9!#$^$?!"(B<code>set</code> - $BMWAG$rMQ$$$k$3$H$G!"FH<+$NJQ?t$rDj5A$9$k$3$H$,$G$-$^$9!#(B + <p><code>echo</code> 要素は単に変数の値を出力します。 + CGI プログラムに利用可能な環境変数の全ての + セットを含む多くの標準変数があります。また、<code>set</code> + 要素を用いることで、独自の変数を定義することができます。 </p> - <p>$B=PNO$5$l$kF|IU$N=q<0$,9%$-$G$O$J$$>l9g!"$=$N=q<0$r=$@5$9$k$?$a$K!"(B - <code>config</code> $BMWAG$K(B <code>timefmt</code> - $BB0@-$r;HMQ$9$k$3$H$,$G$-$^$9!#(B</p> + <p>出力される日付の書式が好きではない場合、その書式を修正するために、 + <code>config</code> 要素に <code>timefmt</code> + 属性を使用することができます。</p> <example> <!--#config timefmt="%A %B %d, %Y" --><br /> @@ -197,21 +197,21 @@ </example> </section> -<section id="lastmodified"><title>$B%U%!%$%k$NJQ99F|(B</title> +<section id="lastmodified"><title>ファイルの変更日</title> <example> This document last modified <!--#flastmod file="index.html" --> </example> - <p>$B$3$NMWAG$b(B <code>timefmt</code> - $B%U%)!<%^%C%H$N@_Dj$K=>$$$^$9!#(B</p> + <p>この要素も <code>timefmt</code> + フォーマットの設定に従います。</p> </section> -<section id="cgi"><title>CGI $B%W%m%0%i%`$N7k2L$r<h$j9~$`(B</title> +<section id="cgi"><title>CGI プログラムの結果を取り込む</title> - <p>$B$3$l$O!"A4$F$N?M$N$*5$$KF~$j$G$"$k(B ``$B%R%C%H%+%&%s%?(B'' $B$N$h$&$J(B - CGI $B%W%m%0%i%`$N7k2L$r=PNO$9$k(B SSI - $B$N$h$j0lHLE*$J;HMQ$N$&$A$N0l$D$G$9!#(B</p> + <p>これは、全ての人のお気に入りである ``ヒットカウンタ'' のような + CGI プログラムの結果を出力する SSI + のより一般的な使用のうちの一つです。</p> <example> <!--#include virtual="/cgi-bin/counter.pl" --> @@ -221,187 +221,187 @@ </section> <section id="additionalexamples"> -<title>$BDI2C$NNc(B</title> +<title>追加の例</title> - <p>$B0J2<$O!"(BSSI $B$r;HMQ$7$F(B HTML - $B%I%-%e%a%s%H$K$*$$$F$G$-$k$3$H$N$$$/$D$+$NFCJL$JNc$G$9!#(B</p> + <p>以下は、SSI を使用して HTML + ドキュメントにおいてできることのいくつかの特別な例です。</p> -<section id="docmodified"><title>$B$$$D$3$N%I%-%e%a%s%H$O=$@5$5$l$?$N$+(B +<section id="docmodified"><title>いつこのドキュメントは修正されたのか ?</title> - <p>$B@h$K!"%I%-%e%a%s%H$,:G8e$KJQ99$5$l$?$N$O$$$D$+$r(B - $B%f!<%6$KDLCN$9$k$?$a$K(B SSI $B$r;HMQ$9$k$3$H$,$G$-$k$3$H$r=R$Y$^$7$?!#(B - $B$7$+$7$J$,$i!"<B:]$NJ}K!$O!"$$$/$V$sLdBj$N$^$^$K$7$F$*$-$^$7$?!#(B - HTML $B%I%-%e%a%s%H$KG[CV$5$l$?<!$N%3!<%I$O!"%Z!<%8$K$=$N$h$&$J(B - $B%?%$%`%9%?%s%W$rF~$l$k$G$7$g$&!#$b$A$m$s!">e=R$N$h$&$K!"(B - SSI $B$r@5$7$/F0:n2DG=$K$7$F$*$/I,MW$,$"$j$^$9!#(B</p> + <p>先に、ドキュメントが最後に変更されたのはいつかを + ユーザに通知するために SSI を使用することができることを述べました。 + しかしながら、実際の方法は、いくぶん問題のままにしておきました。 + HTML ドキュメントに配置された次のコードは、ページにそのような + タイムスタンプを入れるでしょう。もちろん、上述のように、 + SSI を正しく動作可能にしておく必要があります。</p> <example> <!--#config timefmt="%A %B %d, %Y" --><br /> This file last modified <!--#flastmod file="ssi.shtml" --> </example> - <p>$B$b$A$m$s!"(B<code>ssi.shtml</code> - $B$NItJ,$r<B:]$NEv3:%U%!%$%kL>$HCV$-49$($kI,MW$,$"$j$^$9!#(B - $B$b$7!"$"$i$f$k%U%!%$%k$KD%$k$3$H$,$G$-$k0lHLE*$J%3!<%I$rC5$7$F$$$k$J$i!"(B - $B$3$l$OITJX$G$"$k$+$b$7$l$^$;$s!#$*$=$i$/$=$N>l9g$O!"(B - $B$=$&$9$kBe$o$j$KJQ?t(B <code>LAST_MODIFIED</code> - $B$r;HMQ$7$?$$$H9M$($k$G$7$g$&(B:</p> + <p>もちろん、<code>ssi.shtml</code> + の部分を実際の当該ファイル名と置き換える必要があります。 + もし、あらゆるファイルに張ることができる一般的なコードを探しているなら、 + これは不便であるかもしれません。おそらくその場合は、 + そうする代わりに変数 <code>LAST_MODIFIED</code> + を使用したいと考えるでしょう:</p> <example> <!--#config timefmt="%D" --><br /> This file last modified <!--#echo var="LAST_MODIFIED" --> </example> <p><code>timefmt</code> - $B=q<0$K$D$$$F$N$h$j>\:Y$K$D$$$F$O!"$*9%$_$N8!:w%5%$%H$K9T$-!"(B - <code>strftime</code> $B$G8!:w$7$F$_$F$/$@$5$$!#J8K!$OF1$8$G$9!#(B</p> + 書式についてのより詳細については、お好みの検索サイトに行き、 + <code>strftime</code> で検索してみてください。文法は同じです。</p> </section> <section id="standard-footer"> -<title>$BI8=`$N%U%C%?$rA^F~$9$k(B</title> - - <p>$B$b$7?t%Z!<%8$rD6$($k%Z!<%8$r;}$D%5%$%H$r4IM}$7$F$$$k$J$i$P!"(B - $BA4%Z!<%8$KBP$7$FJQ9`$r9T$J$&$3$H$,K\Ev$K6lDK$H$J$jF@$k$3$H$,(B - $BJ,$+$k$G$7$g$&!#A4$F$N%Z!<%8$KEO$C$F$"$k<o$NI8=`E*$J304Q$r(B - $B0];}$7$h$&$H$7$F$$$k$J$i$PFC$K$=$&$G$7$g$&!#(B</p> - - <p>$B%X%C%@$d%U%C%?MQ$NA^F~MQ%U%!%$%k$r;HMQ$9$k$3$H$G!"(B - $B$3$N$h$&$J99?7$K$+$+$kIiC4$r8:$i$9$3$H$,$G$-$^$9!#(B - $B0l$D$N%U%C%?%U%!%$%k$r:n@.$7!"$=$l$r(B <code>include</code> - SSI $B%3%^%s%I$G3F%Z!<%8$KF~$l$k$@$1$G:Q$_$^$9!#(B<code>include</code> - $BMWAG$O!"(B<code>file</code> $BB0@-$^$?$O(B <code>virtual</code> - $BB0@-$N$$$:$l$+$r;HMQ$7$F$I$N%U%!%$%k$rA^F~$9$k$+$r7h$a$k$3$H$,$G$-$^$9!#(B - <code>file</code> $BB0@-$O!"(B<em>$B%+%l%s%H%G%#%l%/%H%j$+$i$NAjBP%Q%9$G<($5$l$?(B - </em>$B%U%!%$%k%Q%9$G$9!#(B - $B$=$l$O(B / $B$G;O$^$k@dBP%U%!%$%k%Q%9$K$O$G$-$:!"$^$?!"$=$N%Q%9$N0lIt$K(B ../ - $B$r4^$`$3$H$,$G$-$J$$$3$H$r0UL#$7$^$9!#(B<code>virtual</code> - $BB0@-$O!"$*$=$i$/$h$jJXMx$@$H;W$$$^$9$,!"Ds6!$9$k%I%-%e%a%s%H$+$i$NAjBP(B - URL $B$G;XDj$9$Y$-$G$9!#$=$l$O(B / $B$G;O$a$k$3$H$,$G$-$^$9$,!"(B - $BDs6!$9$k%U%!%$%k$HF1$8%5!<%P>e$KB8:_$7$J$/$F$O$J$j$^$;$s!#(B</p> +<title>標準のフッタを挿入する</title> + + <p>もし数ページを超えるページを持つサイトを管理しているならば、 + 全ページに対して変項を行なうことが本当に苦痛となり得ることが + 分かるでしょう。全てのページに渡ってある種の標準的な外観を + 維持しようとしているならば特にそうでしょう。</p> + + <p>ヘッダやフッタ用の挿入用ファイルを使用することで、 + このような更新にかかる負担を減らすことができます。 + 一つのフッタファイルを作成し、それを <code>include</code> + SSI コマンドで各ページに入れるだけで済みます。<code>include</code> + 要素は、<code>file</code> 属性または <code>virtual</code> + 属性のいずれかを使用してどのファイルを挿入するかを決めることができます。 + <code>file</code> 属性は、<em>カレントディレクトリからの相対パスで示された + </em>ファイルパスです。 + それは / で始まる絶対ファイルパスにはできず、また、そのパスの一部に ../ + を含むことができないことを意味します。<code>virtual</code> + 属性は、おそらくより便利だと思いますが、提供するドキュメントからの相対 + URL で指定すべきです。それは / で始めることができますが、 + 提供するファイルと同じサーバ上に存在しなくてはなりません。</p> <example> <!--#include virtual="/footer.html" --> </example> - <p>$B;d$O:G8e$NFs$D$rAH$_9g$o$;$F!"(B<code>LAST_MODIFIED</code> - $B%G%#%l%/%F%#%V$r%U%C%?%U%!%$%k$NCf$KCV$/$3$H$,$h$/$"$j$^$9!#(B - SSI $B%G%#%l%/%F%#%V$O!"A^F~MQ$N%U%!%$%k$K4^$^$;$?$j!"(B - $BA^F~%U%!%$%k$N%M%9%H$r$7$?$j$9$k$3$H$,$G$-$^$9!#$9$J$o$A!"(B - $BA^F~MQ$N%U%!%$%k$OB>$N%U%!%$%k$r:F5"E*$KA^F~$9$k$3$H$,$G$-$^$9!#(B</p> + <p>私は最後の二つを組み合わせて、<code>LAST_MODIFIED</code> + ディレクティブをフッタファイルの中に置くことがよくあります。 + SSI ディレクティブは、挿入用のファイルに含ませたり、 + 挿入ファイルのネストをしたりすることができます。すなわち、 + 挿入用のファイルは他のファイルを再帰的に挿入することができます。</p> </section> </section> <section id="config"> -<title>$BB>$K2?$,@_Dj$G$-$k$N$+(B ?</title> +<title>他に何が設定できるのか ?</title> - <p>$B;~9o=q<0$r(B <code>config</code> $B$G@_Dj$G$-$k$3$H$K2C$($F!"(B - $B99$KFs$D(B <code>config</code> $B$G@_Dj$9$k$3$H$,$G$-$^$9!#(B</p> + <p>時刻書式を <code>config</code> で設定できることに加えて、 + 更に二つ <code>config</code> で設定することができます。</p> - <p>$BDL>o!"(BSSI $B%G%#%l%/%F%#%V$G2?$+$,$&$^$/$$$+$J$$$H$-$O!"(B - $B<!$N%a%C%;!<%8$,=PNO$5$l$^$9!#(B</p> + <p>通常、SSI ディレクティブで何かがうまくいかないときは、 + 次のメッセージが出力されます。</p> <example> [an error occurred while processing this directive] </example> - <p>$B$3$N%a%C%;!<%8$rB>$N$b$N$K$7$?$$>l9g!"(B<code>config</code> - $BMWAG$N(B <code>errmsg</code> $BB0@-$GJQ99$9$k$3$H$,$G$-$^$9(B:</p> + <p>このメッセージを他のものにしたい場合、<code>config</code> + 要素の <code>errmsg</code> 属性で変更することができます:</p> <example> <!--#config errmsg="[It appears that you don't know how to use SSI]" --> </example> - <p>$B$*$=$i$/!"%(%s%I%f!<%6$O$3$N%a%C%;!<%8$r7h$7$F8+$k$3$H$O$"$j$^$;$s!#(B - $B$J$<$J$i!"$=$N%5%$%H$,@8$-$?>uBV$K$J$kA0$K(B SSI $B%G%#%l%/%F%#%V$K4X$9$k(B - $BA4$F$NLdBj$r2r7h$7$F$$$k$O$:$@$+$i$G$9!#(B($B$=$&$G$9$h$M(B?)</p> + <p>おそらく、エンドユーザはこのメッセージを決して見ることはありません。 + なぜなら、そのサイトが生きた状態になる前に SSI ディレクティブに関する + 全ての問題を解決しているはずだからです。(そうですよね?)</p> - <p>$B$=$7$F!"(B<code>config</code> $B$K$*$$$F(B <code>sizefmt</code> - $BB0@-$r;HMQ$9$k$3$H$G!"(B - $BJV$5$l$k%U%!%$%k%5%$%:$N=q<0$r@_Dj$9$k$3$H$,$G$-$^$9!#(B - $B%P%$%H?t$K$O(B <code>bytes</code> $B$r!"E,Ev$K(B Kb $B$d(B Mb - $B$KC;=L$5$;$k$K$O(B <code>abbrev</code> $B$r;XDj$9$k$3$H$,$G$-$^$9!#(B</p> + <p>そして、<code>config</code> において <code>sizefmt</code> + 属性を使用することで、 + 返されるファイルサイズの書式を設定することができます。 + バイト数には <code>bytes</code> を、適当に Kb や Mb + に短縮させるには <code>abbrev</code> を指定することができます。</p> </section> <section id="exec"> - <title>$B%3%^%s%I$N<B9T(B</title> - - <p>$B:#8e?t%v7n$N$&$A$K!">.$5$J(B CGI $B%W%m%0%i%`$H(B SSI - $B$r;HMQ$9$k5-;v$r=P$7$?$$$H9M$($F$$$^$9!#$3$3$G$O$=$l$H$OJL$K!"(B - <code>exec</code> $BMWAG$K$h$C$F9T$J$&$3$H$,$G$-$k$3$H$r<($7$^$9!#(B - SSI $B$K%7%'%k(B ($B@53N$K$O(B <code>/bin/sh</code>$B!#(BWin32 $B$J$i$P(B DOS $B%7%'%k(B) - $B$r;HMQ$7$F%3%^%s%I$r<B9T$5$;$k$3$H$,$G$-$^$9!#(B - $B2<5-$NNc$G$O!"%G%#%l%/%H%j%j%9%H=PNO$r9T$J$$$^$9!#(B</p> + <title>コマンドの実行</title> + + <p>今後数ヶ月のうちに、小さな CGI プログラムと SSI + を使用する記事を出したいと考えています。ここではそれとは別に、 + <code>exec</code> 要素によって行なうことができることを示します。 + SSI にシェル (正確には <code>/bin/sh</code>。Win32 ならば DOS シェル) + を使用してコマンドを実行させることができます。 + 下記の例では、ディレクトリリスト出力を行ないます。</p> <example> <pre><br /> <!--#exec cmd="ls" --><br /> </pre> </example> - <p>Windows $B>e$G$O!"(B</p> + <p>Windows 上では、</p> <example> <pre><br /> <!--#exec cmd="dir" --><br /> </pre> </example> - <p>Windows $B>e$G$O!"$3$N%G%#%l%/%F%#%V$K$h$C$F$$$/$D$+$N4qL/$J(B - $B=q<0$K5$$E$/$G$7$g$&!#$J$<$J$i(B <code>dir</code> $B$N=PNO$,J8;zNs(B - ``<<code>dir</code>>'' $B$r4^$_!"%V%i%&%6$r:.Mp$5$;$k$+$i$G$9!#(B</p> - - <p>$B$3$N5!G=$OHs>o$K4m81$G$"$j!"$I$s$J%3!<%I$G$b(B <code>exec</code> - $B%?%0$KKd$a9~$^$l$F$7$^$($P<B9T$9$k$3$H$KCm0U$7$F$/$@$5$$!#Nc$($P(B - `` $B%2%9%H%V%C%/(B '' $B$N$h$&$K!"$b$7!"(B - $B%f!<%6$,%Z!<%8$NFbMF$rJT=8$G$-$k>u67$K$"$k$J$i$P!"(B - $B$3$N5!G=$r3N<B$KM^@)$7$F$/$@$5$$!#(B<code>Options</code> - $B%G%#%l%/%F%#%V$N(B <code>IncludesNOEXEC</code> $B0z?t$r;XDj$9$k$3$H$G!"(B - SSI $B$O5v2D$9$k$1$l$I(B <code>exec</code> - $B5!G=$O5v2D$7$J$$$h$&$K$9$k$3$H$,$G$-$^$9!#(B</p> + <p>Windows 上では、このディレクティブによっていくつかの奇妙な + 書式に気づくでしょう。なぜなら <code>dir</code> の出力が文字列 + ``<<code>dir</code>>'' を含み、ブラウザを混乱させるからです。</p> + + <p>この機能は非常に危険であり、どんなコードでも <code>exec</code> + タグに埋め込まれてしまえば実行することに注意してください。例えば + `` ゲストブック '' のように、もし、 + ユーザがページの内容を編集できる状況にあるならば、 + この機能を確実に抑制してください。<code>Options</code> + ディレクティブの <code>IncludesNOEXEC</code> 引数を指定することで、 + SSI は許可するけれど <code>exec</code> + 機能は許可しないようにすることができます。</p> </section> <section id="advanced"> -<title>$B9bEY$J(B SSI $B%F%/%K%C%/(B</title> +<title>高度な SSI テクニック</title> - <p>$B%3%s%F%s%D$r=PNO$9$k$3$H$K2C$(!"(BApache SSI $B$OJQ?t$r@_Dj$7!"(B - $B$=$7$FHf3S$H>r7oJ,4t$K$=$NJQ?t$r;HMQ$G$-$k5!G=$rDs6!$7$F$$$^$9!#(B + <p>コンテンツを出力することに加え、Apache SSI は変数を設定し、 + そして比較と条件分岐にその変数を使用できる機能を提供しています。 </p> -<section id="caveat"><title>$B7Y9p(B</title> +<section id="caveat"><title>警告</title> - <p>$B$3$N5-;v$G=R$Y$?BgItJ,$N5!G=$O!"(BApache 1.2 - $B0J9_$r;HMQ$7$F$$$k>l9g$N$_MxMQ2DG=$G$9!#$b$A$m$s!"$b$7(B Apache 1.2 - $B0J9_$r;HMQ$7$F$J$$>l9g!"D>$A$K%"%C%W%0%l!<%I$9$kI,MW$,$"$j$^$9!#(B - $B$5$!!":#$=$l$r9T$J$$$J$5$$!#$=$l$^$GBT$C$F$$$^$9!#(B</p> + <p>この記事で述べた大部分の機能は、Apache 1.2 + 以降を使用している場合のみ利用可能です。もちろん、もし Apache 1.2 + 以降を使用してない場合、直ちにアップグレードする必要があります。 + さぁ、今それを行ないなさい。それまで待っています。</p> </section> -<section id="variables"><title>$BJQ?t$r@_Dj$9$k(B</title> +<section id="variables"><title>変数を設定する</title> - <p><code>set</code> $B%G%#%l%/%F%#%V$r;HMQ$7$F!"(B - $B8e$G;HMQ$9$k$?$a$KJQ?t$r@_Dj$9$k$3$H$,$G$-$^$9!#(B - $B$3$l$O8e$N@bL@$GI,MW$K$J$k$N$G!"$3$3$G$=$l$K$D$$$F=R$Y$F$$$^$9!#(B - $BJ8K!$O0J2<$N$H$*$j$G$9(B:</p> + <p><code>set</code> ディレクティブを使用して、 + 後で使用するために変数を設定することができます。 + これは後の説明で必要になるので、ここでそれについて述べています。 + 文法は以下のとおりです:</p> <example> <!--#set var="name" value="Rich" --> </example> - <p>$B$3$N$h$&$KC1=c$KJ8;z$I$*$j$K@_Dj$9$k$3$H$K2C$(!"(B - <a href="../env.html">$B4D6-JQ?t(B</a>$B$d>e5-$NJQ?t(B - ($BNc$($P(B <code>LAST_MODIFIED</code> $B$N$h$&$J(B) - $B$r4^$`B>$N$"$i$f$kJQ?t$rCM$r@_Dj$9$k$N$K;HMQ$9$k$3$H$,$G$-$^$9!#(B - $BJQ?tL>$NA0$K%I%k5-9f(B ($) $B$r;HMQ$9$k$3$H$G!"(B - $B$=$l$,%j%F%i%kJ8;zNs$G$O$J$/$FJQ?t$G$"$k$3$H$r<($7$^$9!#(B</p> + <p>このように単純に文字どおりに設定することに加え、 + <a href="../env.html">環境変数</a>や上記の変数 + (例えば <code>LAST_MODIFIED</code> のような) + を含む他のあらゆる変数を値を設定するのに使用することができます。 + 変数名の前にドル記号 ($) を使用することで、 + それがリテラル文字列ではなくて変数であることを示します。</p> <example> <!--#set var="modified" value="$LAST_MODIFIED" --> </example> - <p>$B%I%k5-9f(B ($) $B$rJ8;z$H$7$FJQ?t$NCM$KF~$l$k$K$O!"(B - $B%P%C%/%9%i%C%7%e$K$h$C$F%I%k5-9f$r%(%9%1!<%W$9$kI,MW$,$"$j$^$9!#(B</p> + <p>ドル記号 ($) を文字として変数の値に入れるには、 + バックスラッシュによってドル記号をエスケープする必要があります。</p> <example> <!--#set var="cost" value="\$100" --> </example> - <p>$B:G8e$K$J$j$^$9$,!"D9$$J8;zNs$NCf$KJQ?t$rCV$-$?$$>l9g$G!"(B - $BJQ?tL>$,B>$NJ8;z$H$V$D$+$k2DG=@-$,$"$j!"(B - $B$=$l$i$NJ8;z$K$D$$$F:.Mp$7$F$7$^$&>l9g!"$3$N:.Mp$r<h$j=|$/$?$a!"(B - $BJQ?tL>$rCf3g8L$G0O$`$3$H$,$G$-$^$9(B - ($B$3$l$K$D$$$F$NNI$$Nc$r<($9$N$OFq$7$$$N$G$9$,!"(B - $B$*$=$i$/J,$+$C$F$$$?$@$1$k$G$7$g$&(B)$B!#(B + <p>最後になりますが、長い文字列の中に変数を置きたい場合で、 + 変数名が他の文字とぶつかる可能性があり、 + それらの文字について混乱してしまう場合、この混乱を取り除くため、 + 変数名を中括弧で囲むことができます + (これについての良い例を示すのは難しいのですが、 + おそらく分かっていただけるでしょう)。 </p> <example> <!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --> @@ -409,18 +409,18 @@ </section> <section id="conditional"> -<title>$B>r7o<0(B</title> +<title>条件式</title> - <p>$B$5$F!"JQ?t$r;}$C$F$$$F!"(B - $B$=$l$i$NCM$r@_Dj$7$FHf3S$9$k$3$H$,$G$-$k$N$G$9$+$i!"(B - $B>r7o$rI=$9$?$a$K$=$l$i$r;HMQ$9$k$3$H$,$G$-$^$9!#$3$l$K$h$j(B - SSI $B$O$"$k<o$N>.$5$J%W%m%0%i%_%s%08@8l$K$J$C$F$$$^$9!#(B - <module>mod_include</module> $B$O>r7o$rI=8=$9$k$?$a$K(B <code>if</code>, + <p>さて、変数を持っていて、 + それらの値を設定して比較することができるのですから、 + 条件を表すためにそれらを使用することができます。これにより + SSI はある種の小さなプログラミング言語になっています。 + <module>mod_include</module> は条件を表現するために <code>if</code>, <code>elif</code>, <code>else</code>, <code>endif</code> - $B9=B$$rDs6!$7$F$$$^$9!#$3$l$K$h$C$F!"(B - $B0l$D$N<B:]$N%Z!<%8$+$iJ#?t$NO@M}%Z!<%8$r8z2LE*$K@8@.$9$k$3$H$,$G$-$^$9!#(B</p> + 構造を提供しています。これによって、 + 一つの実際のページから複数の論理ページを効果的に生成することができます。</p> - <p>$B>r7o9=B$$O0J2<$N$H$*$j$G$9(B:</p> + <p>条件構造は以下のとおりです:</p> <example> <!--#if expr="test_condition" --><br /> <!--#elif expr="test_condition" --><br /> @@ -429,24 +429,24 @@ </example> <p><em>test_condition</em> - $B$O$"$i$f$k<oN`$NO@M}E*Hf3S$r$9$k$3$H$,$G$-$^$9!#(B - $BCM$rHf3S$7$?$j!"$=$NCM$,(B ``$B??(B'' $B$+$I$&$+$rI>2A$7$^$9(B - ($B6u$G$J$$$J$iM?$($i$l$?J8;zNs$O??$G$9(B)$B!#(B - $BMxMQ2DG=$JHf3S1i;;;R$NA4$F$N%j%9%H$K$D$$$F$O!"(B - <module>mod_include</module> $B%I%-%e%a%s%F!<%7%g%s$r;2>H$7$F$/$@$5$$!#(B - $B$3$3$G$O!"$3$N9=B$$r$I$&;HMQ$9$k$+$NNc$r$$$/$D$+<($7$^$9!#(B</p> - - <p>$B@_Dj%U%!%$%k$G<!$N9T$r5-=R$7$^$9(B:</p> + はあらゆる種類の論理的比較をすることができます。 + 値を比較したり、その値が ``真'' かどうかを評価します + (空でないなら与えられた文字列は真です)。 + 利用可能な比較演算子の全てのリストについては、 + <module>mod_include</module> ドキュメンテーションを参照してください。 + ここでは、この構造をどう使用するかの例をいくつか示します。</p> + + <p>設定ファイルで次の行を記述します:</p> <example> BrowserMatchNoCase macintosh Mac<br /> BrowserMatchNoCase MSIE InternetExplorer </example> - <p>$B$3$l$O%/%i%$%"%s%H$,(B Macintosh - $B>e$G%$%s%?!<%M%C%H%(%/%9%W%m!<%i$,F0$$$F$$$k>l9g!"4D6-JQ?t(B - ``Mac'' $B$H(B ``InternetExplorer'' $B$r??$H@_Dj$7$^$9!#(B</p> + <p>これはクライアントが Macintosh + 上でインターネットエクスプローラが動いている場合、環境変数 + ``Mac'' と ``InternetExplorer'' を真と設定します。</p> - <p>$B<!$K!"(BSSI $B$,2DG=$K$J$C$?%I%-%e%a%s%H$G0J2<$r9T$J$$$^$9(B: + <p>次に、SSI が可能になったドキュメントで以下を行ないます: </p> <example> <!--#if expr="${Mac} && ${InternetExplorer}" --><br /> @@ -456,26 +456,26 @@ <!--#endif --> </example> - <p>Mac $B>e$N(B IE $B$KBP$7$F2?$+;W$&$H$3$m$,$"$k$o$1$G$"$j$^$;$s!#(B - $BB>$G$O<B9T$G$-$F$$$k$$$/$D$+$N(B JavaScript $B$r(B Mac $B>e$N(B IE - $B$G<B9T$5$;$k$N$K!"@h=5?t;~4V6lO+$7$?$H$$$&$@$1$N$3$H$G$9!#(B - $B>e$NNc$O$=$N;CDjE*$JBP=hJ}K!$G$9!#(B</p> - - <p>$BB>$N$I$s$JJQ?t(B ($B$"$J$?$,Dj5A$9$k$b$N!"(B - $B$^$?$OIaDL$N4D6-JQ?t$N$$$:$l$+(B) $B$b!">r7oJ8$K;HMQ$9$k$3$H$,$G$-$^$9!#(B - Apache $B$O(B <code>SetEnvIf</code> $B%G%#%l%/%F%#%V$dB>$N4XO"(B - $B%G%#%l%/%F%#%V$r;HMQ$7$F4D6-JQ?t$r@_Dj$9$k$3$H$,$G$-$^$9!#(B - $B$3$N5!G=$K$h$j!"(BCGI - $B$KMj$k$3$H$J$/$+$J$jJ#;($JF0E*$J$3$H$r$5$;$k$3$H$,$G$-$^$9!#(B</p> + <p>Mac 上の IE に対して何か思うところがあるわけでありません。 + 他では実行できているいくつかの JavaScript を Mac 上の IE + で実行させるのに、先週数時間苦労したというだけのことです。 + 上の例はその暫定的な対処方法です。</p> + + <p>他のどんな変数 (あなたが定義するもの、 + または普通の環境変数のいずれか) も、条件文に使用することができます。 + Apache は <code>SetEnvIf</code> ディレクティブや他の関連 + ディレクティブを使用して環境変数を設定することができます。 + この機能により、CGI + に頼ることなくかなり複雑な動的なことをさせることができます。</p> </section> </section> -<section id="conclusion"><title>$B=*$o$j$K(B</title> +<section id="conclusion"><title>終わりに</title> - <p>SSI $B$O3N$+$K(B CGI - $B$dF0E*$J%&%'%V%Z!<%8$r@8@.$9$kB>$N5;=Q$KBe$o$k$b$N$G$O$"$j$^$;$s!#(B - $B$7$+$7!"$?$/$5$s$NM>J,$J:n6H$r$;$:$K!"(B - $B>/NL$NF0E*$J%3%s%F%s%D$r2C$($k$K$O$9$0$l$?J}K!$G$9!#(B</p> + <p>SSI は確かに CGI + や動的なウェブページを生成する他の技術に代わるものではありません。 + しかし、たくさんの余分な作業をせずに、 + 少量の動的なコンテンツを加えるにはすぐれた方法です。</p> </section> </manualpage> diff --git a/docs/manual/index.xml.ja b/docs/manual/index.xml.ja index 904d087c1f..d222488774 100644 --- a/docs/manual/index.xml.ja +++ b/docs/manual/index.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp" ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE indexpage SYSTEM "./style/sitemap.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 420993:636028 (outdated) --> @@ -23,71 +23,71 @@ <indexpage metafile="index.xml.meta"> <parentdocument href="http://httpd.apache.org/docs-project/" /> -<title>Apache HTTP $B%5!<%P(B $B%P!<%8%g%s(B &httpd.major;.&httpd.minor; -$B%I%-%e%a%s%H(B</title> +<title>Apache HTTP サーバ バージョン &httpd.major;.&httpd.minor; +ドキュメント</title> -<category id="release"><title>$B%j%j!<%9%N!<%H(B</title> - <page href="new_features_2_4.html">Apache 2.3/2.4 $B$N?75!G=(B</page> - <page href="new_features_2_2.html">Apache 2.1/2.2 $B$N?75!G=(B</page> - <page href="new_features_2_0.html">Apache 2.0 $B$N?75!G=(B</page> - <page href="upgrading.html">2.2 $B$+$i(B 2.4 $B$X$N%"%C%W%0%l!<%I(B</page> - <page href="license.html">Apache $B%i%$%;%s%9(B</page> +<category id="release"><title>リリースノート</title> + <page href="new_features_2_4.html">Apache 2.3/2.4 の新機能</page> + <page href="new_features_2_2.html">Apache 2.1/2.2 の新機能</page> + <page href="new_features_2_0.html">Apache 2.0 の新機能</page> + <page href="upgrading.html">2.2 から 2.4 へのアップグレード</page> + <page href="license.html">Apache ライセンス</page> </category> -<category id="manual"><title>$B%j%U%!%l%s%9%^%K%e%"%k(B</title> - <page href="install.html">$B%3%s%Q%$%k$H%$%s%9%H!<%k(B</page> - <page href="invoking.html">$B5/F0(B</page> - <page href="stopping.html">$B=*N;$H:F5/F0(B</page> - <page href="mod/directives.html">$B<B9T$N@_DjMQ%G%#%l%/%F%#%V(B</page> - <page href="mod/quickreference.html">$B%G%#%l%/%F%#%V(B $B%/%$%C%/%j%U%!%l%s%9(B</page> - <page href="mod/">$B%b%8%e!<%k(B</page> - <page href="mpm.html">$B%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B (MPM)</page> - <page href="filter.html">$B%U%#%k%?(B</page> - <page href="handler.html">$B%O%s%I%i(B</page> - <page href="programs/">$B%5!<%P$H%5%]!<%H%W%m%0%i%`(B</page> - <page href="glossary.html">$BMQ8l=8(B</page> +<category id="manual"><title>リファレンスマニュアル</title> + <page href="install.html">コンパイルとインストール</page> + <page href="invoking.html">起動</page> + <page href="stopping.html">終了と再起動</page> + <page href="mod/directives.html">実行の設定用ディレクティブ</page> + <page href="mod/quickreference.html">ディレクティブ クイックリファレンス</page> + <page href="mod/">モジュール</page> + <page href="mpm.html">マルチプロセッシングモジュール (MPM)</page> + <page href="filter.html">フィルタ</page> + <page href="handler.html">ハンドラ</page> + <page href="programs/">サーバとサポートプログラム</page> + <page href="glossary.html">用語集</page> </category> -<category id="usersguide"><title>$B%f!<%6$N<j0z(B</title> - <page href="bind.html">$B%"%I%l%9$H%]!<%H$N%P%$%s%I(B</page> - <page href="configuring.html">$B@_Dj%U%!%$%k(B</page> - <page href="sections.html">$B%;%/%7%g%s$N@_Dj(B</page> - <page href="caching.html">$B%-%c%C%7%e5!G=(B</page> - <page href="content-negotiation.html">$B%3%s%F%s%H%M%4%7%(!<%7%g%s(B</page> - <page href="dso.html">$BF0E*6&M-%*%V%8%'%/%H(B (DSO)</page> - <page href="env.html">$B4D6-JQ?t(B</page> - <page href="logs.html">$B%m%0%U%!%$%k(B</page> - <page href="urlmapping.html">URL $B$r%U%!%$%k%7%9%F%`$K%^%C%W$9$k(B</page> - <page href="misc/perf-tuning.html">$B@-G=$K4X$9$kD4@0(B</page> - <page href="misc/security_tips.html">$B%;%-%e%j%F%#>pJs(B</page> - <page href="server-wide.html">$B%5!<%PA4BN$N@_Dj(B</page> - <page href="ssl/">SSL/TLS $B$K$h$k0E9f2=(B</page> - <page href="suexec.html">CGI $B$N(B Suexec $B<B9T(B</page> - <page href="rewrite/">URL Rewriting $B$N<j0z$-(B</page> - <page href="vhosts/">$B%P!<%A%c%k%[%9%H(B</page> +<category id="usersguide"><title>ユーザの手引</title> + <page href="bind.html">アドレスとポートのバインド</page> + <page href="configuring.html">設定ファイル</page> + <page href="sections.html">セクションの設定</page> + <page href="caching.html">キャッシュ機能</page> + <page href="content-negotiation.html">コンテントネゴシエーション</page> + <page href="dso.html">動的共有オブジェクト (DSO)</page> + <page href="env.html">環境変数</page> + <page href="logs.html">ログファイル</page> + <page href="urlmapping.html">URL をファイルシステムにマップする</page> + <page href="misc/perf-tuning.html">性能に関する調整</page> + <page href="misc/security_tips.html">セキュリティ情報</page> + <page href="server-wide.html">サーバ全体の設定</page> + <page href="ssl/">SSL/TLS による暗号化</page> + <page href="suexec.html">CGI の Suexec 実行</page> + <page href="rewrite/">URL Rewriting の手引き</page> + <page href="vhosts/">バーチャルホスト</page> </category> -<category id="howto"><title>How-To / $B%A%e!<%H%j%"%k(B</title> - <page href="howto/auth.html">$BG'>Z!">5G'!"%"%/%;%9@)8f(B +<category id="howto"><title>How-To / チュートリアル</title> + <page href="howto/auth.html">認証、承認、アクセス制御 </page> - <page href="howto/cgi.html">CGI: $BF0E*%3%s%F%s%D(B</page> - <page href="howto/htaccess.html">.htaccess $B%U%!%$%k(B</page> + <page href="howto/cgi.html">CGI: 動的コンテンツ</page> + <page href="howto/htaccess.html">.htaccess ファイル</page> <page href="howto/ssi.html">Server Side Includes (SSI)</page> - <page href="howto/public_html.html">$B%f!<%6@lMQ%G%#%l%/%H%j(B + <page href="howto/public_html.html">ユーザ専用ディレクトリ (public_html)</page> </category> -<category id="platform"><title>$B%W%i%C%H%U%)!<%`8GM-$N>pJs(B</title> +<category id="platform"><title>プラットフォーム固有の情報</title> <page href="platform/windows.html">Microsoft Windows</page> <page href="platform/netware.html">Novell NetWare</page> - <page href="platform/ebcdic.html">EBCDIC $BHG(B</page> + <page href="platform/ebcdic.html">EBCDIC 版</page> </category> -<category id="other"><title>$B$=$NB>(B</title> - <page href="faq/">$B$h$/$"$k<ALd(B (FAQ)</page> - <page href="sitemap.html">$B%5%$%H%^%C%W(B</page> - <page href="developer/">$B3+H/<T$N$?$a$N%I%-%e%a%s%H(B</page> - <page href="misc/">$B$=$NB>(B</page> +<category id="other"><title>その他</title> + <page href="faq/">よくある質問 (FAQ)</page> + <page href="sitemap.html">サイトマップ</page> + <page href="developer/">開発者のためのドキュメント</page> + <page href="misc/">その他</page> </category> </indexpage> diff --git a/docs/manual/install.xml.ja b/docs/manual/install.xml.ja index dd904833e4..0e83252470 100644 --- a/docs/manual/install.xml.ja +++ b/docs/manual/install.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 395228:527129 (outdated) --> @@ -22,45 +22,45 @@ <manualpage metafile="install.xml.meta"> - <title>$B%3%s%Q%$%k$H%$%s%9%H!<%k(B</title> + <title>コンパイルとインストール</title> <summary> - <p>$B$3$NJ8=q$G07$&HO0O$O!"(BUnix $B$d(B Unix $B$KN`;w$7$?%7%9%F%`$G$N(B - Apache $B$N%3%s%Q%$%k$H%$%s%9%H!<%k$G$9!#(B Windows $B$K$*$1$k(B - $B%3%s%Q%$%k$H%$%s%9%H!<%k$K4X$7$F$O!V(B<a + <p>この文書で扱う範囲は、Unix や Unix に類似したシステムでの + Apache のコンパイルとインストールです。 Windows における + コンパイルとインストールに関しては「<a href="platform/windows.html">Microsoft - Windows $B$G(B Apache $B$r;H$&(B</a>$B!W$r$4Mw2<$5$$!#(B - $B$=$NB>$N%W%i%C%H%[!<%`$K4X$7$F$O!V(B<a - href="platform/">$B%W%i%C%H%[!<%`(B</a>$B!W$r$4Mw2<$5$$!#(B</p> + Windows で Apache を使う</a>」をご覧下さい。 + その他のプラットホームに関しては「<a + href="platform/">プラットホーム</a>」をご覧下さい。</p> - <p>Apache 2.0 $B$G$OB>$N(B Open Source $B%W%m%8%'%/%H$HF1MM!"(B - $B%S%k%I4D6-9=C[$K(B <code>libtool</code> $B$H(B <code>autoconf</code> - $B$r;H$&$h$&$K$J$C$F$$$^$9!#(B</p> + <p>Apache 2.0 では他の Open Source プロジェクトと同様、 + ビルド環境構築に <code>libtool</code> と <code>autoconf</code> + を使うようになっています。</p> - <p>$B%^%$%J!<%P!<%8%g%s$+$i$=$N<!$N%P!<%8%g%s$K%"%C%W%0%l!<%I$9$k(B - (2.2.50 $B$+$i(B 2.2.51 $B$XEy(B) $B>l9g$O!"$^$:(B <a href="#upgrading"> - $B%"%C%W%0%l!<%I(B</a>$B$r$4Mw2<$5$$!#(B</p> + <p>マイナーバージョンからその次のバージョンにアップグレードする + (2.2.50 から 2.2.51 へ等) 場合は、まず <a href="#upgrading"> + アップグレード</a>をご覧下さい。</p> </summary> -<seealso><a href="programs/configure.html">$B%=!<%9%D%j!<$N@_Dj(B</a></seealso> -<seealso><a href="invoking.html">Apache$B$N5/F0(B</a></seealso> -<seealso><a href="stopping.html">Apache$B$NDd;_$H:F5/F0(B</a></seealso> +<seealso><a href="programs/configure.html">ソースツリーの設定</a></seealso> +<seealso><a href="invoking.html">Apacheの起動</a></seealso> +<seealso><a href="stopping.html">Apacheの停止と再起動</a></seealso> -<section id="overview"><title>$B35MW(B ($B$;$C$+$A$J?M8~$1(B)</title> +<section id="overview"><title>概要 (せっかちな人向け)</title> <table> <columnspec><column width=".13"/><column width=".80"/></columnspec> <tr> - <td><a href="#download">$B%@%&%s%m!<%I(B</a></td> + <td><a href="#download">ダウンロード</a></td> <td><code>$ lynx http://httpd.apache.org/download.cgi</code> </td> </tr> <tr> - <td><a href="#extract">$BE83+(B</a></td> + <td><a href="#extract">展開</a></td> <td><code>$ gzip -d httpd-<em>NN</em>.tar.gz<br /> $ tar xvf httpd-<em>NN</em>.tar<br /> @@ -68,198 +68,198 @@ </tr> <tr> - <td><a href="#configure">$B@_Dj(B</a></td> + <td><a href="#configure">設定</a></td> <td><code>$ ./configure --prefix=<em>PREFIX</em></code> </td> </tr> <tr> - <td><a href="#compile">$B%3%s%Q%$%k(B</a></td> + <td><a href="#compile">コンパイル</a></td> <td><code>$ make</code> </td> </tr> <tr> - <td><a href="#install">$B%$%s%9%H!<%k(B</a></td> + <td><a href="#install">インストール</a></td> <td><code>$ make install</code> </td> </tr> <tr> - <td><a href="#customize">$B%+%9%?%^%$%:(B</a></td> + <td><a href="#customize">カスタマイズ</a></td> <td><code>$ vi <em>PREFIX</em>/conf/httpd.conf</code> </td> </tr> <tr> - <td><a href="#test">$B%F%9%H(B</a></td> + <td><a href="#test">テスト</a></td> <td><code>$ <em>PREFIX</em>/bin/apachectl -k start</code> </td> </tr> </table> - <p><em>NN</em> $B$O:G?7$N%P!<%8%g%s%J%s%P!<$K!"(B - <em>PREFIX</em> $B$O%$%s%9%H!<%k$9$k%5!<%P$G$N%U%!%$%k%7%9%F%`$N%Q%9$K!"(B - $BCV$-49$($F$/$@$5$$!#(B<em>PREFIX</em> $B$r;XDj$7$J$+$C$?>l9g$O!"(B - $B%G%U%)%k%H$N(B <code>/usr/local/apache2</code> $B$K$J$j$^$9!#(B</p> + <p><em>NN</em> は最新のバージョンナンバーに、 + <em>PREFIX</em> はインストールするサーバでのファイルシステムのパスに、 + 置き換えてください。<em>PREFIX</em> を指定しなかった場合は、 + デフォルトの <code>/usr/local/apache2</code> になります。</p> - <p>Apache httpd $B$N%3%s%Q%$%k$H%$%s%9%H!<%k$KI,MW$J$b$N$r$O$8$a$H$7$F!"(B - $B%3%s%Q%$%k$H%$%s%9%H!<%k$K$D$$$F$O!"<!$K>\$7$/5-=R$5$l$F$$$^$9!#(B</p> + <p>Apache httpd のコンパイルとインストールに必要なものをはじめとして、 + コンパイルとインストールについては、次に詳しく記述されています。</p> </section> -<section id="requirements"><title>$BI,MW$J$b$N(B</title> +<section id="requirements"><title>必要なもの</title> - <p>Apache $B$N%S%k%I$K$O<!$N$b$N$,I,MW$G$9(B:</p> + <p>Apache のビルドには次のものが必要です:</p> <dl> - <dt>$B%G%#%9%/%9%Z!<%9(B</dt> - <dd>$B%G%#%9%/$K>/$J$/$H$b(B 50 MB $B$N0l;~E*$J6u$-MFNL$,$"$k$h$&$K(B - $B5$$rIU$1$F$/$@$5$$!#%$%s%9%H!<%k8e$O(B Apache $B$O(B 10 MB $BDxEY$N(B - $B%G%#%9%/%9%Z!<%9$r@j$a$^$9!#<B:]$KI,MW$K$J$k%G%#%9%/%9%Z!<%9$O!"(B - $B@_Dj%*%W%7%g%s$d%5!<%I%Q!<%F%#!<@=%b%8%e!<%k$r$I$&A*Br$9$k$+$K$h$C$F(B - $BBg$-$/JQ$o$k$G$7$g$&!#(B</dd> - - <dt>ANSI-C $B%3%s%Q%$%i$H%S%k%I%7%9%F%`(B</dt> - <dd>ANSI-C $B%3%s%Q%$%i$r%$%s%9%H!<%k$7$F$*$$$F2<$5$$!#$*A&$a$O(B <a + <dt>ディスクスペース</dt> + <dd>ディスクに少なくとも 50 MB の一時的な空き容量があるように + 気を付けてください。インストール後は Apache は 10 MB 程度の + ディスクスペースを占めます。実際に必要になるディスクスペースは、 + 設定オプションやサードパーティー製モジュールをどう選択するかによって + 大きく変わるでしょう。</dd> + + <dt>ANSI-C コンパイラとビルドシステム</dt> + <dd>ANSI-C コンパイラをインストールしておいて下さい。お薦めは <a href="http://www.gnu.org/">Free Software Foundation (FSF)</a> - $B$K$h$k(B <a href="http://www.gnu.org/software/gcc/gcc.html">GNU C - compiler (GCC)</a> $B$G$9!#(BGCC $B$,$J$$>l9g$O!"(B - $B>/$J$/$H$bDs6!$5$l$F$$$k%3%s%Q%$%i$,(B ANSI $B=`5r$G$"$k$3$H$r3NG'$7$F$*$$$F2<$5$$!#(B - $B$=$l$+$i!"JQ?t(B <code>PATH</code> $B$K$O(B <code>make</code> - $B$H$$$C$?4pK\E*$J%S%k%I%D!<%k$,4^$^$l$F$$$kI,MW$,$"$j$^$9!#(B</dd> - - <dt>$B;~9o$r@53N$K$9$k(B</dt> - <dd>HTTP $B%W%m%H%3%k$NMWAG$OF|;~$N;~9o$GI=8=$5$l$F$$$^$9!#$G$9$+$i!"(B - $B@53N$J;~9o$K%7%s%/%m$5$;$k5!G=$r%7%9%F%`$K@_Dj$9$k$3$H$r6cL#$7$F$_$F2<$5$$!#(B - Network Time Protocol (NTP) $B$r%Y!<%9$H$7$?(B ntpdate $B$d(B xntpd $B%W%m%0%i%`$,(B - $B$3$NL\E*$K$h$/MQ$$$i$l$^$9!#(BNTP $B%=%U%H%&%'%"$d8x3+(B NTP - $B%5!<%P$K4X$9$k>\:Y$O!"(B<a - href="http://www.ntp.org">NTP $B%[!<%`%Z!<%8(B</a> $B$r$4Mw2<$5$$!#(B</dd> + による <a href="http://www.gnu.org/software/gcc/gcc.html">GNU C + compiler (GCC)</a> です。GCC がない場合は、 + 少なくとも提供されているコンパイラが ANSI 準拠であることを確認しておいて下さい。 + それから、変数 <code>PATH</code> には <code>make</code> + といった基本的なビルドツールが含まれている必要があります。</dd> + + <dt>時刻を正確にする</dt> + <dd>HTTP プロトコルの要素は日時の時刻で表現されています。ですから、 + 正確な時刻にシンクロさせる機能をシステムに設定することを吟味してみて下さい。 + Network Time Protocol (NTP) をベースとした ntpdate や xntpd プログラムが + この目的によく用いられます。NTP ソフトウェアや公開 NTP + サーバに関する詳細は、<a + href="http://www.ntp.org">NTP ホームページ</a> をご覧下さい。</dd> <dt><a href="http://www.perl.org/">Perl 5</a> - [$B%*%W%7%g%s(B]</dt> - <dd>$BDs6!$5$l$F$$$k%9%/%j%W%H4v$D$+!"Nc$($P(B <program>apxs</program> $B$d(B - <program>dbmmanage</program> $B$O(B - Perl $B$G=q$+$l$F$$$k$N$G!"(BPerl - 5 $B%$%s%?%W%j%?$,I,MW$K$J$j$^$9(B (5.003 $B0J9_(B)$B!#(B - Perl $B%$%s%?%W%j%?$rJ#?t%$%s%9%H!<%k$7$F$$$k(B ($B$?$H$($PA4BN$N%7%9%F%`$N0lIt(B - $B$H$7$F%$%s%9%H!<%k$5$l$F$$$k(B Perl 4 $B$H!"<+J,$GDI2C$G%$%s%9%H!<%k$7$?(B - Perl 5 $B$,$"$k$J$I$N(B) $B>l9g!"(B<code>--with-perl</code> $B%*%W%7%g%s(B ($B2<5-;2>H(B) - $B$r;H$C$F(B <program>configure</program> $B$,0U?^$7$?$b$N$r;H$&$h$&$K(B - $BL@<(E*$K;XDj$9$k$HNI$$$G$7$g$&!#(B - <program>configure</program> $B%9%/%j%W%H$G(B Perl 5 $B%$%s%?%W%j%?$,(B - $B8+$D$+$i$J$$>l9g$O!"$3$N1F6A$r<u$1$k%5%]!<%H%9%/%j%W%H$,;H$($J$/$J$j$^$9!#(B - $B$b$A$m$s!"(BApache httpd $B$N%3%s%Q%$%k$H%$%s%9%H!<%k$OLdBj$J$/9T$($^$9!#(B</dd> + [オプション]</dt> + <dd>提供されているスクリプト幾つか、例えば <program>apxs</program> や + <program>dbmmanage</program> は + Perl で書かれているので、Perl + 5 インタプリタが必要になります (5.003 以降)。 + Perl インタプリタを複数インストールしている (たとえば全体のシステムの一部 + としてインストールされている Perl 4 と、自分で追加でインストールした + Perl 5 があるなどの) 場合、<code>--with-perl</code> オプション (下記参照) + を使って <program>configure</program> が意図したものを使うように + 明示的に指定すると良いでしょう。 + <program>configure</program> スクリプトで Perl 5 インタプリタが + 見つからない場合は、この影響を受けるサポートスクリプトが使えなくなります。 + もちろん、Apache httpd のコンパイルとインストールは問題なく行えます。</dd> </dl> </section> -<section id="download"><title>$B%@%&%s%m!<%I(B</title> +<section id="download"><title>ダウンロード</title> - <p>Apache HTTP $B%5!<%P$O(B <a + <p>Apache HTTP サーバは <a href="http://httpd.apache.org/download.cgi">Apache HTTP - $B%5!<%P%@%&%s%m!<%I%5%$%H(B</a>$B$+$i%@%&%s%m!<%I$G$-$^$9$7!"(B - $BF1$8>l=j$K4v$D$+$N%_%i!<%5%$%H$b%j%9%H$7$F$$$^$9!#(B - UNIX $B$KN`;w$9$k%7%9%F%`$G(B Apache $B$r;H$&%f!<%6$O!"%=!<%9$r(B - $B%@%&%s%m!<%I$7$F%S%k%I$7$?$[$&$,NI$$$G$7$g$&!#(B - $B%S%k%I$N<j=g!J2<5-!K$O4JC1$G$9$7!"$=$N$*$+$2$G%K!<%:$K(B - $B8+9g$C$?%+%9%?%^%$%:$r4JC1$K$G$-$^$9!#(B - $B$5$i$K!"%P%$%J%j$N%j%j!<%9$O%=!<%9%j%j!<%9$h$j$b(B - $BCY$l$F$$$k$3$H$,$h$/$"$j$^$9!#(B - $B$=$l$G$b%P%$%J%j$r%@%&%s%m!<%I$7$?$N$G$"$l$P!"(B - $B%G%#%9%H%j%S%e!<%7%g%s$NCf$K$"$k(B <code>INSSTALL.bindist</code> - $B%U%!%$%k$N@bL@$K=>$C$F$/$@$5$$!#(B</p> - - <p>$B%@%&%s%m!<%I8e!"%@%&%s%m!<%I$7$?$b$N$,(B Apache HTTP - $B%5!<%P$N40A4$G2~cb$5$l$F$$$J$$%P!<%8%g%s$G$"$k$3$H$r(B - $B8!>Z$9$k$3$H$,=EMW$G$9!#$3$l$O%@%&%s%m!<%I$7$?(B tarball $B$N(B PGP $B=pL>$r(B - $B%F%9%H$9$k$3$H$K$h$C$F8!>Z$7$^$9!#(B - $B$3$N<j=g$N>\:Y$O(B <a - href="http://httpd.apache.org/download.cgi#verify">$B%@%&%s%m!<%I(B - $B%Z!<%8(B</a> $B$K$"$j!"$5$i$K>\$7$$Nc$O(B <a - href="http://httpd.apache.org/dev/verification.html">PGP $B$N;HMQ(B - </a> $B$K5-:\$5$l$F$$$^$9!#(B</p> + サーバダウンロードサイト</a>からダウンロードできますし、 + 同じ場所に幾つかのミラーサイトもリストしています。 + UNIX に類似するシステムで Apache を使うユーザは、ソースを + ダウンロードしてビルドしたほうが良いでしょう。 + ビルドの手順(下記)は簡単ですし、そのおかげでニーズに + 見合ったカスタマイズを簡単にできます。 + さらに、バイナリのリリースはソースリリースよりも + 遅れていることがよくあります。 + それでもバイナリをダウンロードしたのであれば、 + ディストリビューションの中にある <code>INSSTALL.bindist</code> + ファイルの説明に従ってください。</p> + + <p>ダウンロード後、ダウンロードしたものが Apache HTTP + サーバの完全で改竄されていないバージョンであることを + 検証することが重要です。これはダウンロードした tarball の PGP 署名を + テストすることによって検証します。 + この手順の詳細は <a + href="http://httpd.apache.org/download.cgi#verify">ダウンロード + ページ</a> にあり、さらに詳しい例は <a + href="http://httpd.apache.org/dev/verification.html">PGP の使用 + </a> に記載されています。</p> </section> -<section id="extract"><title>$BE83+(B</title> +<section id="extract"><title>展開</title> - <p>Apache HTTPD $B$N(B tarball - $B$+$i%=!<%9%U%!%$%k$rE83+$7$F<h$j=P$9$H$O!"(B - $BC1$J$k05=L$N2r=|$H(B tar $B$NE83+$G$9(B:</p> + <p>Apache HTTPD の tarball + からソースファイルを展開して取り出すとは、 + 単なる圧縮の解除と tar の展開です:</p> <example> $ gzip -d httpd-<em>NN</em>.tar.gz<br /> $ tar xvf httpd-<em>NN</em>.tar </example> - <p>$BG[I[MQ$N%=!<%9%3!<%I$,$"$k8=:_$$$k%G%#%l%/%H%j$N2<$K!"(B - $B?7$7$$%G%#%l%/%H%j$,:n$i$l$^$9!#(B - $B%5!<%P$r%3%s%Q%$%k$9$kCJ3,$K?J$`A0$K!"$=$N%G%#%l%/%H%j$K(B - <code>cd</code> $B$G0\F0$7$F$/$@$5$$!#(B</p> + <p>配布用のソースコードがある現在いるディレクトリの下に、 + 新しいディレクトリが作られます。 + サーバをコンパイルする段階に進む前に、そのディレクトリに + <code>cd</code> で移動してください。</p> </section> -<section id="configure"><title>$B%=!<%9%D%j!<$r@_Dj$9$k(B</title> +<section id="configure"><title>ソースツリーを設定する</title> - <p>$B<!$N%9%F%C%W$O!"$"$J$?$N%W%i%C%H%[!<%`$H(B - $B8D?ME*$JMW5a$K9g$&$h$&$K(B Apache - $B%=!<%9%D%j!<$r@_Dj$9$k$3$H$G$9!#(B - $B$3$l$OG[I[%G%#%l%/%H%j$N%k!<%H%G%#%l%/%H%j$K$"$k!"(B + <p>次のステップは、あなたのプラットホームと + 個人的な要求に合うように Apache + ソースツリーを設定することです。 + これは配布ディレクトリのルートディレクトリにある、 <program>configure</program> - $B%9%/%j%W%H$G9T$J$$$^$9!#(B - (Apache $B%=!<%9%D%j!<$NL$%j%j!<%9(B - $BHG$r%@%&%s%m!<%I$7$?3+H/<T$O!"<!$N%9%F%C%W$K?J$`A0$K(B - <code>autoconf</code> $B$H(B<code>libtool</code> - $B$r%$%s%9%H!<%k$7$F(B <code>buildconf</code> - $B$r<B9T$9$kI,MW$,$"$j$^$9!#(B - $B8x<0%j%j!<%9$G$O$3$N:n6H$OI,MW$"$j$^$;$s!#(B) </p> - - <p>$B%G%U%)%k%H%*%W%7%g%s$r;H$C$F%=!<%9%D%j!<$rA4$F@_Dj$9$k(B - $B$N$G$"$l$P!"C1=c$K(B <code>./configure</code> $B$H%?%$%W$7$F$/$@$5$$!#(B - $B%G%U%)%k%H%*%W%7%g%s$rJQ99$G$-$k$h$&$K!"(B<program>configure</program> - $B$K$OMM!9$JJQ?t$d%3%^%s%I%i%$%s%*%W%7%g%s$,MQ0U$5$l$F$$$^$9!#(B</p> - - <p>$B:G$b=EMW$J%*%W%7%g%s$O!"(BApache $B$,$3$N8e$G%$%s%9%H!<%k$5$l$k0LCV(B - <code>--prefix</code> $B$G$9!#(BApache $B$O!"$3$N%$%s%9%H!<%k0LCV$K(B - $B$*$$$F@5>o$KF0:n$9$k$h$&$K@_Dj$7$J$1$l$P$J$i$J$$$+$i$G$9!#(B - $B$5$i$K>\:Y$J%U%!%$%k0LCV$N@)8f$ODI2C$N(B <a - href="programs/configure.html#installationdirectories">$B@_Dj%*%W%7%g%s(B - </a> $B$G$G$-$^$9!#(B</p> - - <p>$B$3$N;~E@$G!"(B<a href="mod/">$B%b%8%e!<%k(B</a> $B$rM-8z$K$7$?$j(B - $BL58z$K$7$?$j$9$k$3$H$G(B Apache $BK\BN$K4^$^$l$k(B <a - href="programs/configure.html#optionalfeatures">$B5!G=(B</a> - $B$r;XDj$G$-$^$9!#(BApache $BK\BN$K$O%G%U%)%k%H$G!"%b%8%e!<%k$N(B <a - href="mod/module-dict.html#Status">Base</a> $B%;%C%H$,(B - $B4^$^$l$^$9!#$=$NB>$N%b%8%e!<%k$O(B - <code>--enable-<var>module</var></code> $B%*%W%7%g%s$G(B - $BM-8z$K$J$j$^$9!#$3$3$G(B <var>module</var> $B$O%b%8%e!<%k$NL>A0$G!"(B - $B$D$^$j$=$l$O%b%8%e!<%k$NL>A0$+$i(B <code>mod_</code> $BJ8;zNs$r<h$j=|$$$?8e$K(B - $B%"%s%@!<%9%3%"$r%@%C%7%e$GCV49$7$?J8;zNs$G$9!#(B - $B$3$l$H$OJL$NJ}K!$G(B <code>--enable-<var>module</var>=shared</code> - $B%*%W%7%g%s$r;H$C$F!"%b%8%e!<%k$r(B<a href="dso.html"> - $B%7%'%"!<%I%*%V%8%'%/%H(B (DSO)</a> -- $B<B9T;~$K%m!<%I$7$?$j(B - $B%"%s%m!<%I$7$?$j$G$-$k7A<0(B -- $B$H$7$F%3%s%Q%$%k$9$k$3$H$b$G$-$^$9!#(B - $BF1MM$K!"(B<code>--disable-<var>module</var></code> $B%*%W%7%g%s$G(B - Base $B%b%8%e!<%k$rL58z2=$9$k$3$H$b$G$-$^$9!#(B - $B$3$l$i$N%*%W%7%g%s$r;H$C$F$$$k$H$-$K!"$b$7;XDj$7$?%b%8%e!<%k$,B8:_$7$J$/$F$b(B - <program>configure</program> $B$O7Y9p$r>e$2$k$3$H$J$/!"C1=c$K%*%W%7%g%s$r(B - $BL5;k$9$k$3$H$K5$$r$D$1$F$/$@$5$$!#(B</p> - - <p>$B>e5-$K2C$($F!"(B<program>configure</program> $B%9%/%j%W%H$K!"(B - $B%3%s%Q%$%i!"%i%$%V%i%j!"%X%C%@%U%!%$%k$N0LCV$rDI2C>pJs$H$7$FEO$9(B - $BI,MW$,$"$k>l9g$,$"$j$^$9!#$3$N$h$&$J>l9g$K$O!"4D6-JQ?t$"$k$$$O(B - $B%3%^%s%I%i%$%s%*%W%7%g%s$G(B <program>configure</program> $B$KEO$7$^$9!#(B - $B>\:Y$K4X$7$F$O(B <program>configure</program> $B%^%K%e%"%k%Z!<%8(B - $B$r$4Mw$/$@$5$$!#(B</p> - - <p>$B$A$g$C$H$I$s$J$3$H$,$G$-$k$+$r8+$;$^$7$g$&!#(B - $B$3$3$GE57?E*$JNc$H$7$F!"(B<code>/sw/pkg/apache</code> - $B$H$$$&%$%s%9%H!<%k%D%j!<$G%3%s%Q%$%i$H%U%i%0$r;XDj$7$F!"(B - $B$5$i$KFs$D$NDI2C%b%8%e!<%k(B <module>mod_rewrite</module> $B$H(B - <module>mod_speling</module> $B$r8e$G(B DSO - $B%a%+%K%:%`$G%m!<%I$9$k$h$&$K%3%s%Q%$%k$7$F$_$^$9(B:</p> + スクリプトで行ないます。 + (Apache ソースツリーの未リリース + 版をダウンロードした開発者は、次のステップに進む前に + <code>autoconf</code> と<code>libtool</code> + をインストールして <code>buildconf</code> + を実行する必要があります。 + 公式リリースではこの作業は必要ありません。) </p> + + <p>デフォルトオプションを使ってソースツリーを全て設定する + のであれば、単純に <code>./configure</code> とタイプしてください。 + デフォルトオプションを変更できるように、<program>configure</program> + には様々な変数やコマンドラインオプションが用意されています。</p> + + <p>最も重要なオプションは、Apache がこの後でインストールされる位置 + <code>--prefix</code> です。Apache は、このインストール位置に + おいて正常に動作するように設定しなければならないからです。 + さらに詳細なファイル位置の制御は追加の <a + href="programs/configure.html#installationdirectories">設定オプション + </a> でできます。</p> + + <p>この時点で、<a href="mod/">モジュール</a> を有効にしたり + 無効にしたりすることで Apache 本体に含まれる <a + href="programs/configure.html#optionalfeatures">機能</a> + を指定できます。Apache 本体にはデフォルトで、モジュールの <a + href="mod/module-dict.html#Status">Base</a> セットが + 含まれます。その他のモジュールは + <code>--enable-<var>module</var></code> オプションで + 有効になります。ここで <var>module</var> はモジュールの名前で、 + つまりそれはモジュールの名前から <code>mod_</code> 文字列を取り除いた後に + アンダースコアをダッシュで置換した文字列です。 + これとは別の方法で <code>--enable-<var>module</var>=shared</code> + オプションを使って、モジュールを<a href="dso.html"> + シェアードオブジェクト (DSO)</a> -- 実行時にロードしたり + アンロードしたりできる形式 -- としてコンパイルすることもできます。 + 同様に、<code>--disable-<var>module</var></code> オプションで + Base モジュールを無効化することもできます。 + これらのオプションを使っているときに、もし指定したモジュールが存在しなくても + <program>configure</program> は警告を上げることなく、単純にオプションを + 無視することに気をつけてください。</p> + + <p>上記に加えて、<program>configure</program> スクリプトに、 + コンパイラ、ライブラリ、ヘッダファイルの位置を追加情報として渡す + 必要がある場合があります。このような場合には、環境変数あるいは + コマンドラインオプションで <program>configure</program> に渡します。 + 詳細に関しては <program>configure</program> マニュアルページ + をご覧ください。</p> + + <p>ちょっとどんなことができるかを見せましょう。 + ここで典型的な例として、<code>/sw/pkg/apache</code> + というインストールツリーでコンパイラとフラグを指定して、 + さらに二つの追加モジュール <module>mod_rewrite</module> と + <module>mod_speling</module> を後で DSO + メカニズムでロードするようにコンパイルしてみます:</p> <example> $ CC="pgcc" CFLAGS="-O2" \<br /> @@ -268,103 +268,103 @@ $ tar xvf httpd-<em>NN</em>.tar --enable-speling=shared </example> - <p><program>configure</program> $B$r<B9T$7$?$i!"%7%9%F%`$N5!G=$r(B - $B%F%9%H$7$?$j!"8e$G%5!<%P$r%3%s%Q%$%k$9$k$?$a$KI,MW$J(B Makefile - $B$r@8@.$7$?$j$9$k$N$K?tJ,4V$+$+$k$G$7$g$&!#(B</p> + <p><program>configure</program> を実行したら、システムの機能を + テストしたり、後でサーバをコンパイルするために必要な Makefile + を生成したりするのに数分間かかるでしょう。</p> - <p>$B8D!9$N(B <program>configure</program> $B%*%W%7%g%s$N>\:Y$K4X$7$F$O(B - <program>configure</program> $B%^%K%e%"%k%Z!<%8(B - $B$r$4Mw$/$@$5$$!#(B</p> + <p>個々の <program>configure</program> オプションの詳細に関しては + <program>configure</program> マニュアルページ + をご覧ください。</p> </section> -<section id="compile"><title>$B%S%k%I(B</title> +<section id="compile"><title>ビルド</title> - <p>$B$3$l$G(B Apache $B$NMM!9$J%Q!<%D$r%S%k%I$9$k$3$H$,$G$-$^$9!#(B - $B<!$N%3%^%s%I$rC1=c$K<B9T$9$k$@$1$G$9(B:</p> + <p>これで Apache の様々なパーツをビルドすることができます。 + 次のコマンドを単純に実行するだけです:</p> <example>$ make</example> - <p>$B4pK\E*$J@_Dj$r$9$k$N$K?tJ,$+$+$j$^$9$,!"(B - $B$"$i$+$8$a$4N;>5$/$@$5$$!#(B - $B$^$?!";~4V$O%O!<%I%&%'%"$dM-8z$K$7$?%b%8%e!<%k$N?t$K(B - $BBg$-$/0MB8$9$k$G$7$g$&!#(B</p> + <p>基本的な設定をするのに数分かかりますが、 + あらかじめご了承ください。 + また、時間はハードウェアや有効にしたモジュールの数に + 大きく依存するでしょう。</p> </section> -<section id="install"><title>$B%$%s%9%H!<%k(B</title> +<section id="install"><title>インストール</title> - <p>$B$5$F!"@_Dj$7$?%$%s%9%H!<%k(B <em>PREFIX</em> - ($BA0=R$N(B <code>--prefix</code> $B%*%W%7%g%s$r;2>H(B) - $B0J2<$K%Q%C%1!<%8$r%$%s%9%H!<%k$9$kCJ3,$K$J$j$^$7$?!#(B - $B<!$N%3%^%s%I$r<B9T$7$F$/$@$5$$(B:</p> + <p>さて、設定したインストール <em>PREFIX</em> + (前述の <code>--prefix</code> オプションを参照) + 以下にパッケージをインストールする段階になりました。 + 次のコマンドを実行してください:</p> <example>$ make install</example> - <p>$B%"%C%W%0%l!<%I$9$k>l9g$O!"%$%s%9%H!<%k$G$O@_Dj%U%!%$%k$d(B - $B%I%-%e%a%s%H%U%!%$%k$N>e=q$-$O9T$$$^$;$s!#(B</p> + <p>アップグレードする場合は、インストールでは設定ファイルや + ドキュメントファイルの上書きは行いません。</p> </section> -<section id="customize"><title>$B%+%9%?%^%$%:(B</title> +<section id="customize"><title>カスタマイズ</title> - <p>$B<!$K(B <code><em>PREFIX</em>/conf/</code> $B0J2<$K$"$k(B <a - href="configuring.html">$B@_Dj%U%!%$%k(B</a>$B$rJT=8$7$F!"(B - Apache HTTP $B%5!<%P$r%+%9%?%^%$%:$7$^$9!#(B</p> + <p>次に <code><em>PREFIX</em>/conf/</code> 以下にある <a + href="configuring.html">設定ファイル</a>を編集して、 + Apache HTTP サーバをカスタマイズします。</p> <example>$ vi <em>PREFIX</em>/conf/httpd.conf</example> - <p><a href="./">docs/manual/</a> $B$N(B Apache $B%^%K%e%"%k$r$6$C$H8+$F$/$@$5$$!#(B - $B$^$?$O!"(B<a + <p><a href="./">docs/manual/</a> の Apache マニュアルをざっと見てください。 + または、<a href="http://httpd.apache.org/docs/&httpd.docs;/" >http://httpd.apache.org/docs/&httpd.docs;/</a> - $B$K$"$k%^%K%e%"%k:G?7HG!"(B<a - href="mod/directives.html">$B@_Dj%G%#%l%/%F%#%V(B</a>$B$KEv$?$C$F$_$F$/$@$5$$!#(B</p> + にあるマニュアル最新版、<a + href="mod/directives.html">設定ディレクティブ</a>に当たってみてください。</p> </section> -<section id="test"><title>$B%F%9%H(B</title> +<section id="test"><title>テスト</title> - <p>$B<!$N%3%^%s%I$r<B9T$7$F(B Apache HTTP $B%5!<%P$r(B<a - href="invoking.html">$B3+;O(B</a>$B$G$-$^$9(B:</p> + <p>次のコマンドを実行して Apache HTTP サーバを<a + href="invoking.html">開始</a>できます:</p> <example>$ <em>PREFIX</em>/bin/apachectl -k start</example> - <p>URL <code>http://localhost/</code> $B$rDL$7$F:G=i$N%I%-%e%a%s%H$KBP$9$k(B - $B%j%/%(%9%H$rH/9T$9$k;v$,$G$-$k$O$:$G$9!#$3$l$G8+$($k(B - $B%&%'%V%Z!<%8$O(B <directive module="core">DocumentRoot</directive> - $B0J2<$KCV$+$l$?$b$N$G!"DL>o$O(B - <code><em>PREFIX</em>/htdocs/</code> $B$G$7$g$&!#(B - $B%5!<%P$r:F$S(B<a href="stopping.html">$BDd;_(B</a>$B$9$k$K$O!"(B - $B<!$N%3%^%s%I$r<B9T$7$^$9(B:</p> + <p>URL <code>http://localhost/</code> を通して最初のドキュメントに対する + リクエストを発行する事ができるはずです。これで見える + ウェブページは <directive module="core">DocumentRoot</directive> + 以下に置かれたもので、通常は + <code><em>PREFIX</em>/htdocs/</code> でしょう。 + サーバを再び<a href="stopping.html">停止</a>するには、 + 次のコマンドを実行します:</p> <example>$ <em>PREFIX</em>/bin/apachectl -k stop</example> </section> -<section id="upgrading"><title>$B%"%C%W%0%l!<%I(B</title> - - <p>$B%"%C%W%0%l!<%I$G$^$:9T$J$&$Y$-$3$H$O!"%j%j!<%9%"%J%&%s%9$H(B - $B%=!<%9%G%#%9%H%j%S%e!<%7%g%s$KF~$C$F$$$k(B <code>CHANGES</code> $B$rFI$s$G!"(B - $B<+?H$N%5%$%H$KBP$7$F1F6A$r5Z$\$9JQ99E@$rC5$9$3$H$G$9!#(B - $B%a%8%c!<%j%j!<%94V$NJQ99$r$9$k>l9g(B ($BNc$($P(B 1.3 $B$+$i(B 2.0 $B$X!"(B2.0 $B$+$i(B 2.2 $B$X(B) - $B$O!"%3%s%Q%$%k;~$d<B9T;~$N@_Dj$KBg$-$J:90[$,$"$k$G$7$g$&$+$i!"(B - $B<jF0$ND4@0$,I,MW$K$J$k$G$7$g$&!#%b%8%e!<%k$bA4$F!"(BAPI - $B$NJQ99$K9g$o$;$k$?$a$K%"%C%W%0%l!<%I$,I,MW$K$J$k$G$7$g$&!#(B</p> - - <p>$B%^%$%J!<%P!<%8%g%s$+$i<!$N%P!<%8%g%s$K%"%C%W%0%l!<%I$9$k>l9g(B - ($BNc$($P(B 2.2.55 $B$+$i(B 2.2.57 $B$X(B) $B$O!"$b$C$H4JC1$G$9!#(B - <code>make install</code> $B$r<B9T$7$F$b:#$"$k%I%-%e%a%s%H!"(B - $B%m%0%U%!%$%k!"@_Dj%U%!%$%k$O>e=q$-$5$l$^$;$s!#(B - $B$5$i$K!"%^%$%J!<%P!<%8%g%s4V$G$O(B <program>configure</program> $B%*%W%7%g%s!"(B - $B<B9T;~$N@_Dj!"%b%8%e!<%k(B API $B$KIT@09g$,5/$3$i$J$$$h$&$K!"(B - $B3+H/<T$O:GBg8B$NEXNO$r$7$F$$$^$9!#(B - $BBgDq$N>l9g!"F10l$N(B <program>configure</program> $B%3%^%s%I%i%$%s!"(B - $BF10l$N@_Dj%U%!%$%k!"%b%8%e!<%kA4$F$,@5>o$KF0:n$9$k$O$:$G$9!#(B</p> - - <p>$B%^%$%J!<%P!<%8%g%s$G%"%C%W%0%l!<%I$9$k>l9g$O!"(B - $B4{$K%$%s%9%H!<%k$5$l$F$$$k%5!<%P$N(B <code>build</code> $B%G%#%l%/%H%jFb$+!"(B - $B0JA0%$%s%9%H!<%k$K;H$C$?%=!<%9%3!<%I%D%j!<$N:G>e0L%G%#%l%/%H%jFb$K$"$k!"(B - <code>config.nice</code> $B%U%!%$%k$rC5$7$F$/$@$5$$!#(B - $B$3$N%U%!%$%k$K$O%=!<%9%D%j!<$r@_Dj$7$?;~$K;H$C$?(B - <program>configure</program> $B%3%^%s%I%i%$%s$,!"$=$N$^$^F~$C$F$$$^$9!#(B - $B<!$N%P!<%8%g%s$K%"%C%W%0%l!<%I$9$k>l9g$O(B <code>config.nice</code> - $B%U%!%$%k$r?7$7$$%P!<%8%g%s$N%=!<%9%D%j!<$K%3%T!<$7!"(B - $BI,MW$G$"$l$P$=$l$rJT=8$7$?8e$K!"<!$N$h$&$K<B9T$7$^$9!#(B</p> +<section id="upgrading"><title>アップグレード</title> + + <p>アップグレードでまず行なうべきことは、リリースアナウンスと + ソースディストリビューションに入っている <code>CHANGES</code> を読んで、 + 自身のサイトに対して影響を及ぼす変更点を探すことです。 + メジャーリリース間の変更をする場合 (例えば 1.3 から 2.0 へ、2.0 から 2.2 へ) + は、コンパイル時や実行時の設定に大きな差異があるでしょうから、 + 手動の調整が必要になるでしょう。モジュールも全て、API + の変更に合わせるためにアップグレードが必要になるでしょう。</p> + + <p>マイナーバージョンから次のバージョンにアップグレードする場合 + (例えば 2.2.55 から 2.2.57 へ) は、もっと簡単です。 + <code>make install</code> を実行しても今あるドキュメント、 + ログファイル、設定ファイルは上書きされません。 + さらに、マイナーバージョン間では <program>configure</program> オプション、 + 実行時の設定、モジュール API に不整合が起こらないように、 + 開発者は最大限の努力をしています。 + 大抵の場合、同一の <program>configure</program> コマンドライン、 + 同一の設定ファイル、モジュール全てが正常に動作するはずです。</p> + + <p>マイナーバージョンでアップグレードする場合は、 + 既にインストールされているサーバの <code>build</code> ディレクトリ内か、 + 以前インストールに使ったソースコードツリーの最上位ディレクトリ内にある、 + <code>config.nice</code> ファイルを探してください。 + このファイルにはソースツリーを設定した時に使った + <program>configure</program> コマンドラインが、そのまま入っています。 + 次のバージョンにアップグレードする場合は <code>config.nice</code> + ファイルを新しいバージョンのソースツリーにコピーし、 + 必要であればそれを編集した後に、次のように実行します。</p> <example> $ ./config.nice<br /> @@ -374,12 +374,12 @@ $ tar xvf httpd-<em>NN</em>.tar $ <em>PREFIX</em>/bin/apachectl -k start<br /> </example> - <note type="warning">$B?7$7$$%P!<%8%g%s$r;HMQ$9$k>l9g$O!"(B - $B<B:]$K1?MQ$r;O$a$kA0$K!"I,$:<+J,MQ$N4D6-$G%F%9%H$9$Y$-$G$9!#(B - $B:G=*E*$K%"%C%W%0%l!<%I$9$kA0$K!"Hs8_49@-$,$J$$$+$r%F%9%H$9$k$?$a$K!"(B - $BNc$($P!"0[$J$k(B <code>--prefix</code> $B$H0[$J$k%]!<%H(B (<directive - module="mpm_common">Listen</directive> $B%G%#%l%/%F%#%V$G@_Dj$7$^$9(B) - $B$r;HMQ$9$k$3$H$G!"8E$$%P!<%8%g%s$K1F6A$rM?$($:$K?7$7$$%P!<%8%g%s$r(B - $B%$%s%9%H!<%k$7!"<B9T$G$-$^$9!#(B</note> + <note type="warning">新しいバージョンを使用する場合は、 + 実際に運用を始める前に、必ず自分用の環境でテストすべきです。 + 最終的にアップグレードする前に、非互換性がないかをテストするために、 + 例えば、異なる <code>--prefix</code> と異なるポート (<directive + module="mpm_common">Listen</directive> ディレクティブで設定します) + を使用することで、古いバージョンに影響を与えずに新しいバージョンを + インストールし、実行できます。</note> </section> </manualpage> diff --git a/docs/manual/invoking.xml.ja b/docs/manual/invoking.xml.ja index 662b8239b7..6fdf6b24d5 100644 --- a/docs/manual/invoking.xml.ja +++ b/docs/manual/invoking.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 395228:567441 (outdated) --> @@ -22,130 +22,130 @@ <manualpage metafile="invoking.xml.meta"> - <title>Apache $B$N5/F0(B</title> + <title>Apache の起動</title> <summary> - <p>Windows $B>e$G$O!"(BApache $B$ODL>o$O(B - Windows NT, 2000, XP $B$G$O%5!<%S%9$H$7$F!"(BWindows 9x, ME - $B$G$O%3%s%=!<%k%"%W%j%1!<%7%g%s$H$7$F<B9T$5$l$^$9!#(B - $B>\:Y$K4X$7$F$O!"!V(B<a href="platform/windows.html#winsvc"> - $B%5!<%S%9$H$7$F<B9T$9$k(B</a>$B!W$H!V(B<a + <p>Windows 上では、Apache は通常は + Windows NT, 2000, XP ではサービスとして、Windows 9x, ME + ではコンソールアプリケーションとして実行されます。 + 詳細に関しては、「<a href="platform/windows.html#winsvc"> + サービスとして実行する</a>」と「<a href="platform/windows.html#wincons"> - $B%3%s%=!<%k%"%W%j%1!<%7%g%s$H$7$F<B9T$9$k(B</a>$B!W$r$4Mw2<$5$$!#(B</p> + コンソールアプリケーションとして実行する</a>」をご覧下さい。</p> - <p>Unix$B$G$O!"(B<program>httpd</program> - $B%W%m%0%i%`$,!"%P%C%/%0%i%&%s%I$G>o$K%j%/%(%9%H=hM}$r9T$&(B - $B%G!<%b%s$H$7$F<B9T$5$l$^$9!#$3$NJ8=q$G$O$I$N$h$&$K(B - <program>httpd</program> $B$r5/F0$9$k$+$K$D$$$F5-=R$7$F$$$^$9!#(B</p> + <p>Unixでは、<program>httpd</program> + プログラムが、バックグラウンドで常にリクエスト処理を行う + デーモンとして実行されます。この文書ではどのように + <program>httpd</program> を起動するかについて記述しています。</p> </summary> -<seealso><a href="stopping.html">$BDd;_$H:F5/F0(B</a></seealso> +<seealso><a href="stopping.html">停止と再起動</a></seealso> <seealso><program>httpd</program></seealso> <seealso><program>apachectl</program></seealso> -<section id="startup"><title>Apache $B$N5/F0J}K!(B</title> +<section id="startup"><title>Apache の起動方法</title> - <p>$B$b$7!"@_Dj%U%!%$%kCf$G;XDj$5$l$F$$$k(B + <p>もし、設定ファイル中で指定されている <directive module="mpm_common">Listen</directive> - $B$,%G%U%)%k%H$N(B 80 ($B$b$7$/$O(B 1024 $B0J2<$NB>$N%]!<%H(B) - $B$G$"$k>l9g$O!"(BApache $B$r5/F0$9$k$?$a$K$O(B root - $B8"8B$,I,MW$K$J$j$^$9$,!"(B - $B$3$l$O$3$NFC8"%]!<%H$K%P%$%s%I$9$k$?$a$G$9!#(B - $B5/F0$7$F!"0lEY%m%0%U%!%$%k$r3+$/$H$$$C$?=`Hw$N$?$a$N(B - $BF0:n$r4v$D$+<B9T$7$?8e$O!"%/%i%$%"%s%H$+$i$N%j%/%(%9%H$KBP$9$k(B - listen $B$H1~Ez$r<B:]$K9T$&(B<em>$B;R(B</em>$B%W%m%;%9$r5/F0$7$^$9!#(B - $B%a%$%s$N(B <program>httpd</program> $B%W%m%;%9$O(B root $B8"8B$GAv$jB3$1$^$9$,!"(B - $B;R%W%m%;%9$O$b$C$HDc$$8"8B$GAv$j$^$9!#(B - $B$3$l$OA*Br$7$?(B<a - href="mpm.html">$B%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B</a>$B$G@)8f$5$l$^$9!#(B</p> - - <p>$B?d>)$N(B <program>httpd</program> $B<B9T%W%m%0%i%`$N5/F0J}K!$O!"(B + がデフォルトの 80 (もしくは 1024 以下の他のポート) + である場合は、Apache を起動するためには root + 権限が必要になりますが、 + これはこの特権ポートにバインドするためです。 + 起動して、一度ログファイルを開くといった準備のための + 動作を幾つか実行した後は、クライアントからのリクエストに対する + listen と応答を実際に行う<em>子</em>プロセスを起動します。 + メインの <program>httpd</program> プロセスは root 権限で走り続けますが、 + 子プロセスはもっと低い権限で走ります。 + これは選択した<a + href="mpm.html">マルチプロセッシングモジュール</a>で制御されます。</p> + + <p>推奨の <program>httpd</program> 実行プログラムの起動方法は、 <program>apachectl</program> - $B@)8f%9%/%j%W%H$r;HMQ$9$kJ}K!$G$9!#$3$N%9%/%j%W%H$O!"(B<program>httpd</program> - $B$,%*%Z%l!<%F%#%s%0%7%9%F%`>e$G@5>o$KF0:n$9$k$h$&$KI,MW$J4D6-JQ?t$r(B - $BE,@Z$K@_Dj$7$F!"(B<program>httpd</program> $B%P%$%J%j$r5/F0$7$^$9!#(B - <program>apachectl</program> $B$O$I$s$J%3%^%s%I%i%$%s0z?t$bDL2a$5$;$^$9$N$G!"(B - <program>httpd</program> $B$N$I$N%3%^%s%I%i%$%s%*%W%7%g%s$b(B - <program>apchectl</program> $B$N%*%W%7%g%s$H$7$F;HMQ$G$-$^$9!#(B - $B$^$?!"(B<program>apchectl</program> $B%9%/%j%W%H$rD>@\JT=8$7!"(B - $B%9%/%j%W%H@hF,IU6a$N(B <code>HTTPD</code> $BJQ?t$rJQ99$9$k$3$H$G!"(B - <program>httpd</program> $B%P%$%J%j$N@5$7$$0LCV$r;XDj$7$?$j!"(B<em>$B>o$K(B</em> - $BIU2C$5$;$k%3%^%s%I%i%$%s0z?t$r;XDj$7$?$j$9$k$3$H$,$G$-$^$9!#(B</p> - - <p><code>httpd</code> $B$,5/F0$5$l$F$^$::G=i$K$9$k$3$H$O!"(B - <a href="configuring.html">$B@_Dj%U%!%$%k(B</a> - <code>httpd.conf</code> $B$N0LCV$rFCDj$7$FFI$_9~$`$3$H$G$9!#(B - $B$3$N%U%!%$%k$N0LCV$O%3%s%Q%$%k;~$K@_Dj$5$l$^$9$,!"<B9T;~$K(B - <code>-f</code> $B%3%^%s%I%i%$%s%*%W%7%g%s$r;H$C$F(B - $B0LCV$r;XDj$9$k$3$H$b$G$-$^$9!#Nc$($P<!$N$h$&$K$G$9!#(B</p> + 制御スクリプトを使用する方法です。このスクリプトは、<program>httpd</program> + がオペレーティングシステム上で正常に動作するように必要な環境変数を + 適切に設定して、<program>httpd</program> バイナリを起動します。 + <program>apachectl</program> はどんなコマンドライン引数も通過させますので、 + <program>httpd</program> のどのコマンドラインオプションも + <program>apchectl</program> のオプションとして使用できます。 + また、<program>apchectl</program> スクリプトを直接編集し、 + スクリプト先頭付近の <code>HTTPD</code> 変数を変更することで、 + <program>httpd</program> バイナリの正しい位置を指定したり、<em>常に</em> + 付加させるコマンドライン引数を指定したりすることができます。</p> + + <p><code>httpd</code> が起動されてまず最初にすることは、 + <a href="configuring.html">設定ファイル</a> + <code>httpd.conf</code> の位置を特定して読み込むことです。 + このファイルの位置はコンパイル時に設定されますが、実行時に + <code>-f</code> コマンドラインオプションを使って + 位置を指定することもできます。例えば次のようにです。</p> <example>/usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd.conf</example> - <p>$B%9%?!<%H%"%C%W$,K|;v>e<j$/$$$C$?$i!"%5!<%P$O%?!<%_%J%k$+$i(B - $B@Z$jN%$5$l$F!"%3%^%s%I%W%m%s%W%H$,B(:B$KLa$C$F$/$k$G$7$g$&!#(B - $B$3$l$O%5!<%P$,5/F0$7$F$$$k>uBV$r<($7$F$$$^$9!#(B - $B$=$N8e$O%V%i%&%6$G%5!<%P$K@\B3$7$F!"(B + <p>スタートアップが万事上手くいったら、サーバはターミナルから + 切り離されて、コマンドプロンプトが即座に戻ってくるでしょう。 + これはサーバが起動している状態を示しています。 + その後はブラウザでサーバに接続して、 <directive module="core">DocumentRoot</directive> - $B%G%#%l%/%H%j$N%F%9%H%Z!<%8$d$=$3$+$i%j%s%/$5$l$F$$$k(B - $B%m!<%+%k$N%I%-%e%a%s%H$r8+$k$3$H$,$G$-$k$G$7$g$&!#(B</p> + ディレクトリのテストページやそこからリンクされている + ローカルのドキュメントを見ることができるでしょう。</p> </section> -<section id="errors"><title>$B5/F0;~$N%(%i!<(B</title> +<section id="errors"><title>起動時のエラー</title> - <p>Apache $B$O!"5/F0;~$KCWL?E*$JLdBj$KAx6x$9$k$H!"(B - $B=*N;$9$kA0$K!"%3%s%=!<%k$+(B + <p>Apache は、起動時に致命的な問題に遭遇すると、 + 終了する前に、コンソールか <directive module="core">ErrorLog</directive> - $B$N$I$A$i$+$KLdBj$r5-=R$7$?%a%C%;!<%8$r=PNO$7$^$9!#(B - $B:G$b$h$/$"$k%(%i!<%a%C%;!<%8$O(B - $B!V(B<code>Unable to bind to Port ...</code>$B!W(B - $B$G$9!#$3$N%a%C%;!<%8$OIaDL$O<!$N$I$A$i$+$,860x$G$9!#(B</p> + のどちらかに問題を記述したメッセージを出力します。 + 最もよくあるエラーメッセージは + 「<code>Unable to bind to Port ...</code>」 + です。このメッセージは普通は次のどちらかが原因です。</p> <ul> - <li>root $B$G%m%0%$%s$7$F$$$J$$;~$K!"(B - $BFC8"%]!<%H$G%5!<%P$r5/F0$7$h$&$H$7$?!#(B</li> + <li>root でログインしていない時に、 + 特権ポートでサーバを起動しようとした。</li> - <li>$BF1$8%]!<%H$K4{$K%P%$%s%I$5$l$F$$$k(B Apache - $B$,$b$&0l$D$"$k$H$-$dB>$N%&%'%V%5!<%P$,B8:_$7$F$$$k;~$K!"(B - $B%5!<%P$r3+;O$7$h$&$H$7$?!#(B</li> + <li>同じポートに既にバインドされている Apache + がもう一つあるときや他のウェブサーバが存在している時に、 + サーバを開始しようとした。</li> </ul> - <p>$B$h$jB?$/$NLdBj2r7h$NJ}:v$N@bL@$O!"(B - Apache <a href="faq/">FAQ</a> $B$r$4Mw2<$5$$!#(B</p> + <p>より多くの問題解決の方策の説明は、 + Apache <a href="faq/">FAQ</a> をご覧下さい。</p> </section> -<section id="boot"><title>$B%V!<%H;~$N5/F0(B</title> +<section id="boot"><title>ブート時の起動</title> - <p>$B%7%9%F%`$,%j%V!<%H$7$?8e$G$b(B - $B%5!<%P$,<B9T$5$lB3$1$k$h$&$K$7$?$$>l9g$O!"(B + <p>システムがリブートした後でも + サーバが実行され続けるようにしたい場合は、 <program>apachectl</program> - $B$r8F$S=P$9$b$N$r%7%9%F%`%9%?!<%H%"%C%W%U%!%$%k(B - ($BDL>o(B <code>rc.local</code> $B$d(B <code>rc.N</code> - $BFb$N%U%!%$%k(B) $B$KDI2C$7$J$1$l$P$J$j$^$;$s!#(B - $B$3$NJ}K!$G$O(B Apache $B$r(B root $B8"8B$G5/F0$7$^$9!#(B - $B$3$l$r$9$kA0$K!"%;%-%e%j%F%#$d%"%/%;%9@)8B$,(B - $BE,@Z$K@_Dj$5$l$F$$$F$$$k$3$H$r3NG'$7$F$/$@$5$$!#(B</p> - - <p><program>apachectl</program> $B%9%/%j%W%H$ODL>o$O!"I8=`E*$J(B SysV init - $B%9%/%j%W%H$H$7$FF0:n$9$k$h$&$K@_7W$5$l$F$$$^$9!#(B + を呼び出すものをシステムスタートアップファイル + (通常 <code>rc.local</code> や <code>rc.N</code> + 内のファイル) に追加しなければなりません。 + この方法では Apache を root 権限で起動します。 + これをする前に、セキュリティやアクセス制限が + 適切に設定されていていることを確認してください。</p> + + <p><program>apachectl</program> スクリプトは通常は、標準的な SysV init + スクリプトとして動作するように設計されています。 <code>start</code>, <code>restart</code>, <code>stop</code> - $B$H$$$C$?0z?t$r$H$C$F!"(B<program>httpd</program> - $B$X$NE,@Z$J%7%0%J%k$KJQ49$7$^$9!#(B - $B$G$9$+$i!"DL>o$OC1$KE,@Z$J(B init $B%G%#%l%/%H%jFb$+$i(B - <program>apachectl</program> $B$X%j%s%/$9$k$3$H$,$G$-$^$9!#$7$+$7!"(B - $BG0$N$?$a%7%9%F%`$NMW5a$K9gCW$7$F$$$k$3$H$r3NG'$7$F$/$@$5$$!#(B</p> + といった引数をとって、<program>httpd</program> + への適切なシグナルに変換します。 + ですから、通常は単に適切な init ディレクトリ内から + <program>apachectl</program> へリンクすることができます。しかし、 + 念のためシステムの要求に合致していることを確認してください。</p> </section> -<section id="info"><title>$BDI2C>pJs(B</title> +<section id="info"><title>追加情報</title> - <p><program>httpd</program> $B$d(B - <program>apachectl</program>$B!"%5!<%P$K4^$^$l$F$$$?$=$NB>Jd=u%W%m%0%i%`$N!"(B - $B%3%^%s%I%i%$%s%*%W%7%g%s$K4X$9$kDI2C>pJs$O!"(B - <a href="programs/">$B%5!<%P$HJd=u%W%m%0%i%`(B</a>$B%Z!<%8$K(B - $B5-:\$5$l$F$$$^$9!#(B - Apache $BG[I[$K4^$^$l$F$$$kA4(B<a href="mod/">$B%b%8%e!<%k(B</a>$B!"(B - $B$=$l$K$h$C$FDs6!$5$l$k(B<a href="mod/directives.html">$B%G%#%l%/%F%#%V(B</a> - $B$N%I%-%e%a%s%H$b$"$j$^$9!#(B</p> + <p><program>httpd</program> や + <program>apachectl</program>、サーバに含まれていたその他補助プログラムの、 + コマンドラインオプションに関する追加情報は、 + <a href="programs/">サーバと補助プログラム</a>ページに + 記載されています。 + Apache 配布に含まれている全<a href="mod/">モジュール</a>、 + それによって提供される<a href="mod/directives.html">ディレクティブ</a> + のドキュメントもあります。</p> </section> </manualpage> diff --git a/docs/manual/logs.xml.ja b/docs/manual/logs.xml.ja index 4c6be0e23b..bd25ed5b7c 100644 --- a/docs/manual/logs.xml.ja +++ b/docs/manual/logs.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 165671:659902 (outdated) --> @@ -22,35 +22,35 @@ <manualpage metafile="logs.xml.meta"> - <title>$B%m%0%U%!%$%k(B</title> + <title>ログファイル</title> <summary> - <p>$B%&%'%V%5!<%P$r8z2LE*$K4IM}$9$k$?$a$K$O!"%5!<%P$N3hF0$d%Q%U%)!<%^%s%9!"(B - $B:#H/@8$7$F$$$k$+$b$7$l$J$$LdBj$K4X$9$k%U%#!<%I%P%C%/$rF@$k$3$H$,I,MW$G$9!#(B - Apache HTTP $B%5!<%P$K$OHs>o$KJq3gE*$G=@Fp$J%m%.%s%05!G=$,$"$j$^$9!#(B - $B$3$NJ8=q$O%m%.%s%05!G=$N@_Dj$N;EJ}$H!"%m%0$K2?$,=q$+$l$F$$$k$+$r(B - $BM}2r$9$k$?$a$NJ}K!$r@bL@$7$^$9!#(B</p> + <p>ウェブサーバを効果的に管理するためには、サーバの活動やパフォーマンス、 + 今発生しているかもしれない問題に関するフィードバックを得ることが必要です。 + Apache HTTP サーバには非常に包括的で柔軟なロギング機能があります。 + この文書はロギング機能の設定の仕方と、ログに何が書かれているかを + 理解するための方法を説明します。</p> </summary> <section id="security"><title> - $B%;%-%e%j%F%#$K4X$9$k7Y9p(B</title> - - <p>Apache $B$,%m%0%U%!%$%k$r=q$$$F$$$k%G%#%l%/%H%j$K=q$-9~$a$k?M$O!"(B - $B$[$\3N<B$K%5!<%P$,5/F0$5$l$?(B uid $B$X$N%"%/%;%9$r<j$KF~$l$k$3$H$,$G$-$^$9!#(B - $B$=$7$F!"$=$l$ODL>o$O(B root $B%f!<%6$G$9!#(B - $B$A$c$s$H7k2L$r9M$($k$3$H$J$/!"$=$N%G%#%l%/%H%j$X$N(B - $B=q$-9~$_8"8B$rM?$((B<em>$B$J$$(B</em>$B$G$/$@$5$$!#>\$7$/$O(B - <a href="misc/security_tips.html">$B%;%-%e%j%F%#$N$3$D(B</a>$B$NJ8=q$r(B - $BFI$s$G$/$@$5$$!#(B</p> - - <p>$B2C$($F!"%m%0%U%!%$%k$K$O%/%i%$%"%s%H$+$i$N>pJs$,$=$N$^$^!"(B - $B%(%9%1!<%W$5$l$k$3$H$J$/=q$+$l$F$$$^$9!#$G$9$+$i!"0-0U$N$"$k(B - $B%/%i%$%"%s%H$,%m%0%U%!%$%k$K@)8fJ8;z$rA^F~$9$k$3$H$,$G$-$^$9!#(B - $B@8$N%m%0$r07$&$H$-$OCm0U$7$F$/$@$5$$!#(B</p> + セキュリティに関する警告</title> + + <p>Apache がログファイルを書いているディレクトリに書き込める人は、 + ほぼ確実にサーバが起動された uid へのアクセスを手に入れることができます。 + そして、それは通常は root ユーザです。 + ちゃんと結果を考えることなく、そのディレクトリへの + 書き込み権限を与え<em>ない</em>でください。詳しくは + <a href="misc/security_tips.html">セキュリティのこつ</a>の文書を + 読んでください。</p> + + <p>加えて、ログファイルにはクライアントからの情報がそのまま、 + エスケープされることなく書かれています。ですから、悪意のある + クライアントがログファイルに制御文字を挿入することができます。 + 生のログを扱うときは注意してください。</p> </section> <section id="errorlog"> - <title>$B%(%i!<%m%0(B</title> + <title>エラーログ</title> <related> <directivelist> <directive module="core">ErrorLog</directive> @@ -58,22 +58,22 @@ </directivelist> </related> - <p><directive module="core">ErrorLog</directive> $B%G%#%l%/%F%#%V$K$h$j(B - $BL>A0$H>l=j$,7h$^$k%5!<%P$N%(%i!<%m%0$O!"0lHV=EMW$J%m%0%U%!%$%k$G$9!#(B - Apache $B$N?GCG>pJs$O$3$3$KAw$i$l!"%j%/%(%9%H$r=hM}$7$F$$$k$H$-$K(B - $BH/@8$7$?%(%i!<$O$9$Y$F$3$3$K5-O?$5$l$^$9!#%5!<%P$r5/F0$7$?$H$-$d!"(B - $B%5!<%P$NF0:n$KLdBj$,5/$3$C$?$H$-$O!"0lHV:G=i$KD4$Y$k$Y$-(B - $B$H$3$m$G$9!#4V0c$$$N>\:Y$d=$@5J}K!$,$=$3$K=q$+$l$F$$$k$3$H$,(B - $B$h$/$"$j$^$9!#(B</p> + <p><directive module="core">ErrorLog</directive> ディレクティブにより + 名前と場所が決まるサーバのエラーログは、一番重要なログファイルです。 + Apache の診断情報はここに送られ、リクエストを処理しているときに + 発生したエラーはすべてここに記録されます。サーバを起動したときや、 + サーバの動作に問題が起こったときは、一番最初に調べるべき + ところです。間違いの詳細や修正方法がそこに書かれていることが + よくあります。</p> - <p>$B%(%i!<%m%0$OIaDL$O%U%!%$%k$K=q$+$l$^$9(B ($BDL>o(B unix $B%7%9%F%`$G$O(B - <code>error_log</code>$B!"(BWindows $B$H(B OS/2 $B$G$O(B <code>error.log</code>)$B!#(B - Unix $B%7%9%F%`$G$O%(%i!<$r(B <code>syslog</code> $B$d(B - <a href="#piped">$B%Q%$%W$G%W%m%0%i%`$KAw$k(B</a> $B$3$H$,$G$-$^$9!#(B</p> + <p>エラーログは普通はファイルに書かれます (通常 unix システムでは + <code>error_log</code>、Windows と OS/2 では <code>error.log</code>)。 + Unix システムではエラーを <code>syslog</code> や + <a href="#piped">パイプでプログラムに送る</a> ことができます。</p> - <p>$B%(%i!<%m%0$N=q<0$OHf3SE*<+M3EY$N9b$$$b$N$G!"@bL@E*$K=q$+$l$F$$$^$9!#(B - $B$?$@$7!"$$$/$D$+$N>pJs$O$[$H$s$I$N%(%i!<%m%0$N%(%s%H%j$K$"$j$^$9!#(B - $BNc$($P!"BeI=E*$J$b$N$K<!$N$h$&$J%a%C%;!<%8$,$"$j$^$9!#(B</p> + <p>エラーログの書式は比較的自由度の高いもので、説明的に書かれています。 + ただし、いくつかの情報はほとんどのエラーログのエントリにあります。 + 例えば、代表的なものに次のようなメッセージがあります。</p> <example> [Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] @@ -81,32 +81,32 @@ /export/home/live/ap/htdocs/test </example> - <p>$B%m%0%(%s%H%j$N:G=i$N9`L\$O%a%C%;!<%8$NF|IU$H;~9o$G$9!#(B - $BFs$D$a$N9`L\$OJs9p$5$l$F$$$k%(%i!<$N=EMWEY$G$9!#(B - <directive module="core">LogLevel</directive> $B$G=EMWEY$N%l%Y%k$r(B - $B@)8B$9$k$3$H$K$h$j%(%i!<%m%0$KAw$i$l$k%(%i!<$N<oN`$r@)8f$9$k$3$H$,(B - $B$G$-$^$9!#;0$DL\$N9`L\$O%(%i!<$rH/@8$5$;$?%/%i%$%"%s%H$N(B IP $B%"%I%l%9(B - $B$G$9!#;D$j$O%a%C%;!<%8$G!"$3$N>l9g$O%5!<%P$,%/%i%$%"%s%H$N%"%/%;%9$r(B - $B5qH]$9$k$h$&$K@_Dj$5$l$F$$$k!"$H$$$&$3$H$r<($7$F$$$^$9!#(B - $B%5!<%P$O%j%/%(%9%H$5$l$?J8=q$N(B ($B%&%'%V$N%Q%9$G$O$J$/(B) $B%U%!%$%k%7%9%F%`$N(B - $B%Q%9$rJs9p$7$^$9!#(B</p> - - <p>$BHs>o$K9-HO0O$N%a%C%;!<%8$,%(%i!<%m%0$K8=$l$^$9!#$?$$$F$$$N$b$N$O(B - $B>e$NNc$N$h$&$J46$8$G$9!#%(%i!<%m%0$K$O(B CGI $B%9%/%j%W%H$N%G%P%C%0(B - $B=PNO$b=q$+$l$^$9!#(BCGI $B%9%/%j%W%H$,(B <code>stderr</code> $B$K=q$$$?(B - $B$9$Y$F$N>pJs$OD>@\%(%i!<%m%0$K%3%T!<$5$l$^$9!#(B</p> - - <p>$B>pJs$rDI2C$7$?$j:o=|$7$?$j$7$F%(%i!<%m%0$r%+%9%?%^%$%:$9$k$3$H$O(B - $B$G$-$^$;$s!#$7$+$7!"%j%/%(%9%H$KBP$9$k%(%i!<%m%0$N%(%s%H%j$O!"(B - $BBP1~$9$k%(%s%H%j$,(B<a href="#accesslog">$B%"%/%;%9%m%0(B</a>$B$K$"$j$^$9!#(B - $BNc$($P!">e$NNc$N%(%s%H%j$O%"%/%;%9%m%0$N%9%F!<%?%9%3!<%I(B 403 $B$N(B - $B%(%s%H%j$KBP1~$7$^$9!#%"%/%;%9%m%0$O%+%9%?%^%$%:2DG=$G$9$N$G!"(B - $B$=$A$i$r;H$&$3$H$K$h$j%(%i!<$N>u67$K4X$9$k>pJs$r$h$jB?$/(B - $B<j$KF~$l$k$3$H$,$G$-$^$9!#(B</p> - - <p>$B%F%9%H$N:GCf$O!"LdBj$,H/@8$7$F$$$k$+$I$&$+$r8+$k$?$a$K!"(B - $B>o$K%(%i!<%m%0$r4F;k$9$k$N$,Lr$KN)$D>l9g$,$h$/$"$j$^$9!#(B - Unix $B%7%9%F%`$G$O!"<!$N$b$N$r;H$&$3$H$,$G$-$^$9!#(B</p> + <p>ログエントリの最初の項目はメッセージの日付と時刻です。 + 二つめの項目は報告されているエラーの重要度です。 + <directive module="core">LogLevel</directive> で重要度のレベルを + 制限することによりエラーログに送られるエラーの種類を制御することが + できます。三つ目の項目はエラーを発生させたクライアントの IP アドレス + です。残りはメッセージで、この場合はサーバがクライアントのアクセスを + 拒否するように設定されている、ということを示しています。 + サーバはリクエストされた文書の (ウェブのパスではなく) ファイルシステムの + パスを報告します。</p> + + <p>非常に広範囲のメッセージがエラーログに現れます。たいていのものは + 上の例のような感じです。エラーログには CGI スクリプトのデバッグ + 出力も書かれます。CGI スクリプトが <code>stderr</code> に書いた + すべての情報は直接エラーログにコピーされます。</p> + + <p>情報を追加したり削除したりしてエラーログをカスタマイズすることは + できません。しかし、リクエストに対するエラーログのエントリは、 + 対応するエントリが<a href="#accesslog">アクセスログ</a>にあります。 + 例えば、上の例のエントリはアクセスログのステータスコード 403 の + エントリに対応します。アクセスログはカスタマイズ可能ですので、 + そちらを使うことによりエラーの状況に関する情報をより多く + 手に入れることができます。</p> + + <p>テストの最中は、問題が発生しているかどうかを見るために、 + 常にエラーログを監視するのが役に立つ場合がよくあります。 + Unix システムでは、次のものを使うことができます。</p> <example> tail -f error_log @@ -114,7 +114,7 @@ </section> <section id="accesslog"> - <title>$B%"%/%;%9%m%0(B</title> + <title>アクセスログ</title> <related> <modulelist> @@ -128,121 +128,121 @@ </directivelist> </related> - <p>$B%5!<%P%"%/%;%9%m%0$O%5!<%P$,=hM}$r$7$?$9$Y$F$N%j%/%(%9%H$r(B - $B5-O?$7$^$9!#%"%/%;%9%m%0$N>l=j$HFbMF$O(B <directive + <p>サーバアクセスログはサーバが処理をしたすべてのリクエストを + 記録します。アクセスログの場所と内容は <directive module="mod_log_config">CustomLog</directive> - $B%G%#%l%/%F%#%V$K$h$j7h$^$j$^$9!#%m%0$NFbMF$NA*Br$r4J7i$K$9$k$?$a$K(B + ディレクティブにより決まります。ログの内容の選択を簡潔にするために <directive module="mod_log_config">LogFormat</directive> - $B%G%#%l%/%F%#%V$r;HMQ$9$k$3$H$,$G$-$^$9!#$3$N%;%/%7%g%s$O%"%/%;%9%m%0$K(B - $B>pJs$r5-O?$9$k$?$a$N%5!<%P$N@_DjJ}K!$r@bL@$7$^$9!#(B</p> - - <p>$B$b$A$m$s!"%"%/%;%9%m%0$K>pJs$rC_@Q$9$k$3$H$O%m%04IM}$N(B - $B;O$^$j$K2a$.$^$;$s!#<!$NCJ3,$OM-MQ$JE}7W$r<h$k$?$a$K$3$N>pJs$r(B - $B2r@O$9$k$3$H$G$9!#0lHLE*$J%m%02r@O$O$3$NJ8=q$NHO0O30$G!"(B - $B%&%'%V%5!<%P<+?H$N;E;v$H$$$&$o$1$G$b$"$j$^$;$s!#$3$NOC$d!"(B - $B%m%02r@O$r9T$J$&%"%W%j%1!<%7%g%s$N>pJs$rF@$k$K$O!"(B<a + ディレクティブを使用することができます。このセクションはアクセスログに + 情報を記録するためのサーバの設定方法を説明します。</p> + + <p>もちろん、アクセスログに情報を蓄積することはログ管理の + 始まりに過ぎません。次の段階は有用な統計を取るためにこの情報を + 解析することです。一般的なログ解析はこの文書の範囲外で、 + ウェブサーバ自身の仕事というわけでもありません。この話や、 + ログ解析を行なうアプリケーションの情報を得るには、<a href="http://dmoz.org/Computers/Software/Internet/Site_Management/Log_analysis/"> - Open Directory</a> $B$d(B <a + Open Directory</a> や <a href="http://dir.yahoo.com/Computers_and_Internet/Software/Internet/World_Wide_Web/Servers/Log_Analysis_Tools/"> - Yahoo</a> $B$rD4$Y$F$/$@$5$$!#(B</p> - - <p>$B$$$m$s$J%P!<%8%g%s$N(B Apache httpd $B$,(B mod_log_config, - mod_log_agent, <code>TransferLog</code> $B%G%#%l%/%F%#%V$H$$$C$?!"(B - $BB>$N%b%8%e!<%k$d%G%#%l%/%F%#%V$r;H$C$F%"%/%;%9$N%m%.%s%0$r(B - $B@)8f$7$F$-$^$7$?!#:#$G$O!"(B<directive - module="mod_log_config">CustomLog</directive> $B$,$9$Y$F$N8E$$(B - $B%G%#%l%/%F%#%V$N5!G=$r4^$`$h$&$K$J$C$F$$$^$9!#(B</p> - - <p>$B%"%/%;%9%m%0$N=q<0$OHs>o$K=@Fp$J@_Dj$,2DG=$G$9!#(B - $B=q<0$O(B C $B$N(B printf(1) $B%U%)!<%^%C%HJ8;zNs$KHs>o$K;w$?(B - <directive module="mod_log_config">$B%U%)!<%^%C%HJ8;zNs(B</directive> - $B$K$h$j;XDj$5$l$^$9!#$$$/$D$+<!$N@a$GNc$r<($7$^$9!#(B - $B%U%)!<%^%C%HJ8;zNs$K;HMQ$G$-$kFbMF$N0lMw$O(B <a - href="mod/mod_log_config.html">mod_log_config $B$NJ8=q(B</a> - $B$r8+$F$/$@$5$$!#(B</p> + Yahoo</a> を調べてください。</p> + + <p>いろんなバージョンの Apache httpd が mod_log_config, + mod_log_agent, <code>TransferLog</code> ディレクティブといった、 + 他のモジュールやディレクティブを使ってアクセスのロギングを + 制御してきました。今では、<directive + module="mod_log_config">CustomLog</directive> がすべての古い + ディレクティブの機能を含むようになっています。</p> + + <p>アクセスログの書式は非常に柔軟な設定が可能です。 + 書式は C の printf(1) フォーマット文字列に非常に似た + <directive module="mod_log_config">フォーマット文字列</directive> + により指定されます。いくつか次の節で例を示します。 + フォーマット文字列に使用できる内容の一覧は <a + href="mod/mod_log_config.html">mod_log_config の文書</a> + を見てください。</p> <section id="common"> <title>Common Log Format</title> - <p>$B%"%/%;%9%m%0$N$h$/$"$k@_Dj$K0J2<$N$b$N$,$"$j$^$9!#(B</p> + <p>アクセスログのよくある設定に以下のものがあります。</p> <example> LogFormat "%h %l %u %t \"%r\" %>s %b" common<br /> CustomLog logs/access_log common </example> - <p>$B$3$l$O!"(B<em>$B%K%C%/%M!<%`(B</em> <code>common</code> $B$rDj5A$7!"(B - $B%m%0$N%U%)!<%^%C%HJ8;zNs$N0l$D$H4XO"IU$1$^$9!#%U%)!<%^%C%HJ8;zNs$O(B - $B%Q!<%;%s%H%G%#%l%/%F%#%V$+$i$J$j!"$=$l$>$l$N%Q!<%;%s%H%G%#%l%/%F%#%V$O(B - $B%5!<%P$K$I$N>pJs$r%m%.%s%0$9$k$+$r;X<($7$^$9!#%U%)!<%^%C%HJ8;zNs$K(B - $BJ8;z$r$=$N$^$^F~$l$k$3$H$b$G$-!"$=$l$i$O%m%0$N=PNO$KD>@\%3%T!<$5$l$^$9!#(B - $B$=$3$K0zMQJ8;z(B (<code>"</code>) $B$r=q$/$H$-$O!"(B - $B%U%)!<%^%C%HJ8;zNs$N:G8e$H$7$F2r<a(B - $B$5$l$k$3$H$rKI$0$?$a$K%P%C%/%9%i%C%7%e$G%(%9%1!<%W$9$kI,MW$,$"$j$^$9!#(B - $B%U%)!<%^%C%HJ8;zNs$K$O2~9TMQ$N(B "<code>\n</code>"$B!"%?%VMQ$N(B - "<code>\t</code>" $B$H$$$&FCJL$J@)8fJ8;z$b4^$a$k$3$H$,$G$-$^$9!#(B</p> - - <p><directive module="mod_log_config">CustomLog</directive> $B%G%#%l%/%F%#%V$O(B - $B4{$KDj5A$5$l$?(B - <em>$B%K%C%/%M!<%`(B</em> $B$r;H$C$F?7$7$$%m%0%U%!%$%k$r@_Dj$7$^$9!#(B - $B%"%/%;%9%m%0$N%U%!%$%kL>$O%9%i%C%7%e$G;O$^$i$J$$8B$j!"(B - <directive module="core">ServerRoot</directive> $B$+$i$NAjBP%Q%9$H$7$F(B - $B07$o$l$^$9!#(B</p> - - <p>$B>e$N@_Dj$O(B Common Log Format (CLF) $B$H8F$P$l$k7A<0$G(B - $B%m%0%(%s%H%j$r=q$-$^$9!#$3$NI8=`$N7A<0$O0[$J$k%&%'%V%5!<%P$NB?$/$,(B - $B@8@.$9$k$3$H$,$G$-!"B?$/$N%m%02r@O%W%m%0%i%`$,FI$_$3$`$3$H$,$G$-$^$9!#(B - CLF $B$K$h$j@8@.$5$l$?%m%0%U%!%$%k$N%(%s%H%j$O0J2<$N$h$&$K$J$j$^$9(B:</p> + <p>これは、<em>ニックネーム</em> <code>common</code> を定義し、 + ログのフォーマット文字列の一つと関連付けます。フォーマット文字列は + パーセントディレクティブからなり、それぞれのパーセントディレクティブは + サーバにどの情報をロギングするかを指示します。フォーマット文字列に + 文字をそのまま入れることもでき、それらはログの出力に直接コピーされます。 + そこに引用文字 (<code>"</code>) を書くときは、 + フォーマット文字列の最後として解釈 + されることを防ぐためにバックスラッシュでエスケープする必要があります。 + フォーマット文字列には改行用の "<code>\n</code>"、タブ用の + "<code>\t</code>" という特別な制御文字も含めることができます。</p> + + <p><directive module="mod_log_config">CustomLog</directive> ディレクティブは + 既に定義された + <em>ニックネーム</em> を使って新しいログファイルを設定します。 + アクセスログのファイル名はスラッシュで始まらない限り、 + <directive module="core">ServerRoot</directive> からの相対パスとして + 扱われます。</p> + + <p>上の設定は Common Log Format (CLF) と呼ばれる形式で + ログエントリを書きます。この標準の形式は異なるウェブサーバの多くが + 生成することができ、多くのログ解析プログラムが読みこむことができます。 + CLF により生成されたログファイルのエントリは以下のようになります:</p> <example> 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 </example> - <p>$B$3$N%m%0%(%s%H%j$N$=$l$>$l$NItJ,$N0UL#$O0J2<$G@bL@$7$^$9!#(B</p> + <p>このログエントリのそれぞれの部分の意味は以下で説明します。</p> <dl> <dt><code>127.0.0.1</code> (<code>%h</code>)</dt> - <dd>$B$3$l$O%5!<%P$X%j%/%(%9%H$r$7$?%/%i%$%"%s%H(B ($B%j%b!<%H%[%9%H(B) - $B$N(B IP $B%"%I%l%9$G$9!#(B<directive - module="core">HostnameLookups</directive> $B$,(B - <code>On</code> $B$N>l9g$O!"%5!<%P$O%[%9%HL>$rD4$Y$F!"(B - IP $B%"%I%l%9$,=q$+$l$F$$$k$H$3$m$K5-O?$7$^$9!#$7$+$7!"$3$N@_Dj$O(B - $B%5!<%P$r$+$J$jCY$/$9$k$N$G!"$"$^$j$*4+$a$G$-$^$;$s!#(B - $B$=$&$G$O$J$/!"(B<program>logresolve</program> $B$N(B - $B$h$&$J%m%0$N8e=hM}$r9T$J$&%W%m%0%i%`$G%[%9%HL>$rD4$Y$k$N$,NI$$$G$7$g$&!#(B - $B$3$3$KJs9p$5$l$k(B IP $B%"%I%l%9$OI,$:$7$b%f!<%6$,;H$C$F$$$k%^%7%s$N(B - $B$b$N$G$"$k$H$O8B$j$^$;$s!#%f!<%6$H%5!<%P$N4V$K%W%m%-%7%5!<%P$,(B - $B$"$l$P!"$3$N%"%I%l%9$O85$N%^%7%s$N$b$N$G$O$J$/!"%W%m%-%7$N(B - $B%"%I%l%9$K$J$j$^$9!#(B</dd> + <dd>これはサーバへリクエストをしたクライアント (リモートホスト) + の IP アドレスです。<directive + module="core">HostnameLookups</directive> が + <code>On</code> の場合は、サーバはホスト名を調べて、 + IP アドレスが書かれているところに記録します。しかし、この設定は + サーバをかなり遅くするので、あまりお勧めできません。 + そうではなく、<program>logresolve</program> の + ようなログの後処理を行なうプログラムでホスト名を調べるのが良いでしょう。 + ここに報告される IP アドレスは必ずしもユーザが使っているマシンの + ものであるとは限りません。ユーザとサーバの間にプロキシサーバが + あれば、このアドレスは元のマシンのものではなく、プロキシの + アドレスになります。</dd> <dt><code>-</code> (<code>%l</code>)</dt> - <dd>$B=PNOCf$N!V%O%$%U%s!W$OMW5a$5$l$?>pJs$,<j$KF~$i$J$+$C$?$H$$$&$3$H$r(B - $B0UL#$7$^$9!#$3$N>l9g!"<hF@$G$-$J$+$C$?>pJs$O%/%i%$%"%s%H$N%^%7%s$N(B - <code>identd</code> $B$K$h$j7h$^$k(B RFC 1413 $B$N%/%i%$%"%s%H$N(B - $B%"%$%G%s%F%#%F%#$G$9!#$3$N>pJs$O$"$^$j?.MQ$9$k$3$H$,$G$-$:!"(B - $B$7$C$+$j$H4IM}$5$l$?FbIt%M%C%H%o!<%/$r=|$$$F$O;H$&$Y$-$G$O$"$j$^$;$s!#(B - Apache $B$O(B <directive - module="core">IdentityCheck</directive> $B$,(B - <code>On</code> $B$K$J$C$F$$$J$$8B$j!"$3$N>pJs$rF@$h$&$H$9$i$7$^$;$s!#(B</dd> + <dd>出力中の「ハイフン」は要求された情報が手に入らなかったということを + 意味します。この場合、取得できなかった情報はクライアントのマシンの + <code>identd</code> により決まる RFC 1413 のクライアントの + アイデンティティです。この情報はあまり信用することができず、 + しっかりと管理された内部ネットワークを除いては使うべきではありません。 + Apache は <directive + module="core">IdentityCheck</directive> が + <code>On</code> になっていない限り、この情報を得ようとすらしません。</dd> <dt><code>frank</code> (<code>%u</code>)</dt> - <dd>$B$3$l$O(B HTTP $BG'>Z$K$h$k!"%I%-%e%a%s%H$r%j%/%(%9%H$7$??M$N(B - $B%f!<%6(B ID $B$G$9!#(BCGI $B%9%/%j%W%H$K$ODL>oF1$8CM$,(B <code>REMOTE_USER</code> - $B4D6-JQ?t$H$7$FM?$($i$l$^$9!#%j%/%(%9%H$N%9%F!<%?%9%3!<%I(B - ($B0J2<$r;2>H(B) $B$,(B 401 $B$G$"$C$?>l9g$O!"%f!<%6$OG'>Z$K<:GT$7$F$$$k$N$G!"(B - $B$3$NCM$O?.MQ$G$-$^$;$s!#%I%-%e%a%s%H$,%Q%9%o!<%I$GJ]8n$5$l$F$$$J$$(B - $B>l9g$O!"$3$N%(%s%H%j$OA0$N$b$N$HF1$8$h$&$K(B "<code>-</code>" $B$K(B - $B$J$j$^$9!#(B</dd> + <dd>これは HTTP 認証による、ドキュメントをリクエストした人の + ユーザ ID です。CGI スクリプトには通常同じ値が <code>REMOTE_USER</code> + 環境変数として与えられます。リクエストのステータスコード + (以下を参照) が 401 であった場合は、ユーザは認証に失敗しているので、 + この値は信用できません。ドキュメントがパスワードで保護されていない + 場合は、このエントリは前のものと同じように "<code>-</code>" に + なります。</dd> <dt><code>[10/Oct/2000:13:55:36 -0700]</code> (<code>%t</code>)</dt> <dd> - $B%5!<%P$,%j%/%(%9%H$r<u$1<h$C$?;~9o$G$9!#=q<0$O(B: + サーバがリクエストを受け取った時刻です。書式は: <p class="indent"> <code>[day/month/year:hour:minute:second zone]<br /> @@ -254,43 +254,43 @@ second = 2*digit<br /> zone = (`+' | `-') 4*digit</code> </p> - $B%m%0$N%U%)!<%^%C%HJ8;zNs$K(B <code>%{format}t</code> $B$r(B - $B;XDj$9$k$3$H$G!"JL$N7A<0$G;~9o$rI=<($5$;$k$3$H$b$G$-$^$9!#(B - $B$3$N$H$-!"(B<code>format</code> $B$O(B C $B$NI8=`%i%$%V%i%j$N(B - <code>strftime(3)</code> $B$N7A<0$K$J$j$^$9!#(B + ログのフォーマット文字列に <code>%{format}t</code> を + 指定することで、別の形式で時刻を表示させることもできます。 + このとき、<code>format</code> は C の標準ライブラリの + <code>strftime(3)</code> の形式になります。 </dd> <dt><code>"GET /apache_pb.gif HTTP/1.0"</code> (<code>\"%r\"</code>)</dt> - <dd>$B%/%i%$%"%s%H$+$i$N%j%/%(%9%H$,Fs=E0zMQId$NCf$K<($5$l$F$$$^$9!#(B - $B%j%/%(%9%H$K$OB?$/$NM-MQ$J>pJs$,$"$j$^$9!#$^$:!"$3$N>l9g%/%i%$%"%s%H$,(B - $B;H$C$?%a%=%C%I$O(B <code>GET</code> $B$G$9!#<!$K!"%/%i%$%"%s%H$O(B - $B%j%=!<%9(B <code>/apache_pb.gif</code> $B$rMW5a$7$^$7$?!#$=$7$F!"(B - $B%/%i%$%"%s%H$O%W%m%H%3%k(B <code>HTTP/1.0</code> $B$r;HMQ$7$^$7$?!#(B - $B%j%/%(%9%H$N3FItJ,$rFHN)$K%m%0<}=8$9$k$3$H$b$G$-$^$9!#Nc$($P!"(B - $B%U%)!<%^%C%HJ8;zNs(B "<code>%m %U%q %H</code>" $B$O(B - $B%a%=%C%I!"%Q%9!"%/%(%jJ8;zNs!"%W%m%H%3%k$r%m%0<}=8$7!"(B - $B7k6I(B "<code>%r</code>" $B$H$^$C$?$/F1$8=PNO$K$J$j$^$9!#(B</dd> + <dd>クライアントからのリクエストが二重引用符の中に示されています。 + リクエストには多くの有用な情報があります。まず、この場合クライアントが + 使ったメソッドは <code>GET</code> です。次に、クライアントは + リソース <code>/apache_pb.gif</code> を要求しました。そして、 + クライアントはプロトコル <code>HTTP/1.0</code> を使用しました。 + リクエストの各部分を独立にログ収集することもできます。例えば、 + フォーマット文字列 "<code>%m %U%q %H</code>" は + メソッド、パス、クエリ文字列、プロトコルをログ収集し、 + 結局 "<code>%r</code>" とまったく同じ出力になります。</dd> <dt><code>200</code> (<code>%>s</code>)</dt> - <dd>$B%5!<%P$,%/%i%$%"%s%H$KAw$jJV$9%9%F!<%?%9%3!<%I$G$9!#(B - $B$3$N>pJs$O!"%j%/%(%9%H$,@.8y1~Ez(B (2 $B$G;O$^$k%3!<%I(B) $B$G$"$C$?$+!"(B - $B%j%@%$%l%/%7%g%s(B (3 $B$G;O$^$k%3!<%I(B) $B$G$"$C$?$+!"%/%i%$%"%s%H$K$h$k(B - $B%(%i!<(B (4 $B$G;O$^$k%3!<%I(B) $B$G$"$C$?$+!"%5!<%P$N%(%i!<(B (5 $B$G;O$^$k%3!<%I(B) - $B$G$"$C$?$+!"$r8=$9$N$G!"Hs>o$KBg@Z$G$9!#%9%F!<%?%9%3!<%I$N(B - $B40A4$J%j%9%H$O(B <a + <dd>サーバがクライアントに送り返すステータスコードです。 + この情報は、リクエストが成功応答 (2 で始まるコード) であったか、 + リダイレクション (3 で始まるコード) であったか、クライアントによる + エラー (4 で始まるコード) であったか、サーバのエラー (5 で始まるコード) + であったか、を現すので、非常に大切です。ステータスコードの + 完全なリストは <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.txt">HTTP - $B5,3J(B</a> (RFC2616 $BBh(B 10 $B@a(B) $B$K$"$j$^$9!#(B</dd> + 規格</a> (RFC2616 第 10 節) にあります。</dd> <dt><code>2326</code> (<code>%b</code>)</dt> - <dd>$B$3$N:G8e$N%(%s%H%j$O%/%i%$%"%s%H$KAw?.$5$l$?%*%V%8%'%/%H$N!"(B - $B1~Ez%X%C%@$r=|$$$?%5%$%:$r8=$7$^$9!#%3%s%F%s%H$,%/%i%$%"%s%H$KAw$i$l$J$+$C$?(B - $B>l9g$O!"$3$NCM$O(B "<code>-</code>" $B$K$J$j$^$9!#%3%s%F%s%H$,L5$$>l9g$K(B - "<code>0</code>" $B$r%m%0<}=8$9$k$K$O!"(B<code>%b</code> $B$G$O$J$/(B - <code>%B</code> $B$r;H$C$F$/$@$5$$!#(B</dd> + <dd>この最後のエントリはクライアントに送信されたオブジェクトの、 + 応答ヘッダを除いたサイズを現します。コンテントがクライアントに送られなかった + 場合は、この値は "<code>-</code>" になります。コンテントが無い場合に + "<code>0</code>" をログ収集するには、<code>%b</code> ではなく + <code>%B</code> を使ってください。</dd> </dl> </section> @@ -298,8 +298,8 @@ <section id="combined"> <title>Combined Log Format</title> - <p>$B$b$&0l$D$N$h$/;H$o$l$k=q<0$O(B Combined Log Format $B$H8F$P$l$F$$$^$9!#(B - $B0J2<$N$h$&$K$7$F;H$&$3$H$,$G$-$^$9!#(B</p> + <p>もう一つのよく使われる書式は Combined Log Format と呼ばれています。 + 以下のようにして使うことができます。</p> <example> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" @@ -307,11 +307,11 @@ CustomLog log/access_log combined </example> - <p>$B$3$N=q<0$N:G=i$NJ}$O(B Common Log Format $B$H$^$C$?$/F1$8$G!":G8e$K(B - $BFs$DDI2C$N%(%s%H%j$,$"$j$^$9!#DI2C$N%(%s%H%j$O%Q!<%;%s%H%G%#%l%/%F%#%V(B - <code>%{<em>header</em>}i</code> $B$r;H$C$F$$$^$9!#$3$3$G(B - <em>header</em> $B$O(B HTTP $B$N%j%/%(%9%H%X%C%@$N$I$l$+$G$9!#$3$N=q<0$K$h$k(B - $B%"%/%;%9%m%0$O0J2<$N$h$&$J46$8$K$J$j$^$9(B:</p> + <p>この書式の最初の方は Common Log Format とまったく同じで、最後に + 二つ追加のエントリがあります。追加のエントリはパーセントディレクティブ + <code>%{<em>header</em>}i</code> を使っています。ここで + <em>header</em> は HTTP のリクエストヘッダのどれかです。この書式による + アクセスログは以下のような感じになります:</p> <example> 127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET @@ -320,36 +320,36 @@ (Win98; I ;Nav)" </example> - <p>$BDI2C$N%(%s%H%j$O(B:</p> + <p>追加のエントリは:</p> <dl> <dt><code>"http://www.example.com/start.html"</code> (<code>\"%{Referer}i\"</code>)</dt> - <dd>"Referer" ($B0U?^E*$JDV$j4V0c$$(B) HTTP $B%j%/%(%9%H%X%C%@$G$9!#(B - $B$3$l$O%/%i%$%"%s%H$,Js9p$7$F$/$k;2>H85$N%5%$%H$rI=$7$^$9!#(B - ($B$3$N>l9g$O!"(B<code>/apache_pb.gif</code> $B$K%j%s%/$7$F$$$k$+!"(B - $B$=$l$r4^$s$G$$$k%Z!<%8$G$9(B)$B!#(B</dd> + <dd>"Referer" (意図的な綴り間違い) HTTP リクエストヘッダです。 + これはクライアントが報告してくる参照元のサイトを表します。 + (この場合は、<code>/apache_pb.gif</code> にリンクしているか、 + それを含んでいるページです)。</dd> <dt><code>"Mozilla/4.08 [en] (Win98; I ;Nav)"</code> (<code>\"%{User-agent}i\"</code>)</dt> - <dd>User-Agent HTTP $B%j%/%(%9%H%X%C%@$G$9!#$3$l$O%/%i%$%"%s%H$N%V%i%&%6$,(B - $B<+J,<+?H$N$3$H$rJs9p$7$F$/$k>pJs$G$9!#(B</dd> + <dd>User-Agent HTTP リクエストヘッダです。これはクライアントのブラウザが + 自分自身のことを報告してくる情報です。</dd> </dl> </section> <section id="multiple"> - <title>$BJ#?t$N%"%/%;%9%m%0(B</title> + <title>複数のアクセスログ</title> - <p>$BJ#?t$N%"%/%;%9%m%0$OC1$K@_Dj%U%!%$%k$KJ#?t$N(B <directive + <p>複数のアクセスログは単に設定ファイルに複数の <directive module="mod_log_config">CustomLog</directive> - $B%G%#%l%/%F%#%V$r=q$/$3$H$G:n@.$5$l$^$9!#Nc$($P!"0J2<$N%G%#%l%/%F%#%V$O(B - $B;0$D$N%"%/%;%9%m%0$r:n$j$^$9!#:G=i$N$b$N$O4pK\E*$J(B CLF $B$N>pJs$G!"(B - $BFs$DL\$H;0$DL\$O(B referer $B$H%V%i%&%6$N>pJs$G$9!#:G8eFs$D$N(B - <directive module="mod_log_config">CustomLog</directive> $B$O(B - <code>ReferLog</code> $B%G%#%l%/%F%#%V$H(B - <code>AgentLog</code> $B%G%#%l%/%F%#%V$N8z2L$r$^$M$kJ}K!$r<($7$F$$$^$9!#(B</p> + ディレクティブを書くことで作成されます。例えば、以下のディレクティブは + 三つのアクセスログを作ります。最初のものは基本的な CLF の情報で、 + 二つ目と三つ目は referer とブラウザの情報です。最後二つの + <directive module="mod_log_config">CustomLog</directive> は + <code>ReferLog</code> ディレクティブと + <code>AgentLog</code> ディレクティブの効果をまねる方法を示しています。</p> <example> LogFormat "%h %l %u %t \"%r\" %>s %b" common<br /> @@ -358,26 +358,26 @@ CustomLog logs/agent_log "%{User-agent}i" </example> - <p>$B$3$NNc$O(B <directive module="mod_log_config">LogFormat</directive> $B$G(B - $B%K%C%/%M!<%`$rDj5A$9$kI,MW$,$J$$!"(B - $B$H$$$&$3$H$b<($7$F$$$^$9!#%K%C%/%M!<%`$NBe$o$j$K!"(B - <directive module="mod_log_config">CustomLog</directive> $B%G%#%l%/%F%#%V$K(B - $BD>@\%m%0$N=q<0$r;XDj$9$k$3$H$,$G$-$^$9!#(B</p> + <p>この例は <directive module="mod_log_config">LogFormat</directive> で + ニックネームを定義する必要がない、 + ということも示しています。ニックネームの代わりに、 + <directive module="mod_log_config">CustomLog</directive> ディレクティブに + 直接ログの書式を指定することができます。</p> </section> <section id="conditional"> - <title>$B>r7oIU$-%m%0(B</title> - - <p>$B%/%i%$%"%s%H$N%j%/%(%9%H$NFCD'$K4p$E$$$F%"%/%;%9%m%0$K%(%s%H%j$N(B - $B0lIt$r%m%.%s%0$7$J$$J}$,JXMx$J$3$H$,$"$j$^$9!#$3$l$O(B <a - href="env.html">$B4D6-JQ?t(B</a> $B$NJd=u$K$h$j4JC1$K<B8=$G$-$^$9!#$^$:!"(B - $B%j%/%(%9%H$,2?$i$+$N>r7o$K9g$&$H$$$&$3$H$r8=$9$?$a$K4D6-JQ?t$,(B - $B@_Dj$5$l$kI,MW$,$"$j$^$9!#$3$l$ODL>o$O(B <directive - module="mod_setenvif">SetEnvIf</directive> $B$K$h$j(B - $B9T$J$o$l$^$9!#$=$7$F!"(B<directive - module="mod_log_config">CustomLog</directive> $B%G%#%l%/%F%#%V$N(B - <code>env=</code> $B@a$r;H$C$F4D6-JQ?t$,@_Dj$5$l$F$$$k%j%/%(%9%H$r(B - $B4^$a$?$jGS=|$7$?$j$9$k$3$H$,$G$-$^$9!#$$$/$D$+Nc$r5s$2$^$9(B:</p> + <title>条件付きログ</title> + + <p>クライアントのリクエストの特徴に基づいてアクセスログにエントリの + 一部をロギングしない方が便利なことがあります。これは <a + href="env.html">環境変数</a> の補助により簡単に実現できます。まず、 + リクエストが何らかの条件に合うということを現すために環境変数が + 設定される必要があります。これは通常は <directive + module="mod_setenvif">SetEnvIf</directive> により + 行なわれます。そして、<directive + module="mod_log_config">CustomLog</directive> ディレクティブの + <code>env=</code> 節を使って環境変数が設定されているリクエストを + 含めたり排除したりすることができます。いくつか例を挙げます:</p> <example> # Mark requests from the loop-back interface<br /> @@ -388,8 +388,8 @@ CustomLog logs/access_log common env=!dontlog </example> - <p>$BB>$NNc$H$7$F!"1Q8l$rOC$9?M$+$i$N%j%/%(%9%H$H$=$l0J30$N?M$+$i$N%j%/%(%9%H$r(B - $BJ,$1$?$$!"$H$$$&>l9g$r9M$($F$_$F$/$@$5$$!#(B</p> + <p>他の例として、英語を話す人からのリクエストとそれ以外の人からのリクエストを + 分けたい、という場合を考えてみてください。</p> <example> SetEnvIf Accept-Language "en" english<br /> @@ -397,33 +397,33 @@ CustomLog logs/non_english_log common env=!english </example> - <p>$B$3$3$^$G$G$O>r7oIU$-%m%.%s%0$,Hs>o$K6/NO$G=@Fp$G$"$k$3$H$r<($7$F$-$^$7$?$,!"(B - $B$=$l$,%m%0$NFbMF$r@)8f$9$kM#0l$NJ}K!$H$$$&$o$1$G$O$"$j$^$;$s!#%m%0%U%!%$%k$O(B - $B%5!<%P$N3hF0$N40A4$J5-O?$G$"$kJ}$,$h$jLr$KN)$A$^$9!#C1=c$K%m%0%U%!%$%k$r(B - $B8e=hM}$7$F!"9MN8$7$?$/$J$$%m%0$r:o=|$9$kJ}$,4JC1$G$"$k$3$H$,$h$/$"$j$^$9!#(B</p> + <p>ここまででは条件付きロギングが非常に強力で柔軟であることを示してきましたが、 + それがログの内容を制御する唯一の方法というわけではありません。ログファイルは + サーバの活動の完全な記録である方がより役に立ちます。単純にログファイルを + 後処理して、考慮したくないログを削除する方が簡単であることがよくあります。</p> </section> </section> <section id="rotation"> - <title>$B%m%0$N8rBX(B</title> - - <p>$BIaDL$NIi2Y$N%5!<%P$G$5$(!"%m%0%U%!%$%k$KJ]B8$5$l$k>pJs$NNL$O(B - $BKDBg$K$J$j$^$9!#%"%/%;%9%m%0$N%U%!%$%k$OIaDL(B 10,000 $B%j%/%(%9%HKh$K(B - 1 MB $B0J>eA}$($^$9!#$G$9$+$i!"4{B8$N%m%0$r0\F0$7$?$j!":o=|$7$?$j$7$F!"(B - $BDj4|E*$K%m%0$r8rBX$5$;$k$3$H$,I,MW$K$J$j$^$9!#$3$l$O%5!<%P$N<B9TCf$K$O(B - $B9T$J$($^$;$s!#$H$$$&$N$O!"(BApache $B$O%U%!%$%k$,(B open $B$5$l$F$$$k4V$O(B - $B$:$C$H8E$$%m%0%U%!%$%k$K=q$-B3$1$k$+$i$G$9!#(B - $B?7$7$$%m%0%U%!%$%k$r(B open $B$G$-$k$h$&$K!"%m%0%U%!%$%k$,0\F0$5$l$?$j(B - $B:o=|$5$l$?8e$K!"%5!<%P$r(B<a href="stopping.html">$B:F5/F0(B</a>$B$9$k(B - $BI,MW$,$"$j$^$9!#(B</p> - - <p><em>$BM%2m$J(B</em> $B:F5/F0$r9T$J$&$3$H$G!"%5!<%P$O4{B8$N%3%M%/%7%g%s$d(B - $B=hM}BT$A$N%3%M%/%7%g%s$r<:$&$3$H$J$/?7$7$$%m%0%U%!%$%k$r(B open $B$5$;$k(B - $B$3$H$,$G$-$^$9!#$7$+$7!"$3$l$r<B8=$9$k$?$a$K!"%5!<%P$O8E$$%j%/%(%9%H$r(B - $B07$C$F$$$k4V$O8E$$%m%0%U%!%$%k$K=q$-B3$1$kI,MW$,$"$j$^$9!#(B - $B$G$9$+$i!":F5/F0$N8e$G$O%m%0%U%!%$%k$N=hM}$r;O$a$kA0$K!"$7$P$i$/BT$?$J$1$l$P(B - $B$J$j$^$;$s!#C1$K%m%0$r8rBX$5$;$F!"%G%#%9%/$N@aLs$N$?$a$K8E$$%m%0$r(B - $B05=L$9$kIaDL$N%7%J%j%*$O(B:</p> + <title>ログの交替</title> + + <p>普通の負荷のサーバでさえ、ログファイルに保存される情報の量は + 膨大になります。アクセスログのファイルは普通 10,000 リクエスト毎に + 1 MB 以上増えます。ですから、既存のログを移動したり、削除したりして、 + 定期的にログを交替させることが必要になります。これはサーバの実行中には + 行なえません。というのは、Apache はファイルが open されている間は + ずっと古いログファイルに書き続けるからです。 + 新しいログファイルを open できるように、ログファイルが移動されたり + 削除された後に、サーバを<a href="stopping.html">再起動</a>する + 必要があります。</p> + + <p><em>優雅な</em> 再起動を行なうことで、サーバは既存のコネクションや + 処理待ちのコネクションを失うことなく新しいログファイルを open させる + ことができます。しかし、これを実現するために、サーバは古いリクエストを + 扱っている間は古いログファイルに書き続ける必要があります。 + ですから、再起動の後ではログファイルの処理を始める前に、しばらく待たなければ + なりません。単にログを交替させて、ディスクの節約のために古いログを + 圧縮する普通のシナリオは:</p> <example> mv access_log access_log.old<br /> @@ -433,81 +433,81 @@ gzip access_log.old error_log.old </example> - <p>$B%m%0$N8rBX$r$9$k$b$&0l$D$NJ}K!$O(B<a - href="#piped">$B%Q%$%W7PM3$N%m%0(B</a>$B$r;H$&$b$N$G!"<!$N@a$G@bL@$5$l$F$$$^$9!#(B</p> + <p>ログの交替をするもう一つの方法は<a + href="#piped">パイプ経由のログ</a>を使うもので、次の節で説明されています。</p> </section> <section id="piped"> - <title>$B%Q%$%W7PM3$N%m%0(B</title> - - <p>Apache httpd $B$O%(%i!<%m%0$H%"%/%;%9%m%0$r%U%!%$%k$KD>@\=q$/Be$o$j$K!"(B - $B%Q%$%W$rDL$7$FJL$N%W%m%0%i%`$K=q$-=P$9$3$H$,$G$-$^$9!#(B - $B$3$N5!G=$K$h$j!"<g%5!<%P$K%3!<%I$rDI2C$9$k$3$H$J$/(B - $B%m%.%s%0$N=@Fp@-$,Hs>o$K9b$^$C$F$$$^$9!#%Q%$%W$K%m%0$r=q$/$?$a$K$O!"(B - $BC1$K%U%!%$%kL>$r%Q%$%WJ8;z(B "<code>|</code>" $B$KCV$-49$(!"$=$NB3$-$K(B - $BI8=`F~NO$+$i%m%0$N%(%s%H%j$r<u$1$H$k<B9T%W%m%0%i%`$NL>A0$r=q$/$@$1$G$9!#(B - Apache $B$O%Q%$%W7PM3$N%m%0MQ$N%W%m%;%9$r%5!<%P$N5/F0;~$K<B9T$7!"(B - $B%5!<%P$N<B9TCf$K$=$N%W%m%0%i%`$,%/%i%C%7%e$7$?$H$-$O$=$l$r:F$S(B - $B<B9T$7$^$9!#(B($B$3$N:G8e$N5!G=$,$3$N5;=Q$,!V?.Mj@-$N$"$k%Q%$%W7PM3$N%m%.%s%0!W(B - $B$H8F$P$l$F$$$kM}M3$G$9!#(B)</p> - - <p>$B%Q%$%W7PM3$N%m%0MQ$N%W%m%;%9$O(B Apache httpd $B$N?F%W%m%;%9$+$i5/F0$5$l!"(B - $B$=$N%W%m%;%9$N%f!<%6(B ID $B$r7Q>5$7$^$9!#$3$l$O!"$3$l$O!"%Q%$%W7PM3$N%m%0MQ$N(B - $B%W%m%0%i%`$OIaDL(B root $B$H$7$F<B9T$5$l$k$3$H$r0UL#$7$^$9!#(B - $B$G$9$+$i!"%W%m%0%i%`$r4JC1$G0BA4$KJ]$D$3$H$,Hs>o$K=EMW$G$9!#(B</p> - - <p>$B%Q%$%W7PM3$N%m%0$N=EMW$JMxMQK!$O!"%5!<%P$N:F5/F0$J$7$G%m%0$N8rBX$r(B - $B$9$k$3$H$G$9!#(BApache HTTP $B%5!<%P$K$O$3$N$?$a$N(B <program - >rotatelogs</program> $B$H8F$P$l$k4JC1$J(B - $B%W%m%0%i%`$,IUB0$7$F$$$^$9!#$?$H$($P!"(B24 $B;~4VKh$K%m%0$r8rBX$5$;$k$K$O!"(B - $B0J2<$N$b$N$r;H$&$3$H$,$G$-$^$9(B:</p> + <title>パイプ経由のログ</title> + + <p>Apache httpd はエラーログとアクセスログをファイルに直接書く代わりに、 + パイプを通して別のプログラムに書き出すことができます。 + この機能により、主サーバにコードを追加することなく + ロギングの柔軟性が非常に高まっています。パイプにログを書くためには、 + 単にファイル名をパイプ文字 "<code>|</code>" に置き換え、その続きに + 標準入力からログのエントリを受けとる実行プログラムの名前を書くだけです。 + Apache はパイプ経由のログ用のプロセスをサーバの起動時に実行し、 + サーバの実行中にそのプログラムがクラッシュしたときはそれを再び + 実行します。(この最後の機能がこの技術が「信頼性のあるパイプ経由のロギング」 + と呼ばれている理由です。)</p> + + <p>パイプ経由のログ用のプロセスは Apache httpd の親プロセスから起動され、 + そのプロセスのユーザ ID を継承します。これは、これは、パイプ経由のログ用の + プログラムは普通 root として実行されることを意味します。 + ですから、プログラムを簡単で安全に保つことが非常に重要です。</p> + + <p>パイプ経由のログの重要な利用法は、サーバの再起動なしでログの交替を + することです。Apache HTTP サーバにはこのための <program + >rotatelogs</program> と呼ばれる簡単な + プログラムが付属しています。たとえば、24 時間毎にログを交替させるには、 + 以下のものを使うことができます:</p> <example> CustomLog "|/usr/local/apache/bin/rotatelogs /var/log/access_log 86400" common </example> - <p>$B%Q%$%W$N@h$G8F$P$l$k%3%^%s%IA4BN$,0zMQId$G0O$^$l$F$$$k$3$H$KCmL\$7$F(B - $B$/$@$5$$!#$3$NNc$O%"%/%;%9%m%0$r;H$C$F$$$^$9$,!"%(%i!<%m%0$K$bF1$85;=Q$r(B - $B;H$&$3$H$,$G$-$^$9!#(B</p> + <p>パイプの先で呼ばれるコマンド全体が引用符で囲まれていることに注目して + ください。この例はアクセスログを使っていますが、エラーログにも同じ技術を + 使うことができます。</p> - <p>$B;w$F$$$k$1$l$I!"$h$j$:$C$H=@Fp$J(B - <a href="http://www.cronolog.org/">cronolog</a> $B$H$$$&%m%08rBXMQ$N(B - $B%W%m%0%i%`$,30It$N%5%$%H$K$"$j$^$9!#(B</p> + <p>似ているけれど、よりずっと柔軟な + <a href="http://www.cronolog.org/">cronolog</a> というログ交替用の + プログラムが外部のサイトにあります。</p> - <p>$B>r7oIU$-%m%.%s%0$HF1MM!"%Q%$%W7PM3$N%m%0$OHs>o$K6/NO$J(B - $BF;6q$G$9$,!"%*%U%i%$%s$N8e=hM}$N$h$&$J!"$h$j4JC1$J2r7hJ}K!$,$"$k$H$-$O(B - $B;H$o$J$$J}$,NI$$$G$7$g$&!#(B</p> + <p>条件付きロギングと同様、パイプ経由のログは非常に強力な + 道具ですが、オフラインの後処理のような、より簡単な解決方法があるときは + 使わない方が良いでしょう。</p> </section> <section id="virtualhosts"> - <title>$B%P!<%A%c%k%[%9%H(B</title> + <title>バーチャルホスト</title> - <p>$BB?$/$N(B <a href="vhosts/">$B%P!<%A%c%k%[%9%H(B</a> $B$N$"$k%5!<%P$r<B9T$7$F$$$k(B - $B$H$-$O!"%m%0%U%!%$%k$N07$$J}$K$$$/$D$+$NJ}K!$,$"$j$^$9!#(B - $B$^$:!"C1FH$N%[%9%H$N$_$N%5!<%P$H$^$C$?$/F1$8$h$&$K%m%0$r;H$&$3$H$,$G$-$^$9!#(B - $B%m%.%s%0%G%#%l%/%F%#%V$r<g%5!<%P$N%3%s%F%-%9%H$N(B + <p>多くの <a href="vhosts/">バーチャルホスト</a> のあるサーバを実行している + ときは、ログファイルの扱い方にいくつかの方法があります。 + まず、単独のホストのみのサーバとまったく同じようにログを使うことができます。 + ロギングディレクティブを主サーバのコンテキストの <directive module="core" - type="section">VirtualHost</directive> $B%;%/%7%g%s$N30$KCV$/$3$H$G!"(B - $B$9$Y$F$N%m%0$rF1$8%"%/%;%9%m%0$H%(%i!<%m%0$K%m%0<}=8$9$k$3$H$,$G$-$^$9!#(B - $B$3$N<jK!$G$O8D!9$N%P!<%A%c%k%[%9%H$NE}7W$r4JC1$K$H$k$3$H$O$G$-$^$;$s!#(B</p> - - <p><directive module="mod_log_config">>CustomLog</directive> $B$d(B - <directive module="mod_log_config">ErrorLog</directive> $B%G%#%l%/%F%#%V$,(B - <directive module="core" type="section">VirtualHost</directive> $B$NCf$K(B - $BCV$+$l$?>l9g$O!"$=$N%P!<%A%c%k(B - $B%[%9%H$X$N$9$Y$F$N%j%/%(%9%H$d%(%i!<$,$=$3$G;XDj$5$l$?%U%!%$%k$K$N$_(B - $B%m%0<}=8$5$l$^$9!#%m%.%s%0%G%#%l%/%F%#%V$N$J$$%P!<%A%c%k%[%9%H$O(B - $B0MA3$H$7$F%j%/%(%9%H$,<g%5!<%P$N%m%0$KAw$i$l$^$9!#$3$N<jK!$O>/$J$$(B - $B%P!<%A%c%k%[%9%H$KBP$7$F$OHs>o$KM-MQ$G$9$,!"%[%9%H$N?t$,Hs>o$KB?$/$J$k$H(B - $B4IM}$,BgJQ$K$J$j$^$9!#$5$i$K!"(B<a - href="vhosts/fd-limits.html">$B%U%!%$%k5-=R;R$N8B3&(B</a>$B$NLdBj$r5/$3$9$3$H$,(B - $B$"$j$^$9!#(B</p> - - <p>$B%"%/%;%9%m%0$K$O!"Hs>o$KNI$$BE6(0F$,$"$j$^$9!#%P!<%A%c%k%[%9%H$N(B - $B>pJs$r%m%0$N%U%)!<%^%C%HJ8;zNs$K2C$($k$3$H$G!"$9$Y$F$N%[%9%H$X$N(B - $B%j%/%(%9%H$rF1$8%m%0$K%m%0<}=8$7$F!"8e$G%m%0$r8D!9$N%U%!%$%k$KJ,3d$9$k$3$H$,(B - $B$G$-$^$9!#$?$H$($P!"0J2<$N%G%#%l%/%F%#%V$r8+$F$/$@$5$$!#(B</p> + type="section">VirtualHost</directive> セクションの外に置くことで、 + すべてのログを同じアクセスログとエラーログにログ収集することができます。 + この手法では個々のバーチャルホストの統計を簡単にとることはできません。</p> + + <p><directive module="mod_log_config">>CustomLog</directive> や + <directive module="mod_log_config">ErrorLog</directive> ディレクティブが + <directive module="core" type="section">VirtualHost</directive> の中に + 置かれた場合は、そのバーチャル + ホストへのすべてのリクエストやエラーがそこで指定されたファイルにのみ + ログ収集されます。ロギングディレクティブのないバーチャルホストは + 依然としてリクエストが主サーバのログに送られます。この手法は少ない + バーチャルホストに対しては非常に有用ですが、ホストの数が非常に多くなると + 管理が大変になります。さらに、<a + href="vhosts/fd-limits.html">ファイル記述子の限界</a>の問題を起こすことが + あります。</p> + + <p>アクセスログには、非常に良い妥協案があります。バーチャルホストの + 情報をログのフォーマット文字列に加えることで、すべてのホストへの + リクエストを同じログにログ収集して、後でログを個々のファイルに分割することが + できます。たとえば、以下のディレクティブを見てください。</p> <example> LogFormat "%v %l %u %t \"%r\" %>s %b" @@ -515,19 +515,19 @@ CustomLog logs/access_log comonvhost </example> - <p><code>%v</code> $B$,%j%/%(%9%H$r07$C$F$$$k%P!<%A%c%k%[%9%H$NL>A0$r(B - $B%m%0<}=8$9$k$?$a$K;H$o$l$F$$$^$9!#$=$7$F!"(B<a - href="programs/other.html">split-logfile</a> $B$N$h$&$J%W%m%0%i%`$r(B - $B;H$C$F%"%/%;%9%m%0$r8e=hM}$9$k$3$H$G!"(B - $B%P!<%A%c%k%[%9%HKh$N%U%!%$%k$K%m%0$rJ,3d$9$k$3$H$,$G$-$^$9!#(B</p> + <p><code>%v</code> がリクエストを扱っているバーチャルホストの名前を + ログ収集するために使われています。そして、<a + href="programs/other.html">split-logfile</a> のようなプログラムを + 使ってアクセスログを後処理することで、 + バーチャルホスト毎のファイルにログを分割することができます。</p> - <p>$B;DG0$J$,$i!"%(%i!<%m%0$K$OF1MM$N<jK!$O$"$j$^$;$s!#$G$9$+$i!"(B - $B$9$Y$F$N%P!<%A%c%k%[%9%H$rF1$8%(%i!<%m%0$NCf$K:.$<$k$+!"(B - $B%P!<%A%c%k%[%9%HKh$K%(%i!<%m%0$r;H$&$+$rA*$P$J$1$l$P$J$j$^$;$s!#(B</p> + <p>残念ながら、エラーログには同様の手法はありません。ですから、 + すべてのバーチャルホストを同じエラーログの中に混ぜるか、 + バーチャルホスト毎にエラーログを使うかを選ばなければなりません。</p> </section> <section id="other"> - <title>$BB>$N%m%0%U%!%$%k(B</title> + <title>他のログファイル</title> <related> <modulelist> @@ -545,41 +545,41 @@ </related> <section id="pidfile"> - <title>PID $B%U%!%$%k(B</title> - - <p>$B5/F0;~$K!"(BApache $B$O?F(B httpd $B%W%m%;%9$N%W%m%;%9(B ID $B$r(B - <code>logs/httpd.pid</code> $B$KJ]B8$7$^$9!#$3$N(B - $B%U%!%$%kL>$O(B <directive - module="mpm_common">PidFile</directive> $B%G%#%l%/%F%#%V$r;H$C$F(B - $BJQ99$9$k$3$H$,$G$-$^$9!#%W%m%;%9(B ID $B$O4IM}<T$,?F%W%m%;%9$K(B - $B%7%0%J%k$rAw$k$3$H$G%G!<%b%s$r:F5/F0$7$?$j=*N;$5$;$?$j$9$k$H$-$K(B - $B;HMQ$7$^$9!#(BWindows $B$G$O!"Be$o$j$K(B -k $B%3%^%s%I%*%W%7%g%s$r(B - $B;H$C$F$/$@$5$$!#>\$7$$>pJs$O(B <a href="stopping.html">$B=*N;$H(B - $B:F5/F0(B</a> $B$N%Z!<%8$r8+$F$/$@$5$$!#(B</p> + <title>PID ファイル</title> + + <p>起動時に、Apache は親 httpd プロセスのプロセス ID を + <code>logs/httpd.pid</code> に保存します。この + ファイル名は <directive + module="mpm_common">PidFile</directive> ディレクティブを使って + 変更することができます。プロセス ID は管理者が親プロセスに + シグナルを送ることでデーモンを再起動したり終了させたりするときに + 使用します。Windows では、代わりに -k コマンドオプションを + 使ってください。詳しい情報は <a href="stopping.html">終了と + 再起動</a> のページを見てください。</p> </section> <section id="scriptlog"> - <title>$B%9%/%j%W%H%m%0(B</title> - - <p>$B%G%P%C%0$NJd=u$N$?$a$K!"(B<directive - module="mod_cgi">ScriptLog</directive> $B%G%#%l%/%F%#%V$O(B - CGI $B%9%/%j%W%H$NF~NO$H=PNO$r5-O?$9$k$h$&$K$G$-$^$9!#(B - $B$3$l$O%F%9%HMQ$K$N$_;HMQ$7$F!"DL>o$N%5!<%P$G$O;HMQ$7$J$$$G$/$@$5$$!#(B - $B>\$7$$>pJs$O(B <a - href="mod/mod_cgi.html">mod_cgi $B$NJ8=q(B</a> $B$K$"$j$^$9!#(B</p> + <title>スクリプトログ</title> + + <p>デバッグの補助のために、<directive + module="mod_cgi">ScriptLog</directive> ディレクティブは + CGI スクリプトの入力と出力を記録するようにできます。 + これはテスト用にのみ使用して、通常のサーバでは使用しないでください。 + 詳しい情報は <a + href="mod/mod_cgi.html">mod_cgi の文書</a> にあります。</p> </section> <section id="rewritelog"> - <title>$B%j%i%$%H%m%0(B</title> - - <p><directive module="mod_rewrite">mod_rewrite</directive> $B$N6/NO$G(B - $BJ#;($J5!G=$r(B - $B;H$C$F$$$k$H$-$O!"$[$\$$$D$b%G%P%C%0$r4JC1$K$9$k$?$a$K(B - <directive module="mod_rewrite">RewriteLog</directive> $B$N;HMQ$,(B - $BI,MW$G$7$g$&!#$3$N%m%0%U%!%$%k$K$O%j%i%$%H%(%s%8%s$,%j%/%(%9%H$r(B - $B=q$-49$($kJ}K!$N>\:Y$J2r@O$,=PNO$5$l$^$9!#>\$7$5$NEY9g$O(B <directive + <title>リライトログ</title> + + <p><directive module="mod_rewrite">mod_rewrite</directive> の強力で + 複雑な機能を + 使っているときは、ほぼいつもデバッグを簡単にするために + <directive module="mod_rewrite">RewriteLog</directive> の使用が + 必要でしょう。このログファイルにはリライトエンジンがリクエストを + 書き換える方法の詳細な解析が出力されます。詳しさの度合は <directive module="mod_rewrite">RewriteLogLevel</directive> - $B$G@)8f$G$-$^$9!#(B</p> + で制御できます。</p> </section> </section> </manualpage> diff --git a/docs/manual/mod/core.xml.ja b/docs/manual/mod/core.xml.ja index eb0267988e..e05cd50b4c 100644 --- a/docs/manual/mod/core.xml.ja +++ b/docs/manual/mod/core.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 190982:661942 (outdated) --> @@ -23,55 +23,55 @@ <modulesynopsis metafile="core.xml.meta"> <name>core</name> -<description>$B>o$K;HMQ2DG=$J(B Apache HTTP $B%5!<%P$N%3%"5!G=(B</description> +<description>常に使用可能な Apache HTTP サーバのコア機能</description> <status>Core</status> <directivesynopsis> <name>AcceptFilter</name> -<description>$B%W%m%H%3%k$r(B Listen $B$7$F$$$k%=%1%C%H$N:GE,2=$r@_Dj$9$k(B</description> +<description>プロトコルを Listen しているソケットの最適化を設定する</description> <syntax>AcceptFilter <var>protocol</var> <var>accept_filter</var></syntax> <contextlist><context>server config</context></contextlist> -<compatibility>2.1.5 $B0J9_(B</compatibility> +<compatibility>2.1.5 以降</compatibility> <usage> - <p>Listen $B$7$F$$$k%=%1%C%H$KBP$7$F!"(BOS $B$,8GM-$K;}$C$F$$$k%W%m%H%3%k$K$D$$$F$N:GE,2=$r(B - $BM-8z$K$9$k%G%#%l%/%F%#%V$G$9!#BgA0Ds$H$J$k>r7o$O!"%G!<%?$,<u?.$5$l$k$+(B - HTTP $B%j%/%(%9%HA4BN$,%P%C%U%!$5$l$k$+$9$k$^$G!"%+!<%M%k$,%5!<%P%W%m%;%9$K(B - $B%=%1%C%H$rAw$i$J$$$h$&$K$J$C$F$$$k!"$H$$$&$3$H$G$9!#8=:_%5%]!<%H$5$l$F$$$k$N$O!"(B + <p>Listen しているソケットに対して、OS が固有に持っているプロトコルについての最適化を + 有効にするディレクティブです。大前提となる条件は、データが受信されるか + HTTP リクエスト全体がバッファされるかするまで、カーネルがサーバプロセスに + ソケットを送らないようになっている、ということです。現在サポートされているのは、 <a href="http://www.freebsd.org/cgi/man.cgi?query=accept_filter&sektion=9"> - FreeBSD $B$N(B Accept Filter</a> $B$H(B Linux $B$N%W%j%_%F%#%V$J(B - <code>TCP_DEFER_ACCEPT</code> $B$N$_$G$9!#(B</p> + FreeBSD の Accept Filter</a> と Linux のプリミティブな + <code>TCP_DEFER_ACCEPT</code> のみです。</p> - <p>FreeBSD $B$N%G%U%)%k%HCM$O(B :</p> + <p>FreeBSD のデフォルト値は :</p> <example> AcceptFilter http httpready <br/> AcceptFilter https dataready </example> - <p><code>httpready</code> Accept Filter $B$O(B HTTP $B%j%/%(%9%HA4BN$r!"(B - $B%+!<%M%k%l%Y%k$G%P%C%U%!%j%s%0$7$^$9!#%j%/%(%9%HA4BN$r<u?.$7=*$o$k$H!"(B - $B$=$N8e%5!<%P%W%m%;%9$K$=$l$rAw$j$^$9!#>\:Y$K$D$$$F$O(B <a + <p><code>httpready</code> Accept Filter は HTTP リクエスト全体を、 + カーネルレベルでバッファリングします。リクエスト全体を受信し終わると、 + その後サーバプロセスにそれを送ります。詳細については <a href="http://www.freebsd.org/cgi/man.cgi?query=accf_http&sektion=9">accf_http(9)</a> - $B$r;2>H$7$F$/$@$5$$!#(BHTTPS $B$N%j%/%(%9%H$O0E9f2=$5$l$F$$$k$N$G(B <a + を参照してください。HTTPS のリクエストは暗号化されているので <a href="http://www.freebsd.org/cgi/man.cgi?query=accf_data&sektion=9">accf_data(9)</a> - $B%U%#%k%?$N$_$,;HMQ$5$l$^$9!#(B</p> + フィルタのみが使用されます。</p> - <p>Linux $B$G$N%G%U%)%k%HCM$O(B :</p> + <p>Linux でのデフォルト値は :</p> <example> AcceptFilter http data <br/> AcceptFilter https data </example> - <p>Linux $B$N(B <code>TCP_DEFER_ACCEPT</code> $B$O(B HTTP $B%j%/%(%9%H$N%P%C%U%!%j%s%0$r(B - $B%5%]!<%H$7$F$$$^$;$s!#(B<code>none</code> $B0J30$NCM$G(B - <code>TCP_DEFER_ACCEPT</code> $B$,M-8z$K$J$j$^$9!#>\:Y$K$D$$$F$O(B Linux - man $B%Z!<%8(B <a + <p>Linux の <code>TCP_DEFER_ACCEPT</code> は HTTP リクエストのバッファリングを + サポートしていません。<code>none</code> 以外の値で + <code>TCP_DEFER_ACCEPT</code> が有効になります。詳細については Linux + man ページ <a href="http://homepages.cwi.nl/~aeb/linux/man2html/man7/tcp.7.html">tcp(7)</a> - $B$r;2>H$7$F$/$@$5$$!#(B</p> + を参照してください。</p> - <p>$B0z?t$K(B <code>none</code> $B$r;XDj$9$k$H!"%W%m%H%3%k$KBP$9$kA4$F$N(B Accept - Filter $B$,L58z$K$J$j$^$9!#(B<code>nntp</code> $B$H$$$C$?!"@h$K%5!<%P$K%G!<%?$r(B - $BAw$kI,MW$N$"$k%W%m%H%3%k$KM-8z$G$9(B :</p> + <p>引数に <code>none</code> を指定すると、プロトコルに対する全ての Accept + Filter が無効になります。<code>nntp</code> といった、先にサーバにデータを + 送る必要のあるプロトコルに有効です :</p> <example>AcceptFilter nttp none</example> </usage> @@ -79,54 +79,54 @@ <directivesynopsis> <name>AcceptPathInfo</name> -<description>$B8e$KB3$/%Q%9L>>pJs$r<u$1IU$1$k%j%=!<%9$N;XDj(B</description> +<description>後に続くパス名情報を受け付けるリソースの指定</description> <syntax>AcceptPathInfo On|Off|Default</syntax> <default>AcceptPathInfo Default</default> <contextlist><context>server config</context> <context>virtual host</context><context>directory</context> <context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>Apache 2.0.30 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>Apache 2.0.30 以降で使用可能</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O<B:]$N%U%!%$%kL>(B ($B$b$7$/$OB8:_$9$k%G%#%l%/%H%j$N(B - $BB8:_$7$J$$%U%!%$%k(B) $B$N8e$KB3$/%Q%9L>>pJs$,$"$k%j%/%(%9%H$r<u$1IU$1$k$+(B - $B5qH]$9$k$+$r@)8f$7$^$9!#B3$-$N%Q%9L>>pJs$O%9%/%j%W%H$K$O(B <code>PATH_INFO</code> - $B4D6-JQ?t$H$7$FMxMQ2DG=$K$J$j$^$9!#(B</p> + <p>このディレクティブは実際のファイル名 (もしくは存在するディレクトリの + 存在しないファイル) の後に続くパス名情報があるリクエストを受け付けるか + 拒否するかを制御します。続きのパス名情報はスクリプトには <code>PATH_INFO</code> + 環境変数として利用可能になります。</p> - <p>$BNc$($P!"(B<code>/test/</code> $B$,!"(B<code>here.html</code> $B$H$$$&%U%!%$%k(B - $B0l$D$N$_$,$"$k%G%#%l%/%H%j$r;X$7$F$$$k$H$7$^$9!#$=$&$9$k$H!"(B - <code>/test/here.html/more</code> $B$H(B <code>/test/nothere.html/more</code> - $B$X$N%j%/%(%9%H$ON>J}$H$b(B <code>/more</code> $B$r(B <code>PATH_INFO</code> $B$H$7$^$9!#(B</p> + <p>例えば、<code>/test/</code> が、<code>here.html</code> というファイル + 一つのみがあるディレクトリを指しているとします。そうすると、 + <code>/test/here.html/more</code> と <code>/test/nothere.html/more</code> + へのリクエストは両方とも <code>/more</code> を <code>PATH_INFO</code> とします。</p> - <p><directive>AcceptPathInfo</directive> $B%G%#%l%/%F%#%V$K;XDj2DG=$J(B - $B;0$D$N0z?t$O(B:</p> + <p><directive>AcceptPathInfo</directive> ディレクティブに指定可能な + 三つの引数は:</p> <dl> - <dt><code>Off</code></dt><dd>$B%j%/%(%9%H$OB8:_$9$k%Q%9$K$=$N$^$^(B - $B%^%C%W$5$l$k>l9g$K$N$_<u$1IU$1$i$l$^$9!#$G$9$+$i!">e$NNc$N(B - <code>/test/here.html/more</code> $B$N$h$&$K!"K\Ev$N%U%!%$%kL>$N(B - $B8e$K%Q%9L>>pJs$,B3$/%j%/%(%9%H$K$O(B 404 NOT FOUND $B%(%i!<$,JV$j$^$9!#(B</dd> - - <dt><code>On</code></dt><dd>$BA0$NJ}$N%Q%9$,B8:_$9$k%U%!%$%k$K%^%C%W$9$k>l9g$O(B - $B%j%/%(%9%H$,<u$1IU$1$i$l$^$9!#>e$NNc$N(B <code>/test/here.html/more</code> - $B$O(B <code>/test/here.html</code> $B$,M-8z$J%U%!%$%k$K%^%C%W$9$l$P(B - $B<u$1IU$1$i$l$^$9!#(B</dd> + <dt><code>Off</code></dt><dd>リクエストは存在するパスにそのまま + マップされる場合にのみ受け付けられます。ですから、上の例の + <code>/test/here.html/more</code> のように、本当のファイル名の + 後にパス名情報が続くリクエストには 404 NOT FOUND エラーが返ります。</dd> + + <dt><code>On</code></dt><dd>前の方のパスが存在するファイルにマップする場合は + リクエストが受け付けられます。上の例の <code>/test/here.html/more</code> + は <code>/test/here.html</code> が有効なファイルにマップすれば + 受け付けられます。</dd> - <dt><code>Default</code></dt><dd>$BB3$-$N%Q%9L>>pJs$N07$$$O%j%/%(%9%H$N(B - <a href="../handler.html">$B%O%s%I%i(B</a>$B$G7h$^$j$^$9!#(B - $BIaDL$N%U%!%$%k$N$?$a$N%3%"%O%s%I%i$N%G%U%)%k%H$O(B <code>PATH_INFO</code> $B$r5qH]$7$^$9!#(B - <a href="mod_cgi.html">cgi-script</a> $B$d(B <a - href="mod_isapi.html">isapi-handler</a> $B$N$h$&$K%9%/%j%W%H$r07$&%O%s%I%i$O(B - $B0lHLE*$K%G%U%)%k%H$G(B <code>PATH_INFO</code> $B$r<u$1IU$1$^$9!#(B</dd> + <dt><code>Default</code></dt><dd>続きのパス名情報の扱いはリクエストの + <a href="../handler.html">ハンドラ</a>で決まります。 + 普通のファイルのためのコアハンドラのデフォルトは <code>PATH_INFO</code> を拒否します。 + <a href="mod_cgi.html">cgi-script</a> や <a + href="mod_isapi.html">isapi-handler</a> のようにスクリプトを扱うハンドラは + 一般的にデフォルトで <code>PATH_INFO</code> を受け付けます。</dd> </dl> - <p><code>AcceptPathInfo</code> $B$N<g$JL\E*$O%O%s%I%i$N(B <code>PATH_INFO</code> $B$r(B - $B<u$1IU$1$k$+5qH]$9$k$+$NA*Br$r>e=q$-$G$-$k$h$&$K$9$k$3$H$G$9!#(B - $BNc$($P!"$3$l$ONc$($P(B <a href="mod_include.html">INCLUDES</a> $B$N$h$&$J(B - <a href="../filter.html">$B%U%#%k%?(B</a>$B$r;H$C$F(B <code>PATH_INFO</code> $B$K(B - $B4p$E$$$F%3%s%F%s%D$r@8@.$7$F$$$k$H$-$KI,MW$K$J$j$^$9!#(B</p> + <p><code>AcceptPathInfo</code> の主な目的はハンドラの <code>PATH_INFO</code> を + 受け付けるか拒否するかの選択を上書きできるようにすることです。 + 例えば、これは例えば <a href="mod_include.html">INCLUDES</a> のような + <a href="../filter.html">フィルタ</a>を使って <code>PATH_INFO</code> に + 基づいてコンテンツを生成しているときに必要になります。</p> <example> <Files "mypaths.shtml"><br /> @@ -142,28 +142,28 @@ <directivesynopsis> <name>AccessFileName</name> -<description>$BJ,;6@_Dj%U%!%$%k$NL>A0(B</description> +<description>分散設定ファイルの名前</description> <syntax>AccessFileName <var>filename</var> [<var>filename</var>] ...</syntax> <default>AccessFileName .htaccess</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$B%j%/%(%9%H$r=hM}$9$k$H$-!"%5!<%P$O%G%#%l%/%H%j$K(B - $BBP$7$FJ,;6@_Dj%U%!%$%k$,(B<a href="#allowoverride">$BM-8z$K$J$C$F$$$l$P(B</a>$B!"(B - $B$=$N%I%-%e%a%s%H$X$N(B - $B%Q%9>e$K$"$kA4$F$N%G%#%l%/%H%j$+$i!"$3$3$G;XDj$5$l$?L>A0$N0lMw$NCf$G(B - $B:G=i$K8+$D$+$C$?%U%!%$%k$r$=$l$>$l@_Dj%U%!%$%k$H$7$FFI$_9~$_$^$9!#Nc$($P(B:</p> + <p>リクエストを処理するとき、サーバはディレクトリに + 対して分散設定ファイルが<a href="#allowoverride">有効になっていれば</a>、 + そのドキュメントへの + パス上にある全てのディレクトリから、ここで指定された名前の一覧の中で + 最初に見つかったファイルをそれぞれ設定ファイルとして読み込みます。例えば:</p> <example> AccessFileName .acl </example> - <p>$B$H$$$&@_Dj$,$"$k$H!"0J2<$N$h$&$K$7$FL58z$K$5$l$F$$$J$$8B$j!"(B - $B%I%-%e%a%s%H(B <code>/usr/local/web/index.html</code> - $B$rJV$9A0$K!"%5!<%P$O(B <code>/.acl</code>, <code>/usr/.acl</code>, - <code>/usr/local/.acl</code>, <code>/usr/local/web/.acl</code> $B$+$i(B - $B%G%#%l%/%F%#%V$rFI$_9~$_$^$9!#(B</p> + <p>という設定があると、以下のようにして無効にされていない限り、 + ドキュメント <code>/usr/local/web/index.html</code> + を返す前に、サーバは <code>/.acl</code>, <code>/usr/.acl</code>, + <code>/usr/local/.acl</code>, <code>/usr/local/web/.acl</code> から + ディレクティブを読み込みます。</p> <example> <Directory /><br /> @@ -174,14 +174,14 @@ </example> </usage> <seealso><directive module="core">AllowOverride</directive></seealso> -<seealso><a href="../configuring.html">$B@_Dj%U%!%$%k(B</a></seealso> -<seealso><a href="../howto/htaccess.html">.htaccess $B%U%!%$%k(B</a></seealso> +<seealso><a href="../configuring.html">設定ファイル</a></seealso> +<seealso><a href="../howto/htaccess.html">.htaccess ファイル</a></seealso> </directivesynopsis> <directivesynopsis> <name>AddDefaultCharset</name> -<description>$B%l%9%]%s%9$N%3%s%F%s%H%?%$%W$,(B <code>text/plain</code> $B$"$k$$$O(B -<code>text/html</code> $B$N>l9g$KDI2C$9$k%G%U%)%k%H$N(B charset $B%Q%i%a!<%?(B</description> +<description>レスポンスのコンテントタイプが <code>text/plain</code> あるいは +<code>text/html</code> の場合に追加するデフォルトの charset パラメータ</description> <syntax>AddDefaultCharset On|Off|<var>charset</var></syntax> <default>AddDefaultCharset Off</default> <contextlist><context>server config</context> @@ -190,70 +190,70 @@ <override>FileInfo</override> <usage> - <p>$B%l%9%]%s%9$N%3%s%F%s%H%?%$%W$,(B <code>text/plain</code> - $B$"$k$$$O(B <code>text/html</code> - $B$N>l9g$K8B$j$^$9$,!"%l%9%]%s%9$KDI2C$9$k%a%G%#%"%?%$%W$NJ8;z%;%C%H%Q%i%a!<%?(B - ($BJ8;z%(%s%3!<%G%#%s%0$NL>A0(B) $B$N%G%U%)%k%HCM$r!"$3$N%G%#%l%/%F%#%V$G;XDj$7$^$9!#(B - $B$3$l$O%l%9%]%s%9(B <transnote>$B%l%9%]%s%9$N(B HTML</transnote> $BFb$G(B <code>META</code> - $BMWAG$G;XDj$5$l$?!"$I$N$h$&$JJ8;z%;%C%H$bL58z$K$7$^$9$,!"(B - $B:G=*E*$J5sF0$O%f!<%6$N%/%i%$%"%s%HB&$N@_Dj$G7h$^$j$^$9!#(B - $B$3$N5!G=$O(B <code>AddDefaultCharset Off</code> $B$H$$$&@_Dj$GL58z$K$J$j$^$9!#(B - <code>AddDefaultCharset On</code> $B$K$9$l$P!"(B - Apache $BFbIt$N%G%U%)%k%HJ8;z%;%C%H(B <code>iso-8859-1</code> $B$K@_Dj$5$l$^$9!#(B - $B$=$NB>(B <var>charset</var> $B$K;XDj$G$-$kCM$G$"$l$P!"$I$s$JCM$G$b;H$($^$9!#(B - $B;XDj$9$kCM$O!"(BMIME $B%a%G%#%"%?%$%W$H$7$F;H$o$l$k(B + <p>レスポンスのコンテントタイプが <code>text/plain</code> + あるいは <code>text/html</code> + の場合に限りますが、レスポンスに追加するメディアタイプの文字セットパラメータ + (文字エンコーディングの名前) のデフォルト値を、このディレクティブで指定します。 + これはレスポンス <transnote>レスポンスの HTML</transnote> 内で <code>META</code> + 要素で指定された、どのような文字セットも無効にしますが、 + 最終的な挙動はユーザのクライアント側の設定で決まります。 + この機能は <code>AddDefaultCharset Off</code> という設定で無効になります。 + <code>AddDefaultCharset On</code> にすれば、 + Apache 内部のデフォルト文字セット <code>iso-8859-1</code> に設定されます。 + その他 <var>charset</var> に指定できる値であれば、どんな値でも使えます。 + 指定する値は、MIME メディアタイプとして使われる <a href="http://www.iana.org/assignments/character-sets">IANA - $B$KEPO?$5$l$F$$$kJ8;z%;%C%HL>(B</a>$B$N$&$A$N0l$D$K$9$Y$-$G$9!#(B - $BNc$($P(B:</p> + に登録されている文字セット名</a>のうちの一つにすべきです。 + 例えば:</p> <example> AddDefaultCharset utf-8 </example> - <p><directive>AddDefaultCharset</directive> $B$r;H$&$H$-$O!"A4$F$N%F%-%9%H%j%=!<%9$,(B - $B;XDj$9$kJ8;z%(%s%3!<%I$K$J$C$F$$$k$HJ,$+$C$F$$$F!"$+$D!"(B - $B%j%=!<%9$N8D!9$KJ8;z%;%C%H$r;XDj$9$k$N$,BgJQ$J>l9g$N$_$G$9!#(B - $BNc$r5s$2$k$H!"%l%,%7!<$J(B CGI $B%9%/%j%W%H$J$I$N!"F0E*$K@8@.$5$l$k(B - $B%3%s%F%s%D$r4^$`%j%=!<%9$KJ8;z%;%C%H%Q%i%a!<%?$rDI2C$9$k>l9g$G!"(B - $B%f!<%6$NF~NO%G!<%?$,=PNO$KF~$j!"%/%m%9%5%$%H%9%/%j%W%F%#%s%0$,(B - $B0z$-5/$3$5$l$&$k>l9g$G$9!#%G%U%)%k%HJ8;z%;%C%H$r%;%C%H$7$?$H$7$F$b!"(B - $B%V%i%&%6$N(B "$BJ8;z%(%s%3!<%I$N<+F0A*Br(B" $B5!G=$,M-8z$K$J$C$F$$$k%f!<%6$r(B - $B<i$k$3$H$K$O$J$i$J$$$N$G!"$b$A$m$s$h$jNI$$2r7h:v$OC1$K%9%/%j%W%H$r=$@5(B - ($B$"$k$$$O:o=|(B) $B$9$k$3$H$G$9!#(B</p> + <p><directive>AddDefaultCharset</directive> を使うときは、全てのテキストリソースが + 指定する文字エンコードになっていると分かっていて、かつ、 + リソースの個々に文字セットを指定するのが大変な場合のみです。 + 例を挙げると、レガシーな CGI スクリプトなどの、動的に生成される + コンテンツを含むリソースに文字セットパラメータを追加する場合で、 + ユーザの入力データが出力に入り、クロスサイトスクリプティングが + 引き起こされうる場合です。デフォルト文字セットをセットしたとしても、 + ブラウザの "文字エンコードの自動選択" 機能が有効になっているユーザを + 守ることにはならないので、もちろんより良い解決策は単にスクリプトを修正 + (あるいは削除) することです。</p> </usage> <seealso><directive module="mod_mime">AddCharset</directive></seealso> </directivesynopsis> <directivesynopsis> <name>AddOutputFilterByType</name> -<description>MIME-type $B$K=PNO%U%#%k%?$r3d$jEv$F$k(B</description> +<description>MIME-type に出力フィルタを割り当てる</description> <syntax>AddOutputFilterByType <var>filter</var>[;<var>filter</var>...] <var>MIME-type</var> [<var>MIME-type</var>] ...</syntax> <contextlist><context>server config</context> <context>virtual host</context><context>directory</context> <context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>Apache 2.0.33 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>Apache 2.0.33 以降で使用可能</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O1~Ez$N(B MIME-type $B$K1~$8$F=PNO(B<a - href="../filter.html">$B%U%#%k%?(B</a>$B$r;HMQ$9$k$h$&$K$7$^$9!#(B</p> + <p>このディレクティブは応答の MIME-type に応じて出力<a + href="../filter.html">フィルタ</a>を使用するようにします。</p> - <p>$B<!$NNc$O(B <module>mod_deflate</module> $B$N(B <code>DEFLATE</code> $B%U%#%k%?$r(B - $B;H$C$F$$$^$9!#(B<code>text/html</code> $B$H(B <code>text/plain</code> $B$N(B - $B$9$Y$F$N=PNO(B ($B@EE*$J$b$N$bF0E*$J$b$N$b(B) $B$r%/%i%$%"%s%H$KAw$i$l$kA0$K(B - $B05=L$7$^$9!#(B</p> + <p>次の例は <module>mod_deflate</module> の <code>DEFLATE</code> フィルタを + 使っています。<code>text/html</code> と <code>text/plain</code> の + すべての出力 (静的なものも動的なものも) をクライアントに送られる前に + 圧縮します。</p> <example> AddOutputFilterByType DEFLATE text/html text/plain </example> - <p>$BJ#?t$N%U%#%k%?$G%3%s%F%s%D$r=hM}$5$;$?$$$H$-$O!"$=$l$>$l$NL>A0$r%;%_%3%m%s$G(B - $BJ,$1$kI,MW$,$"$j$^$9!#3F%U%#%k%?$KBP$7$F(B - <directive>AddOutputFilterByType</directive> $B$r0l$D$:$D=q$/$3$H$b$G$-$^$9!#(B</p> + <p>複数のフィルタでコンテンツを処理させたいときは、それぞれの名前をセミコロンで + 分ける必要があります。各フィルタに対して + <directive>AddOutputFilterByType</directive> を一つずつ書くこともできます。</p> - <p>$B<!$NNc$O(B <code>text/html</code> $B$N%9%/%j%W%H$N$9$Y$F$N=PNO$r(B - $B$^$:(B <code>INCLUDES</code> $B%U%#%k%?$G=hM}$7!"$5$i$K(B <code>DEFLATE</code> $B%U%#%k%?$K$+$1$^$9!#(B</p> + <p>次の例は <code>text/html</code> のスクリプトのすべての出力を + まず <code>INCLUDES</code> フィルタで処理し、さらに <code>DEFLATE</code> フィルタにかけます。</p> <example> <Location /cgi-bin/><br /> @@ -264,56 +264,56 @@ </Location> </example> - <note type="warning"><title>$BCm(B:</title> - <p><directive>AddOutputFilterByType</directive> $B%G%#%l%/%F%#%V$K$h$j(B - $BM-8z$K$7$?%U%#%k%?$O>l9g$K$h$C$F$O!"ItJ,E*$b$7$/$O40A4$KE,MQ$5$l$J$$$3$H$,(B - $B$"$j$^$9!#Nc$($P!"(BMIME $B%?%$%W$,$,7hDj$G$-$J$$$H$-$K$O(B - <directive module="core">DefaultType</directive> $B$N@_Dj$,F1$8$@$C$?$H$7$F$b!"(B - <directive module="core">DefaultType</directive> $B@_Dj$r;H$&$h$&$K$J$j$^$9!#(B</p> - <p>$B$7$+$7!"3N<B$K%U%#%k%?$,E,MQ$5$l$k$h$&$K$7$?$$$H$-$O!"%j%=!<%9$K(B - $BL@<(E*$K%3%s%F%s%H%?%$%W$r3d$jEv$F$k$3$H$,$G$-$^$9!#$3$l$K$ONc$($P(B - <directive module="mod_mime">AddType</directive> $B%G%#%l%/%F%#%V$d(B - <directive module="core">ForceType</directive> $B%G%#%l%/%F%#%V$r;H$$$^$9!#(B - (nph$B$G$J$$(B) CGI $B%9%/%j%W%H$G%3%s%F%s%H%?%$%W$r@_Dj$9$k$H$$$&$b$N$G$b(B - $BBg>fIW$G$9!#(B</p> - - <p>$B%?%$%WKh$N=PNO%U%#%k%?$O%W%m%-%7%j%/%(%9%H$K$O7h$7$FE,MQ$5$l$^$;$s!#(B</p> + <note type="warning"><title>注:</title> + <p><directive>AddOutputFilterByType</directive> ディレクティブにより + 有効にしたフィルタは場合によっては、部分的もしくは完全に適用されないことが + あります。例えば、MIME タイプがが決定できないときには + <directive module="core">DefaultType</directive> の設定が同じだったとしても、 + <directive module="core">DefaultType</directive> 設定を使うようになります。</p> + <p>しかし、確実にフィルタが適用されるようにしたいときは、リソースに + 明示的にコンテントタイプを割り当てることができます。これには例えば + <directive module="mod_mime">AddType</directive> ディレクティブや + <directive module="core">ForceType</directive> ディレクティブを使います。 + (nphでない) CGI スクリプトでコンテントタイプを設定するというものでも + 大丈夫です。</p> + + <p>タイプ毎の出力フィルタはプロキシリクエストには決して適用されません。</p> </note> </usage> <seealso><directive module="mod_mime">AddOutputFilter</directive></seealso> <seealso><directive module="core">SetOutputFilter</directive></seealso> -<seealso><a href="../filter.html">$B%U%#%k%?(B</a></seealso> +<seealso><a href="../filter.html">フィルタ</a></seealso> </directivesynopsis> <directivesynopsis> <name>AllowEncodedSlashes</name> -<description>URL $BCf$NId9f2=$5$l$?%Q%9J,N%J8;z$,@h$KEA$($i$l$k$N$r5v2D$9$k$+$I$&$+$r(B -$B7hDj$9$k(B</description> +<description>URL 中の符号化されたパス分離文字が先に伝えられるのを許可するかどうかを +決定する</description> <syntax>AllowEncodedSlashes On|Off</syntax> <default>AllowEncodedSlashes Off</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>Apache 2.0.46 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>Apache 2.0.46 以降で使用可能</compatibility> <usage> - <p><directive>AllowEncodedSlashes</directive> $B%G%#%l%/%F%#%V$OId9f2=$5$l$?(B - $B%Q%9J,N%J8;z(B (<code>/</code> $B$O(B <code>%2F</code>$B!"$5$i$K%7%9%F%`$K$h$C$F$O(B - <code>\</code> $B$KBP1~$9$k(B <code>%5C</code>) $B$,B8:_$9$k(B URL $B$N;HMQ$r(B - $B5v2D$9$k$+$I$&$+$r7hDj$7$^$9!#DL>o$O$=$N$h$&$J(B URL $B$O(B 404 (Not found) $B%(%i!<(B - $B$G5qH]$5$l$^$9!#(B</p> - - <p><directive>AllowEncodedSlashes</directive> <code>On</code> $B$K$h$k(B - $B%Q%9J,N%J8;z$N;HMQ$O!"(B<code>PATH_INFO</code> $B$H9g$o$;$F(B - $B;H$&$H$-$K0lHVLr$KN)$A$^$9!#(B</p> + <p><directive>AllowEncodedSlashes</directive> ディレクティブは符号化された + パス分離文字 (<code>/</code> は <code>%2F</code>、さらにシステムによっては + <code>\</code> に対応する <code>%5C</code>) が存在する URL の使用を + 許可するかどうかを決定します。通常はそのような URL は 404 (Not found) エラー + で拒否されます。</p> + + <p><directive>AllowEncodedSlashes</directive> <code>On</code> による + パス分離文字の使用は、<code>PATH_INFO</code> と合わせて + 使うときに一番役に立ちます。</p> <p>Turning <directive>AllowEncodedSlashes</directive> <code>On</code> is mostly useful when used in conjunction with <code>PATH_INFO</code>.</p> - <note><title>$BCm(B</title> - <p>$BId9f2=$5$l$?%9%i%C%7%e$r5v2D$9$k$3$H$O!"(B<em>$BI|9f(B</em>$B$r$9$k$3$H$r(B - $B0UL#(B<em>$B$7$^$;$s(B</em>$B!#(B<code>%2F</code> $B$d(B ($B4X78$9$k%7%9%F%`$G$N(B) - <code>%5C</code> $B$O!"B>$NItJ,$,I|9f$5$l$?(B URL $B$NCf$G$b$=$N$^$^$N7A<0$G(B - $B;D$5$l$^$9!#(B</p> + <note><title>注</title> + <p>符号化されたスラッシュを許可することは、<em>復号</em>をすることを + 意味<em>しません</em>。<code>%2F</code> や (関係するシステムでの) + <code>%5C</code> は、他の部分が復号された URL の中でもそのままの形式で + 残されます。</p> </note> </usage> <seealso><directive module="core">AcceptPathInfo</directive></seealso> @@ -322,60 +322,60 @@ <directivesynopsis> <name>AllowOverride</name> -<description><code>.htaccess</code> $B$G5v2D$5$l$k%G%#%l%/%F%#%V$N<oN`(B</description> +<description><code>.htaccess</code> で許可されるディレクティブの種類</description> <syntax>AllowOverride All|None|<var>directive-type</var> [<var>directive-type</var>] ...</syntax> <default>AllowOverride All</default> <contextlist><context>directory</context></contextlist> <usage> - <p>$B%5!<%P$,(B (<directive - module="core">AccessFileName</directive> $B$K$h$C$F;XDj$5$l$?(B) - .htaccess $B%U%!%$%k$r8+$D$1$?;~!"$=$N%U%!%$%k$NCf$G(B - $B@k8@$5$l$?$I$N%G%#%l%/%F%#%V$,$h$jA0$KDj5A$5$l$?@_Dj%G%#%l%/%F%#%V$r(B - $B>e=q$-$G$-$k$+$rCN$kI,MW$,$"$j$^$9!#(B</p> - - <note><title><Directory> $B%;%/%7%g%s$G$N$_;HMQ2DG=(B</title> - <directive>AllowOverride</directive> $B$O@55,I=8=L5$7$N(B<directive + <p>サーバが (<directive + module="core">AccessFileName</directive> によって指定された) + .htaccess ファイルを見つけた時、そのファイルの中で + 宣言されたどのディレクティブがより前に定義された設定ディレクティブを + 上書きできるかを知る必要があります。</p> + + <note><title><Directory> セクションでのみ使用可能</title> + <directive>AllowOverride</directive> は正規表現無しの<directive type="section" module="core">Directory</directive> - $B%;%/%7%g%s$G$N$_M-8z$G!"(B<directive type="section" - module="core">Location</directive> $B$d(B <directive + セクションでのみ有効で、<directive type="section" + module="core">Location</directive> や <directive module="core" type="section">DirectoryMatch</directive> - $B$d(B <directive type="section" - module="core">Files</directive> $B%;%/%7%g%s$G$OL58z$G$9!#(B + や <directive type="section" + module="core">Files</directive> セクションでは無効です。 </note> - <p>$B$3$N%G%#%l%/%F%#%V$r(B None $B$K@_Dj$9$k$H!"(B<a href="#accessfilename">.htaccess</a> $B%U%!%$%k$O40A4$K(B - $BL5;k$5$l$^$9!#(B - $B$3$N>l9g!"%5!<%P$O%U%!%$%k%7%9%F%`$N(B <code>.htaccess</code> $B%U%!%$%k$rFI$`$3$H$r(B - $B;n$_$5$($7$^$;$s!#(B</p> + <p>このディレクティブを None に設定すると、<a href="#accessfilename">.htaccess</a> ファイルは完全に + 無視されます。 + この場合、サーバはファイルシステムの <code>.htaccess</code> ファイルを読むことを + 試みさえしません。</p> - <p>$B$3$N%G%#%l%/%F%#%V$,(B <code>All</code> $B$K@_Dj$5$l$F$$$k;~$K$O!"(B - <code>.htaccess</code> $B$H$$$&(B <a - href="directive-dict.html#Context">$B%3%s%F%-%9%H(B</a> $B$r;}$D(B - $BA4$F$N%G%#%l%/%F%#%V$,MxMQ$G$-$^$9!#(B</p> + <p>このディレクティブが <code>All</code> に設定されている時には、 + <code>.htaccess</code> という <a + href="directive-dict.html#Context">コンテキスト</a> を持つ + 全てのディレクティブが利用できます。</p> - <p><var>directive-type</var> $B$K$O!"0J2<$N%G%#%l%/%F%#%V72$N(B - $B%-!<%o!<%I$N$I$l$+$r;XDj$7$^$9!#(B</p> + <p><var>directive-type</var> には、以下のディレクティブ群の + キーワードのどれかを指定します。</p> <dl> <dt>AuthConfig</dt> <dd> - $BG'>Z$K4X$9$k%G%#%l%/%F%#%V$N;HMQ$r5v2D$9$k(B (<directive + 認証に関するディレクティブの使用を許可する (<directive module="mod_authn_dbm">AuthDBMGroupFile</directive>, <directive module="mod_authn_dbm">AuthDBMUserFile</directive>, <directive module="mod_authz_groupfile">AuthGroupFile</directive>, <directive module="core">AuthName</directive>, <directive module="core">AuthType</directive>, <directive module="mod_authn_file">AuthUserFile</directive>, <directive - module="core">Require</directive> <em>$B$J$I(B</em>)$B!#(B</dd> + module="core">Require</directive> <em>など</em>)。</dd> <dt>FileInfo</dt> <dd> - $B%I%-%e%a%s%H%?%$%W$r@)8f$9$k$?$a$N%G%#%l%/%F%#%V$N;HMQ$r5v2D$9$k(B (<directive + ドキュメントタイプを制御するためのディレクティブの使用を許可する (<directive module="core">DefaultType</directive>, <directive module="core">ErrorDocument</directive>, <directive module="core">ForceType</directive>, <directive @@ -383,13 +383,13 @@ <directive module="core">SetHandler</directive>, <directive module="core">SetInputFilter</directive>, <directive module="core">SetOutputFilter</directive>, - <module>mod_mime</module> $B$N(B Add* $B$H(B Remove* - $B%G%#%l%/%F%#%V(B<em>$B$J$I(B</em>)$B!#(B</dd> + <module>mod_mime</module> の Add* と Remove* + ディレクティブ<em>など</em>)。</dd> <dt>Indexes</dt> <dd> - $B%G%#%l%/%H%j%$%s%G%C%/%9$r@)8f$9$k$?$a$N%G%#%l%/%F%#%V$N;HMQ$r5v2D$9$k(B + ディレクトリインデックスを制御するためのディレクティブの使用を許可する (<directive module="mod_autoindex">AddDescription</directive>, <directive module="mod_autoindex">AddIcon</directive>, <directive @@ -402,12 +402,12 @@ module="mod_autoindex">IndexIgnore</directive>, <directive module="mod_autoindex">IndexOptions</directive>, <directive module="mod_autoindex">ReadmeName</directive> - <em>$B$J$I(B</em>)$B!#(B</dd> + <em>など</em>)。</dd> <dt>Limit</dt> <dd> - $B%[%9%H$X$N%"%/%;%9@)8f$r9T$&$?$a$N%G%#%l%/%F%#%V$N;HMQ$r5v2D$9$k(B (<directive + ホストへのアクセス制御を行うためのディレクティブの使用を許可する (<directive module="mod_authz_host">Allow</directive>, <directive module="mod_authz_host">Deny</directive>, <directive module="mod_authz_host">Order</directive>).</dd> @@ -415,110 +415,110 @@ <dt>Options[=<var>Option</var>,...]</dt> <dd> - $BFCDj$N%G%#%l%/%H%j$K$*$1$k5!G=$r;XDj$9$k$?$a$N%G%#%l%/%F%#%V$N;HMQ$r5v2D$9$k(B - (<directive module="core">Options</directive> $B$H(B - <directive module="mod_include">XBitHack</directive>)$B!#(B - <directive module="core">Options</directive> $B$G@_Dj$9$k%*%W%7%g%s(B - $B$r!"(B($B6uGr$r4^$a$J$$(B) $B%3%s%^6h@Z$j$N%j%9%H$K$7$FEy9f$N8e$KB3$1$k$3$H$G(B - $B@_Dj$G$-$^$9!#(B</dd> + 特定のディレクトリにおける機能を指定するためのディレクティブの使用を許可する + (<directive module="core">Options</directive> と + <directive module="mod_include">XBitHack</directive>)。 + <directive module="core">Options</directive> で設定するオプション + を、(空白を含めない) コンマ区切りのリストにして等号の後に続けることで + 設定できます。</dd> </dl> - <p>$BNc(B:</p> + <p>例:</p> <example> AllowOverride AuthConfig Indexes </example> - <p>$B>e$NNc$G$O(B <code>AuthConfig</code> $B$H(B <code>Indexes</code> $B$N$I$A$i$K$b(B - $BB0$5$J$$%G%#%l%/%F%#%V$O$9$Y$FFbIt%5!<%P%(%i!<$r0z$-5/$3$7$^$9!#(B</p> + <p>上の例では <code>AuthConfig</code> と <code>Indexes</code> のどちらにも + 属さないディレクティブはすべて内部サーバエラーを引き起こします。</p> </usage> <seealso><directive module="core">AccessFileName</directive></seealso> -<seealso><a href="../configuring.html">$B@_Dj%U%!%$%k(B</a></seealso> -<seealso><a href="../howto/htaccess.html">.htaccess $B%U%!%$%k(B</a></seealso> +<seealso><a href="../configuring.html">設定ファイル</a></seealso> +<seealso><a href="../howto/htaccess.html">.htaccess ファイル</a></seealso> </directivesynopsis> <directivesynopsis> <name>AuthName</name> -<description>HTTP $BG'>Z$NG'2DNN0h(B ($BLuCm(B: realm)</description> +<description>HTTP 認証の認可領域 (訳注: realm)</description> <syntax>AuthName <var>auth-domain</var></syntax> <contextlist><context>directory</context><context>.htaccess</context> </contextlist> <override>AuthConfig</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%G%#%l%/%H%j$KBP$9$kG'2DNN0h(B ($BLuCm(B: realm) - $B$NL>A0$r;XDj$7$^$9!#(B - $BG'2DNN0h$O!"MxMQ<T$,$I$N%f!<%6L>$H%Q%9%o!<%I$rAw?.$9$l$P$h$$$N$+$r(B - $B%/%i%$%"%s%H$K65$($k$?$a$KMxMQ$7$^$9!#(B - <directive>AuthName</directive> $B$O0l$D$N0z?t$r$H$j!"(B - $B%9%Z!<%9$,4^$^$l$k>l9g$K$O!"(B - $B0zMQId$G3g$i$J$1$l$P$J$j$^$;$s!#(B - $B$3$N%G%#%l%/%F%#%V$O(B - <directive module="core">AuthType</directive> $B%G%#%l%/%F%#%V$d(B - <directive module="core">Require</directive> $B%G%#%l%/%F%#%V$H!"(B - <directive module="mod_authn_file">AuthUserFile</directive> $B$d(B - <directive module="mod_authz_groupfile">AuthGroupFile</directive> $B$J$I$N%G%#%l%/%F%#%V$H(B - $B0l=o$KMxMQ$9$kI,MW$,$"$j$^$9!#(B</p> - - <p>$BNc$($P(B:</p> + <p>このディレクティブはディレクトリに対する認可領域 (訳注: realm) + の名前を指定します。 + 認可領域は、利用者がどのユーザ名とパスワードを送信すればよいのかを + クライアントに教えるために利用します。 + <directive>AuthName</directive> は一つの引数をとり、 + スペースが含まれる場合には、 + 引用符で括らなければなりません。 + このディレクティブは + <directive module="core">AuthType</directive> ディレクティブや + <directive module="core">Require</directive> ディレクティブと、 + <directive module="mod_authn_file">AuthUserFile</directive> や + <directive module="mod_authz_groupfile">AuthGroupFile</directive> などのディレクティブと + 一緒に利用する必要があります。</p> + + <p>例えば:</p> <example> AuthName "Top Secret" </example> - <p>$B$3$3$G(B <code>AuthName</code> $B$K;XDj$7$?J8;zNs$,!"(B - $BBgItJ,$N%V%i%&%6$N%Q%9%o!<%I%@%$%"%m%0$KI=<($5$l$^$9!#(B</p> + <p>ここで <code>AuthName</code> に指定した文字列が、 + 大部分のブラウザのパスワードダイアログに表示されます。</p> </usage> <seealso><a - href="../howto/auth.html">$BG'>Z!">5G'!"%"%/%;%9@)8f(B</a></seealso> + href="../howto/auth.html">認証、承認、アクセス制御</a></seealso> </directivesynopsis> <directivesynopsis> <name>AuthType</name> -<description>$B%f!<%6G'>Z$N<oN`(B</description> +<description>ユーザ認証の種類</description> <syntax>AuthType Basic|Digest</syntax> <contextlist><context>directory</context><context>.htaccess</context> </contextlist> <override>AuthConfig</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$OBP>]%G%#%l%/%H%j$GMxMQ$9$k%f!<%6!<G'>Z$N<oN`$rA*$S$^$9!#(B - $B$?$@!"8=:_$N$H$3$m$O(B <code>Basic</code> $B$H(B <code>Digest</code> $B$7$+(B - $B<BAu$5$l$F$$$^$;$s!#(B - - $B$3$N%G%#%l%/%F%#%V$O(B <directive - module="core">AuthName</directive>$B%G%#%l%/%F%#%V$d(B - <directive module="core">Require</directive> $B%G%#%l%/%F%#%V$H!"(B - <directive module="mod_authn_file">AuthUserFile</directive> $B$d(B <directive - module="mod_authz_groupfile">AuthGroupFile</directive> $B$J$I$N%G%#%l%/%F%#%V$H(B - $B0l=o$KMxMQ$9$kI,MW$,$"$j$^$9!#(B</p> + <p>このディレクティブは対象ディレクトリで利用するユーザー認証の種類を選びます。 + ただ、現在のところは <code>Basic</code> と <code>Digest</code> しか + 実装されていません。 + + このディレクティブは <directive + module="core">AuthName</directive>ディレクティブや + <directive module="core">Require</directive> ディレクティブと、 + <directive module="mod_authn_file">AuthUserFile</directive> や <directive + module="mod_authz_groupfile">AuthGroupFile</directive> などのディレクティブと + 一緒に利用する必要があります。</p> </usage> -<seealso><a href="../howto/auth.html">$BG'>Z!">5G'!"%"%/%;%9@)8f(B</a></seealso> +<seealso><a href="../howto/auth.html">認証、承認、アクセス制御</a></seealso> </directivesynopsis> <directivesynopsis> <name>CGIMapExtension</name> -<description>CGI $B%9%/%j%W%H$N%$%s%?!<%W%j%?$N0LCV$rD4$Y$k$?$a$N<jK!(B</description> +<description>CGI スクリプトのインタープリタの位置を調べるための手法</description> <syntax>CGIMapExtension <var>cgi-path</var> <var>.extension</var></syntax> <default>None</default> <contextlist><context>directory</context><context>.htaccess</context> </contextlist> <override>FileInfo</override> -<compatibility>NetWare $B$N$_(B</compatibility> +<compatibility>NetWare のみ</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B Apache $B$,(B CGI $B%9%/%j%W%H$r<B9T$9$k$?$a$N(B - $B%$%s%?!<%W%j%?$rC5$9J}K!$r@)8f$7$^$9!#(B - $BNc$($P!"(B<code>CGIMapExtension sys:\foo.nlm .foo</code> $B$H@_Dj$9$k$H(B - <code>.foo</code> $B$H$$$&3HD%;R$N$9$Y$F$N(B CGI $B%9%/%j%W%H$O(B FOO $B%$%s%?!<%W%j%?$K(B - $BEO$5$l$^$9!#(B</p> + <p>このディレクティブは Apache が CGI スクリプトを実行するための + インタープリタを探す方法を制御します。 + 例えば、<code>CGIMapExtension sys:\foo.nlm .foo</code> と設定すると + <code>.foo</code> という拡張子のすべての CGI スクリプトは FOO インタープリタに + 渡されます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ContentDigest</name> -<description><code>Content-MD5</code> HTTP $B1~Ez%X%C%@$N@8@.$rM-8z$K$9$k(B</description> +<description><code>Content-MD5</code> HTTP 応答ヘッダの生成を有効にする</description> <syntax>ContentDigest On|Off</syntax> <default>ContentDigest Off</default> <contextlist><context>server config</context><context>virtual host</context> @@ -528,41 +528,41 @@ <status>Experimental</status> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"(BRFC1864 $B5Z$S(B RFC2616 $B$K$*$$$FDj5A$5$l$F$$$k(B - <code>Content-MD5</code> $B%X%C%@!<$N@8@.$rM-8z$K$7$^$9!#(B</p> + <p>このディレクティブは、RFC1864 及び RFC2616 において定義されている + <code>Content-MD5</code> ヘッダーの生成を有効にします。</p> - <p>MD5 $B$O!"G$0UD9$N%G!<%?$N!V%a%C%;!<%8%@%$%8%'%9%H!W(B($B!V;XLf!W(B - $B$HI=8=$5$l$k$3$H$b$"$k(B) $B$r7W;;$9$k%"%k%4%j%:%`$G!"(B - $B%G!<%?$NJQ99$,$"$C$?>l9g$K$OHs>o$K9b$$?.MjEY$G%a%C%;!<%8%@%$%8%'%9%H$KJQ99$,(B - $BH?1G$5$l$^$9!#(B</p> + <p>MD5 は、任意長のデータの「メッセージダイジェスト」(「指紋」 + と表現されることもある) を計算するアルゴリズムで、 + データの変更があった場合には非常に高い信頼度でメッセージダイジェストに変更が + 反映されます。</p> - <p><code>Content-MD5</code> $B%X%C%@$O!"%(%s%I%D!<%(%s%I$G(B - $B%(%s%F%#%F%#%\%G%#!<$K4^$^$l$k%a%C%;!<%8$N40A4@-%A%'%C%/(B - (Message Integrity Check - MIC)$B$rDs6!$7$^$9!#(B - $B$3$N%X%C%@$rD4$Y$k$3$H$G!"%W%m%-%7$d%/%i%$%"%s%H$O!"(B - $BESCf7PO)$K$*$1$k%(%s%F%#%F%#%\%G%#$NM=4|$;$LJQ99$J$I$r(B - $B8!=P$9$k$3$H$,$G$-$^$9!#%X%C%@$NNc(B:</p> + <p><code>Content-MD5</code> ヘッダは、エンドツーエンドで + エンティティボディーに含まれるメッセージの完全性チェック + (Message Integrity Check - MIC)を提供します。 + このヘッダを調べることで、プロキシやクライアントは、 + 途中経路におけるエンティティボディの予期せぬ変更などを + 検出することができます。ヘッダの例:</p> <example> Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA== </example> - <p>$B%j%/%(%9%HKh$K%a%C%;!<%8%@%$%8%'%9%H$r7W;;$9$k(B ($BCM$O%-%c%C%7%e$5$l$^$;$s(B) - $B$3$H$+$i!"(B - $B%5!<%P%Q%U%)!<%^%s%9$,Dc2<$9$k$3$H$K$D$$$FCm0U$7$F$/$@$5$$!#(B</p> + <p>リクエスト毎にメッセージダイジェストを計算する (値はキャッシュされません) + ことから、 + サーバパフォーマンスが低下することについて注意してください。</p> - <p><code>Content-MD5</code >$B$O!"(B<module>core</module> $B5!G=$K$h$j=hM}$5$l$?(B - $B%I%-%e%a%s%H$rAw$k$H$-$N$_M-8z$G$"$j!"(B - SSI $B%I%-%e%a%s%H$d(B CGI $B%9%/%j%W%H$N=PNO!"%P%$%H%l%s%8$r;XDj$7$?(B - $B1~Ez$N>l9g$K$O$3$N%X%C%@$OIUM?$5$l$^$;$s!#(B + <p><code>Content-MD5</code >は、<module>core</module> 機能により処理された + ドキュメントを送るときのみ有効であり、 + SSI ドキュメントや CGI スクリプトの出力、バイトレンジを指定した + 応答の場合にはこのヘッダは付与されません。 </p> </usage> </directivesynopsis> <directivesynopsis> <name>DefaultType</name> -<description>$B%5!<%P$,%3%s%F%s%H%?%$%W$r7hDj$G$-$J$$$H$-$K(B -$BAw$i$l$k(B MIME $B%3%s%F%s%H%?%$%W(B</description> +<description>サーバがコンテントタイプを決定できないときに +送られる MIME コンテントタイプ</description> <syntax>DefaultType <var>MIME-type</var></syntax> <default>DefaultType text/plain</default> <contextlist><context>server config</context><context>virtual host</context> @@ -571,54 +571,54 @@ <override>FileInfo</override> <usage> - <p>$B%5!<%P$O!"(BMIME $B$N%?%$%W%^%C%W$+$i$O7hDj$G$-$J$$(B - $B%I%-%e%a%s%H$NAw?.$rMW5a$5$l$k$3$H$,$"$j$^$9!#(B</p> + <p>サーバは、MIME のタイプマップからは決定できない + ドキュメントの送信を要求されることがあります。</p> - <p>$B%5!<%P$O!"%I%-%e%a%s%H$N%3%s%F%s%H%?%$%W$r%/%i%$%"%s%H$KDLCN$9$kI,MW$,(B - $B$"$j$^$9$N$G!"$3$N$h$&$K%?%$%W$,L$CN$N>l9g$O(B - <code>DefaultType</code> $B$G;XDj$5$l$?%?%$%W$rMxMQ$7$^$9!#(B - $BNc(B:</p> + <p>サーバは、ドキュメントのコンテントタイプをクライアントに通知する必要が + ありますので、このようにタイプが未知の場合は + <code>DefaultType</code> で指定されたタイプを利用します。 + 例:</p> <example> DefaultType image/gif </example> - <p>$B$3$l$O(B <code>.gif</code> $B$H$$$&3HD%;R$,%U%!%$%kL>$K4^$^$l$F$$$J$$(B - $BB?$/$N(B GIF $B2hA|$,4^$^$l$F$$$k%G%#%l%/%H%j$KE,$7$F$$$k$G$7$g$&!#(B</p> + <p>これは <code>.gif</code> という拡張子がファイル名に含まれていない + 多くの GIF 画像が含まれているディレクトリに適しているでしょう。</p> - <p><directive module="core">ForceType</directive> $B%G%#%l%/%F%#%V$H(B - $B0c$C$F!"$3$N%G%#%l%/%F%#%V$O%G%U%)%k%H$N(B MIME $B%?%$%W$rDs6!$9$k$@$1$G(B - $B$"$k$3$H$KCm0U$7$F$/$@$5$$!#%U%!%$%kL>$N3HD%;R$r4^$a!"(B - $B%a%G%#%"%?%$%W$r7hDj$G$-$kB>$N(B MIME $B%?%$%W$NDj5A$,$"$l$P(B - $B$3$N%G%U%)%k%H$O>e=q$-$5$l$^$9!#(B</p> + <p><directive module="core">ForceType</directive> ディレクティブと + 違って、このディレクティブはデフォルトの MIME タイプを提供するだけで + あることに注意してください。ファイル名の拡張子を含め、 + メディアタイプを決定できる他の MIME タイプの定義があれば + このデフォルトは上書きされます。</p> </usage> </directivesynopsis> <directivesynopsis type="section"> <name>Directory</name> -<description>$B;XDj$N%U%!%$%k%7%9%F%`$N%G%#%l%/%H%j$H%5%V%G%#%l%/%H%j$H$N$_$K(B -$BE,MQ$5$l$k%G%#%l%/%F%#%V$r0O$`(B</description> +<description>指定のファイルシステムのディレクトリとサブディレクトリとのみに +適用されるディレクティブを囲む</description> <syntax><Directory <var>directory-path</var>> ... </Directory></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$B;XDj$5$l$?%G%#%l%/%H%j$H$=$N%5%V%G%#%l%/%H%j$K$N$_(B - $B%G%#%l%/%F%#%V$rE,MQ$5$;$k$?$a$K$O!"(B - <directive type="section">Directory</directive> $B$H(B - <code></Directory></code> $B$rBP$H$7$F!"%G%#%l%/%F%#%V72$r0O$$$^$9!#(B - $B$=$NCf$K$O!"%G%#%l%/%H%j%3%s%F%-%9%H$G5v2D$5$l$?A4$F$N%G%#%l%/%F%#%V$r(B - $BMxMQ$G$-$^$9!#(B - <var>directive-path</var> $B$O!"%U%k%Q%9$b$7$/$O(B Unix $B$N%7%'%k7A<0$N(B - $B%o%$%k%I%+!<%I$r;XDj$7$^$9!#(B - <code>?</code> $B$OG$0U$N(B 1 $BJ8;z!"(B<code>*</code> $B$OG$0U$NJ8;zNs$K%^%C%A$7$^$9!#(B - $B%7%'%k$K$*$1$k;XDjF1MM!"J8;z$NHO0O$r(B <code>[]</code> $B$G;XDj$G$-$^$9!#(B - $B%o%$%k%I%+!<%I$O(B `/' $BJ8;z$K$O%^%C%A$7$^$;$s$N$G!"(B - <code>/home/user/public_html</code> $B$K$O(B - <code><Directory /*/public_html></code> $B$O%^%C%A$7$^$;$s$,!"(B - <code><Directory /home/*/public_html></code> $B$O%^%C%A$7$^$9!#(B - $BNc(B:</p> + <p>指定されたディレクトリとそのサブディレクトリにのみ + ディレクティブを適用させるためには、 + <directive type="section">Directory</directive> と + <code></Directory></code> を対として、ディレクティブ群を囲います。 + その中には、ディレクトリコンテキストで許可された全てのディレクティブを + 利用できます。 + <var>directive-path</var> は、フルパスもしくは Unix のシェル形式の + ワイルドカードを指定します。 + <code>?</code> は任意の 1 文字、<code>*</code> は任意の文字列にマッチします。 + シェルにおける指定同様、文字の範囲を <code>[]</code> で指定できます。 + ワイルドカードは `/' 文字にはマッチしませんので、 + <code>/home/user/public_html</code> には + <code><Directory /*/public_html></code> はマッチしませんが、 + <code><Directory /home/*/public_html></code> はマッチします。 + 例:</p> <example> <Directory /usr/local/httpd/htdocs><br /> @@ -629,31 +629,31 @@ </example> <note> -<p><var>directory-path</var> $B0z?t$K$OCm0U$7$F$/$@$5$$(B: $B$=$N0z?t$O(B -Apache $B$,%U%!%$%k$r%"%/%;%9$9$k$?$a$K;H$&%U%!%$%k%7%9%F%`$N%Q%9$K(B -$B$=$N$^$^%^%C%A$9$kI,MW$,$"$j$^$9!#$"$k(B <code><Directory></code> $B$K(B -$BE,MQ$5$l$k%G%#%l%/%F%#%V$O!"JL$N%7%s%\%j%C%/%j%s%/$r$?$I$C$?$j$7$F(B -$BF1$8%G%#%l%/%H%j$r0c$&%Q%9$G%"%/%;%9$7$?>l9g$K$OE,MQ$5$l$^$;$s!#(B</p> +<p><var>directory-path</var> 引数には注意してください: その引数は +Apache がファイルをアクセスするために使うファイルシステムのパスに +そのままマッチする必要があります。ある <code><Directory></code> に +適用されるディレクティブは、別のシンボリックリンクをたどったりして +同じディレクトリを違うパスでアクセスした場合には適用されません。</p> </note> - <p><code>~</code> $B$H$$$&J8;z$r(B - $BIU2C$9$k$3$H$G3HD%@55,I=8=$rMxMQ$9$k$3$H$b$G$-$^$9!#(B - $BNc$($P(B:</p> + <p><code>~</code> という文字を + 付加することで拡張正規表現を利用することもできます。 + 例えば:</p> <example> <Directory ~ "^/www/.*/[0-9]{3}"> </example> - <p>$B$H$$$C$?;XDj$N>l9g!"(B<code>/www/</code> $B0J2<$K$"$k?t;z(B - 3 $BJ8;z$N%G%#%l%/%H%j$K%^%C%A$7$^$9!#(B</p> + <p>といった指定の場合、<code>/www/</code> 以下にある数字 + 3 文字のディレクトリにマッチします。</p> - <p>$B$b$7J#?t$N(B ($B@55,I=8=0J30$N(B) <directive type="section" - >Directory</directive>$B%;%/%7%g%s$,(B - $B%I%-%e%a%s%H$r4^$`%G%#%l%/%H%j(B ($B$d$=$N>e0L%G%#%l%/%H%j$N$I$l$+(B) $B$H%^%C%A$7$?$J$i$P!"(B + <p>もし複数の (正規表現以外の) <directive type="section" + >Directory</directive>セクションが + ドキュメントを含むディレクトリ (やその上位ディレクトリのどれか) とマッチしたならば、 <a - href="#accessfilename">.htaccess</a> $B%U%!%$%k$N%G%#%l%/%F%#%V$bFI$_9~$_$D$D!"(B - $BC;$$%Q%9$+$i=g$KE,MQ$5$l$^$9!#(B - $BNc$($P!"(B</p> + href="#accessfilename">.htaccess</a> ファイルのディレクティブも読み込みつつ、 + 短いパスから順に適用されます。 + 例えば、</p> <example> <Directory /><br /> @@ -669,25 +669,25 @@ Apache $B$,%U%!%$%k$r%"%/%;%9$9$k$?$a$K;H$&%U%!%$%k%7%9%F%`$N%Q%9$K(B </Directory> </example> - <p>$B$H@_Dj$7!"%I%-%e%a%s%H(B <code>/home/web/dir/doc.html</code> $B$X$N(B - $B%"%/%;%9$,$"$C$?>l9g$K$O0J2<$N$h$&$KF0:n$7$^$9(B:</p> + <p>と設定し、ドキュメント <code>/home/web/dir/doc.html</code> への + アクセスがあった場合には以下のように動作します:</p> <ul> - <li><code>AllowOverride None</code> $B$,E,MQ$5$l$k!#(B - (<code>.htaccess</code> $B%U%!%$%k$OL58z$K$J$k(B)</li> + <li><code>AllowOverride None</code> が適用される。 + (<code>.htaccess</code> ファイルは無効になる)</li> - <li><code>AllowOverride FileInfo</code> $B$,E,MQ$5$l$k(B - (<code>/home</code> $B%G%#%l%/%H%j$KBP$7$F(B)$B!#(B</li> + <li><code>AllowOverride FileInfo</code> が適用される + (<code>/home</code> ディレクトリに対して)。</li> <li><code>/home/.htaccess</code>, <code>/home/web/.htaccess</code>, - <code>/home/web/.htaccess</code> $B$N=g$K$=$l$i$N%U%!%$%kCf$N(B - FileInfo $B%G%#%l%/%F%#%V$,E,MQ$5$l$k!#(B</li> + <code>/home/web/.htaccess</code> の順にそれらのファイル中の + FileInfo ディレクティブが適用される。</li> </ul> - <p>$B@55,I=8=$O!"DL>o$N%;%/%7%g%s$,$9$Y$FE,MQ$5$l$k$^$G(B - $B9MN8$5$l$^$;$s!#(B - $B$=$N8e!"A4$F$N@55,I=8=$,@_Dj%U%!%$%k$K8=$l$?=g$G;n$5$l$^$9!#(B - $BNc$($P!"0J2<$N$h$&$J>l9g$K(B</p> + <p>正規表現は、通常のセクションがすべて適用されるまで + 考慮されません。 + その後、全ての正規表現が設定ファイルに現れた順で試されます。 + 例えば、以下のような場合に</p> <example> <Directory ~ abc$><br /> @@ -697,16 +697,16 @@ Apache $B$,%U%!%$%k$r%"%/%;%9$9$k$?$a$K;H$&%U%!%$%k%7%9%F%`$N%Q%9$K(B </Directory> </example> - <p>$B@55,I=8=$N%;%/%7%g%s$O$9$Y$F$NDL>o$N(B <directive - type="section">Directory</directive> $B$H(B - <code>.htaccess</code> $B$NE,MQ$,=*$o$k$^$G9MN8$5$l$^$;$s!#(B - $B$=$N8e$G!"@55,I=8=$O(B <code>/home/abc/public_html/abc</code> $B$K%^%C%A$7!"(B - $BBP1~$9$k(B <directive type="section">Directory</directive> $B$,E,MQ$5$l$^$9!#(B</p> + <p>正規表現のセクションはすべての通常の <directive + type="section">Directory</directive> と + <code>.htaccess</code> の適用が終わるまで考慮されません。 + その後で、正規表現は <code>/home/abc/public_html/abc</code> にマッチし、 + 対応する <directive type="section">Directory</directive> が適用されます。</p> - <p><strong>Apache $B$N%G%U%)%k%H$G$O(B <code><Directory /></code> $B$X$N%"%/%;%9$O(B - <code>Allow from All</code> $B$K$J$C$F$$$k$3$H$KCm0U$7$F$/$@$5$$!#(B - $B$3$l$O!"(BURL $B$+$i%^%C%W$5$l$?$I$N%U%!%$%k$G$b(B Apache $B$OAw$k$H$$$&$3$H$G$9!#(B - $B$3$l$O0J2<$N$h$&$K$7$FJQ99$9$k$3$H$,?d>)$5$l$F$$$^$9!#(B</strong></p> + <p><strong>Apache のデフォルトでは <code><Directory /></code> へのアクセスは + <code>Allow from All</code> になっていることに注意してください。 + これは、URL からマップされたどのファイルでも Apache は送るということです。 + これは以下のようにして変更することが推奨されています。</strong></p> <example> <Directory /><br /> @@ -717,29 +717,29 @@ Apache $B$,%U%!%$%k$r%"%/%;%9$9$k$?$a$K;H$&%U%!%$%k%7%9%F%`$N%Q%9$K(B </Directory> </example> - <p><strong>$B$=$7$F%"%/%;%9$r(B<em>$B2DG=$K$7$?$$(B</em>$B%G%#%l%/%H%j$KBP$7$F(B - $B8DJL$K@_Dj$9$l$P$h$$$G$7$g$&!#(B - $B$3$N$"$?$j$K$D$$$F$O!"(B<a - href="../misc/security_tips.html">$B%;%-%e%j%F%#$K4X$9$k%3%D(B</a>$B$r(B - $B;2>H$7$F$/$@$5$$!#(B</strong></p> + <p><strong>そしてアクセスを<em>可能にしたい</em>ディレクトリに対して + 個別に設定すればよいでしょう。 + このあたりについては、<a + href="../misc/security_tips.html">セキュリティに関するコツ</a>を + 参照してください。</strong></p> - <p>$B%G%#%l%/%H%j%;%/%7%g%s$O(B httpd.conf $B%U%!%$%k=q$-$^$9!#(B + <p>ディレクトリセクションは httpd.conf ファイル書きます。 <directive type="section">Directory</directive> - $B%G%#%l%/%F%#%V$OF~$l;R$K$9$k$3$H$,$G$-$:!"(B - <directive module="core" type="section">Limit</directive> $B$d(B <directive - module="core" type="section">LimitExcept</directive> $B%;%/%7%g%s$NCf$K$b(B - $B5-=R$G$-$^$;$s!#(B</p> + ディレクティブは入れ子にすることができず、 + <directive module="core" type="section">Limit</directive> や <directive + module="core" type="section">LimitExcept</directive> セクションの中にも + 記述できません。</p> </usage> -<seealso>$B%j%/%(%9%H$r<u$1$?:]$K$3$l$i$N0[$J$k%;%/%7%g%s$,(B - $BAH$_9g$o$5$l$kJ}K!$K$D$$$F$O(B <a href="../sections.html"> - <Directory>, <Location>, <Files> $B%;%/%7%g%s$NF0:nK!(B</a></seealso> +<seealso>リクエストを受けた際にこれらの異なるセクションが + 組み合わされる方法については <a href="../sections.html"> + <Directory>, <Location>, <Files> セクションの動作法</a></seealso> </directivesynopsis> <directivesynopsis type="section"> <name>DirectoryMatch</name> -<description>$B@55,I=8=$K%^%C%A$9$k%U%!%$%k%7%9%F%`$N%G%#%l%/%H%j$H(B -$B%5%V%G%#%l%/%H%j$H$N$_$KE,MQ$5$l$k%G%#%l%/%F%#%V$r0O$`(B</description> +<description>正規表現にマッチするファイルシステムのディレクトリと +サブディレクトリとのみに適用されるディレクティブを囲む</description> <syntax><DirectoryMatch <var>regex</var>> ... </DirectoryMatch></syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -747,65 +747,65 @@ Apache $B$,%U%!%$%k$r%"%/%;%9$9$k$?$a$K;H$&%U%!%$%k%7%9%F%`$N%Q%9$K(B <usage> <p><directive module="core" type="section">Directory</directive> - $B%G%#%l%/%F%#%V$HF1MM$K!"(B<directive type="section">DirectoryMatch</directive> - $B$H(B <code></DirectoryMatch></code> $B$O;XDj$5$l$?%G%#%l%/%H%j$H(B - $B$=$N%5%V%G%#%l%/%H%j$K$N$_E,MQ$5$l$k%G%#%l%/%F%#%V72$r0O$$$^$9!#(B - $B$7$+$7!"$3$N%G%#%l%/%F%#%V$O0z?t$H$7$F@55,I=8=$r$H$j$^$9!#Nc$($P(B:</p> + ディレクティブと同様に、<directive type="section">DirectoryMatch</directive> + と <code></DirectoryMatch></code> は指定されたディレクトリと + そのサブディレクトリにのみ適用されるディレクティブ群を囲います。 + しかし、このディレクティブは引数として正規表現をとります。例えば:</p> <example> <DirectoryMatch "^/www/(.+/)?[0-9]{3}"> </example> - <p>$B$O(B /www/ $B0J2<$K$"$k?t;z(B 3 $BJ8;z$N%G%#%l%/%H%j$K%^%C%A$7$^$9!#(B</p> + <p>は /www/ 以下にある数字 3 文字のディレクトリにマッチします。</p> </usage> -<seealso>$BDL>o$N(B <directive type="section">Directory</directive> $B$H@55,I=8=$N;XDj$,(B -$BE,MQ$5$l$k=gHV$K$D$$$F$O(B <directive type="section" +<seealso>通常の <directive type="section">Directory</directive> と正規表現の指定が +適用される順番については <directive type="section" module="core">Directory</directive></seealso> -<seealso>$B%j%/%(%9%H$r<u$1$?:]$K$3$l$i$N0[$J$k%;%/%7%g%s$,(B - $BAH$_9g$o$5$l$kJ}K!$K$D$$$F$O(B <a href="../sections.html"> - <Directory>, <Location>, <Files> $B%;%/%7%g%s$NF0:nK!(B</a></seealso> +<seealso>リクエストを受けた際にこれらの異なるセクションが + 組み合わされる方法については <a href="../sections.html"> + <Directory>, <Location>, <Files> セクションの動作法</a></seealso> </directivesynopsis> <directivesynopsis> <name>DocumentRoot</name> -<description>$B%&%'%V$+$i8+$($k%a%$%s$N%I%-%e%a%s%H%D%j!<$K$J$k(B -$B%G%#%l%/%H%j(B</description> +<description>ウェブから見えるメインのドキュメントツリーになる +ディレクトリ</description> <syntax>DocumentRoot <var>directory-path</var></syntax> <default>DocumentRoot /usr/local/apache/htdocs</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"(B<program>httpd</program> - $B$,%U%!%$%k$rDs6!$9$k%G%#%l%/%H%j$r@_Dj$7$^$9!#(B - <directive module="mod_alias">Alias</directive> $B$N$h$&$J%G%#%l%/%F%#%V$K%^%C%A$7$J$$>l9g$K$O!"(B - $B%I%-%e%a%s%H$N(B ($BLuCm(B:$B%U%!%$%k%7%9%F%`>e$N(B) $B%Q%9$r@8@.$9$k$?$a$K!"(B - $B%j%/%(%9%H$5$l$?(B URL $B$N%Q%9ItJ,$r%I%-%e%a%s%H%k!<%H$KIUM?$7$^$9!#(B - $BNc(B:</p> + <p>このディレクティブは、<program>httpd</program> + がファイルを提供するディレクトリを設定します。 + <directive module="mod_alias">Alias</directive> のようなディレクティブにマッチしない場合には、 + ドキュメントの (訳注:ファイルシステム上の) パスを生成するために、 + リクエストされた URL のパス部分をドキュメントルートに付与します。 + 例:</p> <example> DocumentRoot /usr/web </example> - <p>$B$3$N>l9g!"(B - <code>http://www.my.host.com/index.html</code> $B$X$N%"%/%;%9$,$"$l$P(B - <code>/usr/web/index.html</code> $B$,JV$5$l$^$9!#(B - <var>directory-path</var> $B$,@dBP%Q%9$G$J$$>l9g$O!"(B + <p>この場合、 + <code>http://www.my.host.com/index.html</code> へのアクセスがあれば + <code>/usr/web/index.html</code> が返されます。 + <var>directory-path</var> が絶対パスでない場合は、 <directive module="core">ServerRoot</directive> - $B$+$i$NAjBP%Q%9$H$_$J$5$l$^$9!#(B</p> + からの相対パスとみなされます。</p> - <p><directive>DocumentRoot</directive> $B$O:G8e$N%9%i%C%7%eL5$7$G(B - $B;XDj$9$kI,MW$,$"$j$^$9!#(B</p> + <p><directive>DocumentRoot</directive> は最後のスラッシュ無しで + 指定する必要があります。</p> </usage> -<seealso><a href="../urlmapping.html">URL $B$r%U%!%$%k%7%9%F%`$N0LCV$K(B -$B%^%C%W$9$k(B</a></seealso> +<seealso><a href="../urlmapping.html">URL をファイルシステムの位置に +マップする</a></seealso> </directivesynopsis> <directivesynopsis> <name>EnableMMAP</name> -<description>$BG[AwCf$K%U%!%$%k$rFI$_9~$`$?$a$K%a%b%j%^%C%T%s%0$r(B -$B;H$&$+$I$&$+(B</description> +<description>配送中にファイルを読み込むためにメモリマッピングを +使うかどうか</description> <syntax>EnableMMAP On|Off</syntax> <default>EnableMMAP On</default> <contextlist><context>server config</context><context>virtual host</context> @@ -814,36 +814,36 @@ module="core">Directory</directive></seealso> <override>FileInfo</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$OG[AwCf$K%U%!%$%k$NFbMF$rFI$_9~$`I,MW$,$"$k$H$-$K(B - <program>httpd</program> $B$,%a%b%j%^%C%T%s%0$r;H$&$+$I$&$+$r@)8f$7$^$9!#(B - $B%G%U%)%k%H$G$O!"(B - $BNc$($P!"(B<module>mod_include</module> $B$r;H$C$F(B SSI $B%U%!%$%k$rG[Aw(B - $B$9$k$H$-$N$h$&$K!"%U%!%$%k$NESCf$N%G!<%?$r%"%/%;%9$9$kI,MW$,$"$k$H$-$K$O(B - Apache $B$O(B OS $B$,%5%]!<%H$7$F$$$l$P%U%!%$%k$r%a%b%j$K%^%C%W$7$^$9!#(B</p> + <p>このディレクティブは配送中にファイルの内容を読み込む必要があるときに + <program>httpd</program> がメモリマッピングを使うかどうかを制御します。 + デフォルトでは、 + 例えば、<module>mod_include</module> を使って SSI ファイルを配送 + するときのように、ファイルの途中のデータをアクセスする必要があるときには + Apache は OS がサポートしていればファイルをメモリにマップします。</p> <p> - $B$3$N%a%b%j%^%C%W$O@-G=$N8~>e$r;}$?$i$9$3$H$,$"$j$^$9!#(B - $B$7$+$7!"4D6-$K$h$C$F$O1?MQ>e$NLdBj$rKI$0$?$a$K%a%b%j%^%C%T%s%0$r(B - $B;HMQ$7$J$$$h$&$K$7$?J}$,NI$$>l9g$b$"$j$^$9(B:</p> + このメモリマップは性能の向上を持たらすことがあります。 + しかし、環境によっては運用上の問題を防ぐためにメモリマッピングを + 使用しないようにした方が良い場合もあります:</p> <ul> - <li>$B%^%k%A%W%m%;%C%5%7%9%F%`$NCf$K$O%a%b%j%^%C%T%s%0$r$9$k$H(B - <program>httpd</program> $B$N@-G=$,Mn$A$k$b$N$,$"$j$^$9!#(B</li> - <li>NFS $B%^%&%s%H$5$l$?(B <directive module="core">DocumentRoot</directive> - $B$G$O!"(B<program>httpd</program> $B$,%a%b%j%^%C%W$7$F$$$k4V$K%U%!%$%k$,:o=|$5$l$?$j(B - $BC;$/$J$C$?$j$7$?$H$-$K5/$3$k%;%0%a%s%F!<%7%g%s%U%)!<%k%H$N$?$a$K(B - <program>httpd</program> $B$,%/%i%C%7%e$9$k2DG=@-$,$"$j$^$9!#(B</li> + <li>マルチプロセッサシステムの中にはメモリマッピングをすると + <program>httpd</program> の性能が落ちるものがあります。</li> + <li>NFS マウントされた <directive module="core">DocumentRoot</directive> + では、<program>httpd</program> がメモリマップしている間にファイルが削除されたり + 短くなったりしたときに起こるセグメンテーションフォールトのために + <program>httpd</program> がクラッシュする可能性があります。</li> </ul> - <p>$B$3$l$i$NLdBj$KEv$F$O$^$k%5!<%P$N@_Dj$N>l9g$O!"0J2<$N$h$&$K$7$F(B - $B%U%!%$%k$NG[Aw;~$N%a%b%j%^%C%T%s%0$r;HMQIT2D$K$7$F$/$@$5$$(B:</p> + <p>これらの問題に当てはまるサーバの設定の場合は、以下のようにして + ファイルの配送時のメモリマッピングを使用不可にしてください:</p> <example> EnableMMAP Off </example> - <p>NFS $B%^%&%s%H$5$l$?%U%!%$%k$K$O!"LdBj$N$"$k%U%!%$%k$K$N$_L@<(E*$K(B - $B$3$N5!G=$r;HMQIT2D$K$7$^$9(B:</p> + <p>NFS マウントされたファイルには、問題のあるファイルにのみ明示的に + この機能を使用不可にします:</p> <example> <Directory "/path-to-nfs-files"> @@ -857,53 +857,53 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>EnableSendfile</name> -<description>$B%U%!%$%k$N%/%i%$%"%s%H$X$NG[Aw;~$K%+!<%M%k$N(B sendfile $B%5%]!<%H$r(B -$B;H$&$+$I$&$+(B</description> +<description>ファイルのクライアントへの配送時にカーネルの sendfile サポートを +使うかどうか</description> <syntax>EnableSendfile On|Off</syntax> <default>EnableSendfile On</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context> </contextlist> <override>FileInfo</override> -<compatibility>$B%P!<%8%g%s(B 2.0.44 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>バージョン 2.0.44 以降で使用可能</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%/%i%$%"%s$K%U%!%$%k$NFbMF$rAw$k$H$-$K(B - <program>httpd</program> $B$,%+!<%M%k$N(B - sendfile $B%5%]!<%H$r;H$&$+$I$&$+$r@)8f$7$^$9!#%G%U%)%k%H$G$O!"(B - $BNc$($P@EE*$J%U%!%$%k$NG[Aw$N$h$&$K!"%j%/%(%9%H$N=hM}$K%U%!%$%k$N(B - $BESCf$N%G!<%?$N%"%/%;%9$rI,MW$H$7$J$$$H$-$K$O!"(BApache $B$O(B OS $B$,(B - $B%5%]!<%H$7$F$$$l$P%U%!%$%k$rFI$_9~$`$3$H$J$/(B sendfile $B$r;H$C$F(B - $B%U%!%$%k$NFbMF$rAw$j$^$9!#(B</p> - - <p>sendfile $B$O(B read $B$H(B send $B$rJL!9$K9T$J$&$3$H$H!"%P%C%U%!$N3d$jEv$F$r(B - $B2sHr$7$^$9!#$7$+$7!"%W%i%C%H%U%)!<%`$d%U%!%$%k%7%9%F%`$NCf$K$O(B - $B1?MQ>e$NLdBj$rHr$1$k$?$a$K$3$N5!G=$r;HMQIT2D$K$7$?J}$,NI$$>l9g$,$"$j$^$9(B:</p> + <p>このディレクティブはクライアンにファイルの内容を送るときに + <program>httpd</program> がカーネルの + sendfile サポートを使うかどうかを制御します。デフォルトでは、 + 例えば静的なファイルの配送のように、リクエストの処理にファイルの + 途中のデータのアクセスを必要としないときには、Apache は OS が + サポートしていればファイルを読み込むことなく sendfile を使って + ファイルの内容を送ります。</p> + + <p>sendfile は read と send を別々に行なうことと、バッファの割り当てを + 回避します。しかし、プラットフォームやファイルシステムの中には + 運用上の問題を避けるためにこの機能を使用不可にした方が良い場合があります:</p> <ul> - <li>$B%W%i%C%H%U%)!<%`$NCf$K$O%S%k%I%7%9%F%`$,8!CN$G$-$J$+$C$?!"2u$l$?(B - sendfile $B$N%5%]!<%H$,B8:_$9$k$b$N$,$"$j$^$9!#$3$l$OFC$K(B - $B%P%$%J%j$,JL$N%^%7%s$G%S%k%I$5$l!"2u$l$?(B sendfile $B$N$"$k%^%7%s$K(B - $B0\F0$7$?$H$-$K5/$3$j$^$9!#(B</li> - <li>Linux $B$G$O!"(Bsendfile $B$rMQ$$$k$H!"(B - IPv6 $B;HMQ;~$KB8:_$9$kFCDj%M%C%H%o!<%/%+!<%I$N(B TCP-checksum - $B%*%U%m!<%I$N%P%0$rF'$s$G$7$^$$$^$9!#(B</li> - <li>$B%M%C%H%o!<%/%^%&%s%H$5$l$?(B <directive module="core">DocumentRoot</directive> - ($BNc$($P(B NFS $B$d(B SMB) - $B$G$O!"%+!<%M%k$O<+?H$N%-%c%C%7%e$r;H$C$F%M%C%H%o!<%/$+$i$N%U%!%$%k$r(B - $BAw$k$3$H$,$G$-$J$$$3$H$,$"$j$^$9!#(B</li> + <li>プラットフォームの中にはビルドシステムが検知できなかった、壊れた + sendfile のサポートが存在するものがあります。これは特に + バイナリが別のマシンでビルドされ、壊れた sendfile のあるマシンに + 移動したときに起こります。</li> + <li>Linux では、sendfile を用いると、 + IPv6 使用時に存在する特定ネットワークカードの TCP-checksum + オフロードのバグを踏んでしまいます。</li> + <li>ネットワークマウントされた <directive module="core">DocumentRoot</directive> + (例えば NFS や SMB) + では、カーネルは自身のキャッシュを使ってネットワークからのファイルを + 送ることができないことがあります。</li> </ul> - <p>$B$3$l$i$NLdBj$KEv$F$O$^$k%5!<%P$N@_Dj$N>l9g$O!"0J2<$N$h$&$K$7$F(B - $B$3$N5!G=$r;HMQIT2D$K$7$F$/$@$5$$(B:</p> + <p>これらの問題に当てはまるサーバの設定の場合は、以下のようにして + この機能を使用不可にしてください:</p> <example> EnableSendfile Off </example> - <p>NFS $B$d(B SMB $B%^%&%s%H$5$l$?%U%!%$%k$K$O!"LdBj$N$"$k%U%!%$%k$K$N$_L@<(E*$K(B - $B$3$N5!G=$r;HMQIT2D$K$7$^$9(B:</p> + <p>NFS や SMB マウントされたファイルには、問題のあるファイルにのみ明示的に + この機能を使用不可にします:</p> <example> <Directory "/path-to-nfs-files"> @@ -917,40 +917,40 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>ErrorDocument</name> -<description>$B%(%i!<$,H/@8$7$?$H$-$K%5!<%P$,%/%i%$%"%s%H$KAw$k$b$N(B</description> +<description>エラーが発生したときにサーバがクライアントに送るもの</description> <syntax>ErrorDocument <var>error-code document</var></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context> </contextlist> <override>FileInfo</override> -<compatibility>Apache 2.0 $B$G$O%F%-%9%H$r%/%&%)!<%H$9$k9=J8$,0JA0$N%P!<%8%g%s$+$i(B -$BJQ$o$C$F$$$^$9!#(B</compatibility> +<compatibility>Apache 2.0 ではテキストをクウォートする構文が以前のバージョンから +変わっています。</compatibility> <usage> - <p>$BLdBj$d%(%i!<$,H/@8$7$?$H$-$NF0:n$H$7$F!"(B - Apache $B$K$O0J2<$N;M$D$N$&$A0l$D$NF0:n$r@_Dj$9$k$3$H$,$G$-$^$9!#(B</p> + <p>問題やエラーが発生したときの動作として、 + Apache には以下の四つのうち一つの動作を設定することができます。</p> <ol> - <li>Apache $BI8=`$N4JC1$J%(%i!<%a%C%;!<%8$rI=<((B</li> + <li>Apache 標準の簡単なエラーメッセージを表示</li> - <li>$B<+J,$G;XDj$7$?%a%C%;!<%8$rI=<((B</li> + <li>自分で指定したメッセージを表示</li> - <li>$BLdBj$d%(%i!<$N=hM}$r$9$k0Y$K!"<+%5!<%PFb$N(B - <var>URL-path</var> $B$X%j%@%$%l%/%H(B</li> + <li>問題やエラーの処理をする為に、自サーバ内の + <var>URL-path</var> へリダイレクト</li> - <li>$BLdBj$d%(%i!<$N=hM}$r$9$k0Y$K!"30It$N(B <var>URL</var> $B$X%j%@%$%l%/%H(B</li> + <li>問題やエラーの処理をする為に、外部の <var>URL</var> へリダイレクト</li> </ol> - <p>$B:G=i$N$b$N$,%G%U%)%k%H$NF0:n$G!"(B2 $BHVL\$+$i(B 4 $BHVL\$O!"(B - <directive>ErrorDocument</directive>$B%G%#%l%/%F%#%V$K$h$j!"(B - HTTP $B$N%l%9%]%s%9%3!<%I$H!"%a%C%;!<%8$+(B URL $B$r;XDj$9$k$3$H$G@_Dj$7$^$9!#(B - Apache $B$,LdBj$b$7$/$O%(%i!<$K4X$9$kDI2C>pJs$rDs6!$9$k$3$H$,$"$j$^$9!#(B</p> + <p>最初のものがデフォルトの動作で、2 番目から 4 番目は、 + <directive>ErrorDocument</directive>ディレクティブにより、 + HTTP のレスポンスコードと、メッセージか URL を指定することで設定します。 + Apache が問題もしくはエラーに関する追加情報を提供することがあります。</p> - <p>URL $B$N>l9g$O!"%9%i%C%7%e$G;O$^$k(B (/) $B%m!<%+%k$N(B web-path ( - <directive module="core">DocumentRoot</directive> $B$+$i$NAjBP%Q%9(B - ) $B$+!"%/%i%$%"%s%H$,2r7h$G$-$k40A4$J(B URL $B$r;XDj$7$^$9!#(B - $B$b$7$/$O!"%V%i%&%6$KI=<($5$l$k%a%C%;!<%8$r;XDj$G$-$^$9!#(B - $BNc(B:</p> + <p>URL の場合は、スラッシュで始まる (/) ローカルの web-path ( + <directive module="core">DocumentRoot</directive> からの相対パス + ) か、クライアントが解決できる完全な URL を指定します。 + もしくは、ブラウザに表示されるメッセージを指定できます。 + 例:</p> <example> ErrorDocument 500 http://foo.example.com/cgi-bin/tester<br /> @@ -959,12 +959,12 @@ module="core">Directory</directive></seealso> ErrorDocument 403 "Sorry can't allow you access today" </example> - <p>$B2C$($F!"FCJL$JCM(B <code>default</code> $B$r;H$C$F(B Apache $B$K(B - $B%O!<%I%3!<%I$5$l$F$$$k4JC1$J%a%C%;!<%8$r;XDj$9$k$3$H$,$G$-$^$9!#(B - $BDL>o$OI,MW$G$O$"$j$^$;$s$,!"(B<code>default</code> $B$r;H$&$H(B - $B4{B8$N(B <directive>ErrorDocument</directive> $B%G%#%l%/%F%#%V$N@_Dj$r(B - $B7Q>5$9$k$H$3$m$G!"(BApache $B$N%O!<%I%3!<%I$5$l$?4JC1$J%a%C%;!<%8$K(B - $BLa$9$3$H$,$G$-$^$9!#(B</p> + <p>加えて、特別な値 <code>default</code> を使って Apache に + ハードコードされている簡単なメッセージを指定することができます。 + 通常は必要ではありませんが、<code>default</code> を使うと + 既存の <directive>ErrorDocument</directive> ディレクティブの設定を + 継承するところで、Apache のハードコードされた簡単なメッセージに + 戻すことができます。</p> <example> ErrorDocument 404 /cgi-bin/bad_urls.pl<br /><br /> @@ -975,106 +975,106 @@ module="core">Directory</directive></seealso> </Directory> </example> - <p>$B%j%b!<%H(B URL ($BNc$($P!"F,$K(B <code>http</code> $B$HIUM?$7$?J}K!(B) $B$r(B - <directive>ErrorDocument</directive> $B$K;XDj$9$k$H$-!"(B - $B$?$H$(J8=q$,F1$8%5!<%P$K$"$m$&$H$b!"%I%-%e%a%s%H$,$I$3$K$"$k$+$rDLCN$9$k$?$a$K!"(B - Apache $B$O%j%@%$%l%/%H$r%/%i%$%"%s%H$KAw=P$9$k$H$$$&$3$H$K!"Cm0U$7$F$/$@$5$$!#(B - $B$3$l$K$O$$$m$$$m$H4XO"$7$F5/$3$kLdBj$,$"$j$^$9!#(B - $BCf$G$b:G$b=EMW$J$N$O!"%/%i%$%"%s%H$O85!9$N%(%i!<%9%F!<%?%9%3!<%I$r<u$1<h$i$:!"(B - $BBe$o$j$K%j%@%$%l%/%H$N%9%F!<%?%9%3!<%I$r<u$1<h$k$H$$$&$3$H$G$9!#(B - $B$3$l$K$h$j!"%9%F!<%?%9%3!<%I$r;H$C$F(B URL $B$,M-8z$G$"$k$+$I$&$+$r7hDj$7$h$&$H$9$k(B - $B%&%'%V%m%\%C%H$d$=$NB>%/%i%$%"%s%H$r!":.Mp$5$;$k$+$b$7$l$^$;$s!#(B - $B$5$i$K!"(B<code>ErrorDocument 401</code> $B$K%j%b!<%H$N(B URL $B$r;XDj$9$k$H!"(B - $B%/%i%$%"%s%H$O(B 401 $B$H$$$&%9%F!<%?%9%3!<%I$r<u$1<h$i$J$$$?$a!"(B - $B%Q%9%o!<%I$r%f!<%6!<$KF~NOMW5a$7$J$1$l$P$J$i$J$$$3$H$,$o$+$j$^$;$s!#(B - $B=>$C$F!"(B<strong><code>ErrorDocument 401</code> $B$H$$$&%G%#%l%/%F%#%V$r;H$&>l9g$O!"(B - $BI,$:%m!<%+%k$JJ8=q$r;2>H$7$J$1$l$P$J$j$^$;$s!#(B</strong></p> - - <p>Microsoft Internet Explorer (MSIE) $B$O%G%U%)%k%H$G$O%5!<%P$,@8@.$7$?%(%i!<%a%C%;!<%8$,(B - $B!V>.$5$9$.$k!W$H$-$K$OL5;k$r$7$F<+J,<+?H$N!V$d$5$7$$!W%(%i!<%a%C%;!<%8$G(B - $BCV49$7$^$9!#%5%$%:$N$7$-$$CM$O%(%i!<$N<oN`$K$h$C$F0[$J$j$^$9$,!"(B - $B0lHLE*$K$O%(%i!<$NJ8=q$r(B 512 $B%P%$%H$h$j$bB?$-$/$9$k$H!"(BMSIE $B$O(B - $B%5!<%P$,@8@.$7$?%(%i!<$r1#$5$:$KI=<($7$^$9!#>\$7$$>pJs$O(B Microsoft - Knowledge Base $B$N5-;v(B <a + <p>リモート URL (例えば、頭に <code>http</code> と付与した方法) を + <directive>ErrorDocument</directive> に指定するとき、 + たとえ文書が同じサーバにあろうとも、ドキュメントがどこにあるかを通知するために、 + Apache はリダイレクトをクライアントに送出するということに、注意してください。 + これにはいろいろと関連して起こる問題があります。 + 中でも最も重要なのは、クライアントは元々のエラーステータスコードを受け取らず、 + 代わりにリダイレクトのステータスコードを受け取るということです。 + これにより、ステータスコードを使って URL が有効であるかどうかを決定しようとする + ウェブロボットやその他クライアントを、混乱させるかもしれません。 + さらに、<code>ErrorDocument 401</code> にリモートの URL を指定すると、 + クライアントは 401 というステータスコードを受け取らないため、 + パスワードをユーザーに入力要求しなければならないことがわかりません。 + 従って、<strong><code>ErrorDocument 401</code> というディレクティブを使う場合は、 + 必ずローカルな文書を参照しなければなりません。</strong></p> + + <p>Microsoft Internet Explorer (MSIE) はデフォルトではサーバが生成したエラーメッセージが + 「小さすぎる」ときには無視をして自分自身の「やさしい」エラーメッセージで + 置換します。サイズのしきい値はエラーの種類によって異なりますが、 + 一般的にはエラーの文書を 512 バイトよりも多きくすると、MSIE は + サーバが生成したエラーを隠さずに表示します。詳しい情報は Microsoft + Knowledge Base の記事 <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807">Q294807</a> - $B$K$"$j$^$9!#(B</p> + にあります。</p> - <p>$B$[$H$s$I$N%(%i!<%a%C%;!<%8$r>e=q$-$9$k$3$H$,$G$-$^$9$,!"FCDj$N>u672<$G$O(B - <directive module="core">ErrorDocument</directive> $B$N@_Dj$K$+$+$o$i$:(B - $BFbB"$N%a%C%;!<%8$,;H$o$l$^$9!#(B - $BFC$K!"IT@5$J7A<0$N%j%/%(%9%H$,8!=P$5$l$?>l9g!"DL>o$N%j%/%(%9%H=hM}$O(B - $BB(:B$KCf;_$5$l!"FbB"$N%(%i!<%a%C%;!<%8$,JV$5$l$^$9!#(B - $B$3$N=hCV$OIT@5$J%j%/%(%9%H$K$h$C$F0z$-5/$3$5$l$k!"%;%-%e%j%F%#LdBj$+$i(B - $B<i$k$?$a$KI,MW$JA<CV$G$9!#(B</p> + <p>ほとんどのエラーメッセージを上書きすることができますが、特定の状況下では + <directive module="core">ErrorDocument</directive> の設定にかかわらず + 内蔵のメッセージが使われます。 + 特に、不正な形式のリクエストが検出された場合、通常のリクエスト処理は + 即座に中止され、内蔵のエラーメッセージが返されます。 + この処置は不正なリクエストによって引き起こされる、セキュリティ問題から + 守るために必要な措置です。</p> - <p>2.0 $B$h$jA0$N%P!<%8%g%s$G$O!"BP$K$J$C$F$$$J$$Fs=E0zMQId$r(B - $B@hF,$KIU$1$k$3$H$K$h$j%a%C%;!<%8$G$"$k$3$H$r;XDj$7$F$$$^$7$?!#(B</p> + <p>2.0 より前のバージョンでは、対になっていない二重引用符を + 先頭に付けることによりメッセージであることを指定していました。</p> </usage> -<seealso><a href="../custom-error.html">$B%+%9%?%^%$%:2DG=$J(B -$B%(%i!<1~Ez$N%I%-%e%a%s%F!<%7%g%s(B</a></seealso> +<seealso><a href="../custom-error.html">カスタマイズ可能な +エラー応答のドキュメンテーション</a></seealso> </directivesynopsis> <directivesynopsis> <name>ErrorLog</name> -<description>$B%5!<%P$,%(%i!<$r%m%0<}=8$9$k>l=j(B</description> +<description>サーバがエラーをログ収集する場所</description> <syntax> ErrorLog <var>file-path</var>|syslog[:<var>facility</var>]</syntax> <default>ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows and OS/2)</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>ErrorLog</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%5!<%P$K@8$8$?$5$^$6$^$J%(%i!<$r(B - $B5-O?$9$k0Y$N%U%!%$%k$NL>A0$r@_Dj$7$^$9!#(B - <var>file-path</var> $B$,@dBP%Q%9$G$J$$$H$-$O!"(B<directive - module="core">ServerRoot</directive> $B$+$i$NAjBP%Q%9$H$_$J$5$l$^$9!#(B</p> + <p><directive>ErrorLog</directive> ディレクティブは、 + サーバに生じたさまざまなエラーを + 記録する為のファイルの名前を設定します。 + <var>file-path</var> が絶対パスでないときは、<directive + module="core">ServerRoot</directive> からの相対パスとみなされます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> ErrorLog /var/log/httpd/error_log </example> - <p><var>file-path</var> $B$,%Q%$%W(B (|) $B$+$i;O$^$k>l9g$O!"(B - $B%(%i!<%m%0$r=hM}$9$k$?$a$K<B9T$5$l$k%3%^%s%I$,(B - $B;XDj$5$l$F$$$k$H2r<a$5$l$^$9!#(B</p> + <p><var>file-path</var> がパイプ (|) から始まる場合は、 + エラーログを処理するために実行されるコマンドが + 指定されていると解釈されます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> ErrorLog "|/usr/local/bin/httpd_errors" </example> - <p>$B%U%!%$%kL>$NJQ$o$j$K(B <code>syslog</code> $B$H;XDj$9$k$3$H$K$h$C$F!"(B - $B%7%9%F%`$,%5%]!<%H$7$F$$$l$P(B syslogd(8) $B$rMxMQ$7$?%m%.%s%0$,M-8z$K$J$j$^$9!#(B - $B%G%U%)%k%H$G$O!"(B<code>local7</code> $B%U%!%7%j%F%#$H$J$j$^$9$,!"(B - <code>syslog:<var>facility</var></code> $B$H$$$C$?7A$G5-=R$9$k$3$H$K$h$j!"(B - $BDL>o(B syslog(1) $B$N%I%-%e%a%s%H$G@bL@$5$l$F$$$k%U%!%7%j%F%#$N0l$D$r;H$&$h$&$K(B - $B$9$k$3$H$,$G$-$^$9!#(B</p> + <p>ファイル名の変わりに <code>syslog</code> と指定することによって、 + システムがサポートしていれば syslogd(8) を利用したロギングが有効になります。 + デフォルトでは、<code>local7</code> ファシリティとなりますが、 + <code>syslog:<var>facility</var></code> といった形で記述することにより、 + 通常 syslog(1) のドキュメントで説明されているファシリティの一つを使うように + することができます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> ErrorLog syslog:user </example> - <p>$B%;%-%e%j%F%#(B: - $B%m%0%U%!%$%k$r3JG<$9$k%G%#%l%/%H%j$,!"%5!<%P$r5/F0$7$?%f!<%60J30$N(B - $B%f!<%6$K$h$C$F=q$-9~$a$k>l9g$K%;%-%e%j%F%#$,GK$i$l$k2DG=@-$,$"$k$3$H$K(B - $B4X$9$k>\:Y$O(B <a - href="../misc/security_tips.html#serverroot">$B%;%-%e%j%F%#$K4X$9$k%3%D(B</a> $B$r(B - $B;2>H$7$F$/$@$5$$!#(B</p> - <note type="warning"><title>$BCm(B</title> - <p>Unix $B0J30$N%W%i%C%H%U%)!<%`$G%U%!%$%k$N%Q%9$rF~NO$9$k$H$-$O!"(B - $B%W%i%C%H%U%)!<%`$,%P%C%/%9%i%C%7%e$N;HMQ$r5v$7$F$$$?$H$7$F$b!"(B - $B3N<B$K%9%i%C%7%e$N$_$,;HMQ$5$l$k$h$&$KCm0U$7$F$/$@$5$$!#0lHLE*$K$O!"(B - $B@_Dj%U%!%$%kA4HL$G%9%i%C%7%e$N$_$r;H$&J}$,NI$$$G$7$g$&!#(B</p> + <p>セキュリティ: + ログファイルを格納するディレクトリが、サーバを起動したユーザ以外の + ユーザによって書き込める場合にセキュリティが破られる可能性があることに + 関する詳細は <a + href="../misc/security_tips.html#serverroot">セキュリティに関するコツ</a> を + 参照してください。</p> + <note type="warning"><title>注</title> + <p>Unix 以外のプラットフォームでファイルのパスを入力するときは、 + プラットフォームがバックスラッシュの使用を許していたとしても、 + 確実にスラッシュのみが使用されるように注意してください。一般的には、 + 設定ファイル全般でスラッシュのみを使う方が良いでしょう。</p> </note> </usage> <seealso><directive module="core">LogLevel</directive></seealso> -<seealso><a href="../logs.html">Apache $B%m%0%U%!%$%k(B</a></seealso> +<seealso><a href="../logs.html">Apache ログファイル</a></seealso> </directivesynopsis> <directivesynopsis> <name>FileETag</name> -<description>ETag HTTP $B1~Ez%X%C%@$r:n@.$9$k$?$a$K;HMQ$5$l$k(B -$B%U%!%$%k$NB0@-(B</description> +<description>ETag HTTP 応答ヘッダを作成するために使用される +ファイルの属性</description> <syntax>FileETag <var>component</var> ...</syntax> <default>FileETag INode MTime Size</default> <contextlist><context>server config</context><context>virtual host</context> @@ -1084,49 +1084,49 @@ module="core">Directory</directive></seealso> <usage> <p> - <directive>FileETag</directive> $B%G%#%l%/%F%#%V$O(B - $B%I%-%e%a%s%H$,%U%!%$%k$K4p$E$$$?$b$N$G$"$k$H$-$K!"(B - <code>ETag</code> ($B%(%s%F%#%F%#%?%0(B) $B1~Ez%X%C%@%U%#!<%k%I$r:n@.$9$k$H$-$K;HMQ$9$k(B - $B%U%!%$%k$NB0@-$r@_Dj$7$^$9!#(B (<code>ETag</code> $B$NCM$O%M%C%H%o!<%/$NBS0h$r@aLs$9$k$?$a$N(B - $B%-%c%C%7%e$N4IM}$G;H$o$l$^$9!#(B) Apache 1.3.22 $B0JA0$G$O!"(B<code>ETag</code> $B$NCM$O(B - <em>$B>o$K(B</em>$B%U%!%$%k$N(B inode, $B%5%$%:!":G=*=$@5;~9o(B (mtime) $B$+$i:n@.(B - $B$5$l$F$$$^$7$?!#(B<directive>FileETag</directive> $B%G%#%l%/%F%#%V$K$h$j!"$3$l$i$N$I$l$r;H$&$+$r(B - $BA*$V$3$H$,$G$-$^$9!#G'<1$5$l$k%-!<%o!<%I$O(B: + <directive>FileETag</directive> ディレクティブは + ドキュメントがファイルに基づいたものであるときに、 + <code>ETag</code> (エンティティタグ) 応答ヘッダフィールドを作成するときに使用する + ファイルの属性を設定します。 (<code>ETag</code> の値はネットワークの帯域を節約するための + キャッシュの管理で使われます。) Apache 1.3.22 以前では、<code>ETag</code> の値は + <em>常に</em>ファイルの inode, サイズ、最終修正時刻 (mtime) から作成 + されていました。<directive>FileETag</directive> ディレクティブにより、これらのどれを使うかを + 選ぶことができます。認識されるキーワードは: </p> <dl> <dt><strong>INode</strong></dt> - <dd>$B%U%!%$%k$N(B inode $BHV9f$r7W;;$K;H$$$^$9(B</dd> + <dd>ファイルの inode 番号を計算に使います</dd> <dt><strong>MTime</strong></dt> - <dd>$B%U%!%$%k$N:G=*=$@5;~9o$r;H$$$^$9(B</dd> + <dd>ファイルの最終修正時刻を使います</dd> <dt><strong>Size</strong></dt> - <dd>$B%U%!%$%k$NCf?H$N%P%$%H?t$r;H$$$^$9(B</dd> + <dd>ファイルの中身のバイト数を使います</dd> <dt><strong>All</strong></dt> - <dd>$B;HMQ2DG=$J$9$Y$F$N%U%#!<%k%I$r;H$$$^$9!#(B - $B$3$l$O(B <example>FileETag INode MTime Size</example> $B$HEy2A$G$9!#(B</dd> + <dd>使用可能なすべてのフィールドを使います。 + これは <example>FileETag INode MTime Size</example> と等価です。</dd> <dt><strong>None</strong></dt> - <dd>$B%I%-%e%a%s%H$,%U%!%$%k$K4p$E$$$?$b$N$G$b!"(B<code>ETag</code> $B%U%#!<%k%I$r(B - $B1~Ez$KIU2C$7$^$;$s(B</dd> + <dd>ドキュメントがファイルに基づいたものでも、<code>ETag</code> フィールドを + 応答に付加しません</dd> </dl> - <p><code>INode</code>, <code>MTime</code>, <code>Size</code> $B%-!<%o!<%I$K$O(B - <code>+</code> $B$d(B <code>-</code> $B$rA0$KIU$1$F(B - $B;XDj$9$k$3$H$b$G$-$^$9!#$3$N>l9g$O!"$h$j9-$$HO0O$+$i7Q>5$5$l$?(B - $B%G%U%)%k%H$N@_Dj$KJQ99$r2C$($k$h$&$K$J$j$^$9!#$=$N$h$&$J@\F,<-$N(B - $BL5$$%-!<%o!<%I$r;XDj$9$k$H!"B(:B$K7Q>5$7$?@_Dj$rL58z$K$7$^$9!#(B</p> - - <p>$B$"$k%G%#%l%/%H%j$N@_Dj$K(B - <code>FileETag INode MTime Size</code> $B$,$"$j!"(B - $B%5%V%G%#%l%/%H%j$N@_Dj$K(B <code>FileETag -INode</code> $B$,$"$k$H$-$O!"(B - $B$=$N%5%V%G%#%l%/%H%j$N@_Dj$O(B ($B@_Dj$,>e=q$-$5$l$J$1$l$P%5%V%G%#%l%/%H%j$N(B - $B%5%V%G%#%l%/%H%j$K$b7Q>5$5$l$^$9(B) <code>FileETag MTime Size</code> - $B$HF1$8$K$J$j$^$9!#(B</p> + <p><code>INode</code>, <code>MTime</code>, <code>Size</code> キーワードには + <code>+</code> や <code>-</code> を前に付けて + 指定することもできます。この場合は、より広い範囲から継承された + デフォルトの設定に変更を加えるようになります。そのような接頭辞の + 無いキーワードを指定すると、即座に継承した設定を無効にします。</p> + + <p>あるディレクトリの設定に + <code>FileETag INode MTime Size</code> があり、 + サブディレクトリの設定に <code>FileETag -INode</code> があるときは、 + そのサブディレクトリの設定は (設定が上書きされなければサブディレクトリの + サブディレクトリにも継承されます) <code>FileETag MTime Size</code> + と同じになります。</p> </usage> </directivesynopsis> <directivesynopsis type="section"> <name>Files</name> -<description>$B%^%C%A$9$k%U%!%$%kL>$KE,MQ$5$l$k%G%#%l%/%F%#%V$r0O$`(B</description> +<description>マッチするファイル名に適用されるディレクティブを囲む</description> <syntax><Files <var>filename</var>> ... </Files></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context> @@ -1134,58 +1134,58 @@ module="core">Directory</directive></seealso> <override>All</override> <usage> - <p><directive type="section">Files</directive> $B%G%#%l%/%F%#%V$O!"(B - $B$=$NCf$K$"$k%G%#%l%/%F%#%V$NE,MQHO0O$r%U%!%$%kL>$G@)8B$7$^$9!#(B + <p><directive type="section">Files</directive> ディレクティブは、 + その中にあるディレクティブの適用範囲をファイル名で制限します。 <directive module="core" - type="section">Directory</directive> $B%G%#%l%/%F%#%V$d(B <directive - module="core" type="section">Location</directive> $B%G%#%l%/%F%#%V$H(B - $BF1$8$h$&$J5!G=$r;}$A$^$9!#(B - $B$3$l$O!"(B<code></Files></code> $B%G%#%l%/%F%#%V$HBP$K(B - $B$J$C$F$$$J$1$l$P$J$j$^$;$s!#(B - $B$3$N%;%/%7%g%sCf$N%G%#%l%/%F%#%V$O!"%Y!<%9L>(B ($B%U%!%$%kL>$N:G8e$NItJ,(B) - $B$,;XDj$5$l$?%U%!%$%kL>$K%^%C%A$9$k$9$Y$F$N%*%V%8%'%/%H$KE,MQ$5$l$^$9!#(B - <directive type="section">Files</directive> $B%;%/%7%g%s$O(B - <directive type="section">Directory</directive> $B%;%/%7%g%s$H(B - <code>.htaccess</code> $B$,FI$_9~$^$l$?8e!"(B - <directive type="section">Location</directive> $B%;%/%7%g%s$h$j$O@h$K(B - $B@_Dj%U%!%$%k$K8=$l$?=g$KE,MQ$5$l$^$9!#(B - <directive type="section">Files</directive> $B$O!"(B - <directive type="section">Directory</directive> $B%;%/%7%g%sFb$K(B - $B%M%9%H$5$;$k$3$H$,$G$-!"(B - $B%U%!%$%k%7%9%F%`$N0lIt$K$N$_8BDj$7$FE,MQ$5$;$k$3$H$,$G$-$^$9!#(B</p> - - <p><var>filename</var> $B0z?t$O!"%U%!%$%kL>$+%o%$%k%I%+!<%IJ8;zNs(B - $B$G!"%o%$%k%I%+!<%I$G$O(B <code>?</code> $B$O0l$D$NJ8;z!"(B<code>*</code> $B$OG$0U$NJ8;zNs$K%^%C%A$7$^$9!#(B - <code>~</code> $B$H$$$&J8;z$rIU2C$9$k$3$H$G3HD%@55,I=8=$r;H$&$3$H$b$G$-$^$9!#(B - $BNc$($P!"(B</p> + type="section">Directory</directive> ディレクティブや <directive + module="core" type="section">Location</directive> ディレクティブと + 同じような機能を持ちます。 + これは、<code></Files></code> ディレクティブと対に + なっていなければなりません。 + このセクション中のディレクティブは、ベース名 (ファイル名の最後の部分) + が指定されたファイル名にマッチするすべてのオブジェクトに適用されます。 + <directive type="section">Files</directive> セクションは + <directive type="section">Directory</directive> セクションと + <code>.htaccess</code> が読み込まれた後、 + <directive type="section">Location</directive> セクションよりは先に + 設定ファイルに現れた順に適用されます。 + <directive type="section">Files</directive> は、 + <directive type="section">Directory</directive> セクション内に + ネストさせることができ、 + ファイルシステムの一部にのみ限定して適用させることができます。</p> + + <p><var>filename</var> 引数は、ファイル名かワイルドカード文字列 + で、ワイルドカードでは <code>?</code> は一つの文字、<code>*</code> は任意の文字列にマッチします。 + <code>~</code> という文字を付加することで拡張正規表現を使うこともできます。 + 例えば、</p> <example> <Files ~ "\.(gif|jpe?g|png)$"> </example> - <p>$B$H$9$k$3$H$K$h$j!"0lHLE*$J%$%s%?!<%M%C%H$N2hA|%U%)!<%^%C%H$K%^%C%A$7$^$9!#(B - $B$?$@$7!"(B - <directive module="core" type="section">FilesMatch</directive> $B$r;H$&J}$,(B - $B?d>)$5$l$F$$$^$9!#(B</p> + <p>とすることにより、一般的なインターネットの画像フォーマットにマッチします。 + ただし、 + <directive module="core" type="section">FilesMatch</directive> を使う方が + 推奨されています。</p> - <p>$B$A$J$_$K!"(B<directive module="core" type="section" - >Directory</directive> $B$H(B <directive module="core" type="section" - >Location</directive> $B%;%/%7%g%s$H$O0[$J$j!"(B + <p>ちなみに、<directive module="core" type="section" + >Directory</directive> と <directive module="core" type="section" + >Location</directive> セクションとは異なり、 <directive type="section">Files</directive> - $B$O(B <code>.htaccess</code> $B%U%!%$%kFb$GMxMQ$9$k$3$H$,$G$-$^$9!#(B - $B$3$l$K$h$j!"%f!<%6$,%U%!%$%kKh$K%"%/%;%9$N@)8f$r9T$J$&$3$H$,$G$-$k$h$&$K(B - $B$J$C$F$$$^$9!#(B</p> + は <code>.htaccess</code> ファイル内で利用することができます。 + これにより、ユーザがファイル毎にアクセスの制御を行なうことができるように + なっています。</p> </usage> -<seealso>$B%j%/%(%9%H$r<u$1$?:]$K$3$l$i$N0[$J$k%;%/%7%g%s$,(B - $BAH$_9g$o$5$l$kJ}K!$K$D$$$F$O(B <a href="../sections.html"> - <Directory>, <Location>, <Files> $B%;%/%7%g%s$NF0:nK!(B</a></seealso> +<seealso>リクエストを受けた際にこれらの異なるセクションが + 組み合わされる方法については <a href="../sections.html"> + <Directory>, <Location>, <Files> セクションの動作法</a></seealso> </directivesynopsis> <directivesynopsis type="section"> <name>FilesMatch</name> -<description>$B@55,I=8=$K%^%C%A$9$k%U%!%$%kL>$KE,MQ$5$l$k(B -$B%G%#%l%/%F%#%V$r0O$`(B</description> +<description>正規表現にマッチするファイル名に適用される +ディレクティブを囲む</description> <syntax><FilesMatch <var>regex</var>> ... </FilesMatch></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context> @@ -1193,56 +1193,56 @@ module="core">Directory</directive></seealso> <override>All</override> <usage> - <p><directive type="section">FilesMatch</directive> $B%G%#%l%/%F%#%V$O!"(B + <p><directive type="section">FilesMatch</directive> ディレクティブは、 <directive module="core" type="section">Files</directive> - $B%G%#%l%/%F%#%VF1MM$K$=$NCf$K$"$k%G%#%l%/%F%#%V$NE,MQHO0O$r%U%!%$%kL>$G@)8B$7$^$9!#$?$@$7!"(B - $B$3$N%G%#%l%/%F%#%V$K$O@55,I=8=$r;XDj$7$^$9!#(B - $BNc$($P(B:</p> + ディレクティブ同様にその中にあるディレクティブの適用範囲をファイル名で制限します。ただし、 + このディレクティブには正規表現を指定します。 + 例えば:</p> <example> <FilesMatch "\.(gif|jpe?g|png)$"> </example> - <p>$B$O0lHLE*$J%$%s%?!<%M%C%H$N2hA|7A<0$K%^%C%A$7$^$9!#(B</p> + <p>は一般的なインターネットの画像形式にマッチします。</p> </usage> -<seealso>$B%j%/%(%9%H$r<u$1$?:]$K$3$l$i$N0[$J$k%;%/%7%g%s$,(B - $BAH$_9g$o$5$l$kJ}K!$K$D$$$F$O(B <a href="../sections.html"> - <Directory>, <Location>, <Files> $B%;%/%7%g%s$NF0:nK!(B</a></seealso> +<seealso>リクエストを受けた際にこれらの異なるセクションが + 組み合わされる方法については <a href="../sections.html"> + <Directory>, <Location>, <Files> セクションの動作法</a></seealso> </directivesynopsis> <directivesynopsis> <name>ForceType</name> -<description>$B$9$Y$F$N%^%C%A$9$k%U%!%$%k$,;XDj$N(B MIME $B%3%s%F%s%H%?%$%W$G(B -$BAw$i$l$k$h$&$K$9$k(B</description> +<description>すべてのマッチするファイルが指定の MIME コンテントタイプで +送られるようにする</description> <syntax>ForceType <var>MIME-type</var>|None</syntax> <contextlist><context>directory</context><context>.htaccess</context> </contextlist> <override>FileInfo</override> -<compatibility>Apache 2.0 $B$G(B core $B$K0\F0(B</compatibility> +<compatibility>Apache 2.0 で core に移動</compatibility> <usage> - <p><code>.htaccess</code> $B$d(B <directive type="section" module="core" - >Directory</directive> $B%;%/%7%g%s!"(B - <directive type="section" module="core">Location</directive> $B%;%/%7%g%s!"(B - <directive type="section" module="core">Files</directive> $B%;%/%7%g%s$K(B - $B=q$+$l$?>l9g!"$3$N%G%#%l%/%F%#%V$O$=$3$K$"$k$9$Y$F$N%U%!%$%k$,(B + <p><code>.htaccess</code> や <directive type="section" module="core" + >Directory</directive> セクション、 + <directive type="section" module="core">Location</directive> セクション、 + <directive type="section" module="core">Files</directive> セクションに + 書かれた場合、このディレクティブはそこにあるすべてのファイルが <var>MIME-type</var> - $B$G;XDj$5$l$?%3%s%F%s%H%?%$%W$H$7$F07$o$l$k$h$&$K$7$^$9!#$?$H$($P!"(B - GIF $B%U%!%$%k$P$+$j$N%G%#%l%/%H%j$,$"$C$F!"$9$Y$F$N%U%!%$%k$r(B <code>.gif</code> - $B$G=*$o$i$;$?$/$O$J$$$H$-$K!"0J2<$N$b$N$r;HMQ$7$^$9(B:</p> + で指定されたコンテントタイプとして扱われるようにします。たとえば、 + GIF ファイルばかりのディレクトリがあって、すべてのファイルを <code>.gif</code> + で終わらせたくはないときに、以下のものを使用します:</p> <example> ForceType image/gif </example> - <p><directive module="core">DefaultType</directive> $B$H0c$C$F(B - $B$3$N%G%#%l%/%F%#%V$O%a%G%#%"%?%$%W$r7h$a$k$3$H$,$G$-$k$+$b$7$l$J$$(B - $B%U%!%$%k$N3HD%;R$b4^$a!"$9$Y$F$N(B MIME $B%?%$%W$N4XO"IU$1$r(B - $B>e=q$-$9$k$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + <p><directive module="core">DefaultType</directive> と違って + このディレクティブはメディアタイプを決めることができるかもしれない + ファイルの拡張子も含め、すべての MIME タイプの関連付けを + 上書きすることに注意してください。</p> - <p><code>None</code> $B$H$$$&CM$r;H$&$3$H$G(B <directive>ForceType</directive> $B$N(B - $B@_Dj$rL58z$K$G$-$^$9(B:</p> + <p><code>None</code> という値を使うことで <directive>ForceType</directive> の + 設定を無効にできます:</p> <example> # force all files to be image/gif:<br /> @@ -1264,52 +1264,52 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>HostnameLookups</name> -<description>$B%/%i%$%"%s%H$N(B IP $B%"%I%l%9$N(B DNS $B%k%C%/%"%C%W$r(B -$BM-8z$K$9$k(B</description> +<description>クライアントの IP アドレスの DNS ルックアップを +有効にする</description> <syntax>HostnameLookups On|Off|Double</syntax> <default>HostnameLookups Off</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context></contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"%[%9%HL>$r%m%0<}=8$G$-$k$h$&$K(B - DNS $B%k%C%/%"%C%W$rM-8z$K$7$^$9(B - ($B$5$i$K!"(BCGI/SSI $B$K(B <code>REMOTE_HOST</code> $BJQ?t$H$7$FEO$7$^$9(B)$B!#(B - <code>Double</code>$B$r;XDj$7$?>l9g!"(B2 $B=E$N5U0z$-$r9T$J$$$^$9!#(B - $B$D$^$j!"5U0z$-$N8e$K!"$=$N7k2L$KBP$7$F@50z$-$r9T$J$$$^$9!#@50z$-$N(B - $B7k2L$N(B IP $B%"%I%l%9$NCf$K%*%j%8%J%k$N%"%I%l%9$H0lCW$9$k$b$N$,$J$1$l$P(B - $B$J$j$^$;$s!#(B("tcpwrappers" $B$NMQ8l$G$O(B PARANOID $B$H8F$P$l$F$$$^$9!#(B)</p> - - <p><module>mod_authz_host</module> $B$G%[%9%HL>$K$h$k%"%/%;%9(B - $B@)8f$r9T$J$&>l9g$K$O!"(B - $B@_Dj$NG!2?$K$h$i$:(B 2 $B=E$N5U0z$-$,<B9T$5$l$^$9!#(B - $B$3$l$O!"%;%-%e%j%F%#$rJ]$D$?$a$KI,MW$G$9!#(B - <code>HostnameLookups Double</code> $B$r@_Dj$7$J$$8B$j!"(B - $BB>$NItJ,$O$3$N(B 2 $B=E5U0z$-$N7k2L$r;H$&$3$H$O$G$-$^$;$s!#(B - $BNc$($P!"(B<code>HostnameLookups On</code> $B$H@_Dj$7$F$"$k>uBV$G!"(B - $B%[%9%HL>$K$h$k%"%/%;%9@)8B$r9T$J$C$?%*%V%8%'%/%H$X$N(B - $B%j%/%(%9%H$r<u$1$?$H$9$k$H!"(B2 $B=E$N5U0z$-$,@.8y$9$k$+H]$+$K$h$i$:!"(B - <code>REMOTE_HOST</code> $B$K$ODL>o$N5U0z$-7k2L$,EO$5$l$^$9!#(B</p> - - <p>$B%G%#%l%/%F%#%V$N%G%U%)%k%H$O(B - $BK\Ev$K5U0z$-$rI,MW$H$7$F$$$k$o$1$G$O$J$$%5%$%H$N(B - $B%M%C%H%o!<%/%H%i%U%#%C%/$rDc8:$5$;$k$?$a$K!"(B<code>Off</code> $B$K$J$C$F$$$^$9!#(B - $B%k%C%/%"%C%W$K$h$kM>7W$JCY1d$,$J$/$J$k$?$a!"(B - $B%(%s%I%f!<%6$K$H$C$F$bNI$$$G$7$g$&!#(B - DNS $B$N%k%C%/%"%C%W$K$O!"$+$J$j$N;~4V$,I,MW$H$J$k>l9g$,B?$/!"(B - $BIi2Y$N9b$$%5%$%H$G$O$3$N%G%#%l%/%F%#%V$O(B <code>Off</code> $B$K$9$Y$-$G$9!#(B - $B$J$*!"(B<var>/support</var> $B%G%#%l%/%H%j$K4^$^$l!"%G%U%)%k%H$G$O(B - $B%$%s%9%H!<%k%G%#%l%/%H%j$N(B <code>bin</code> $B%5%V%G%#%l%/%H%j$K(B - $B%$%s%9%H!<%k$5$l$k(B <program>logresolve</program> $B%f!<%F%#%j%F%#$K$h$j!"(B - Apache $B$NF0:n$H$OJL$K!"%m%0$K;D$5$l$F$$$k(B IP $B%"%I%l%9$+$i%[%9%HL>$r(B - $B%k%C%/%"%C%W$9$k$3$H$,2DG=$G$9!#(B</p> + <p>このディレクティブは、ホスト名をログ収集できるように + DNS ルックアップを有効にします + (さらに、CGI/SSI に <code>REMOTE_HOST</code> 変数として渡します)。 + <code>Double</code>を指定した場合、2 重の逆引きを行ないます。 + つまり、逆引きの後に、その結果に対して正引きを行ないます。正引きの + 結果の IP アドレスの中にオリジナルのアドレスと一致するものがなければ + なりません。("tcpwrappers" の用語では PARANOID と呼ばれています。)</p> + + <p><module>mod_authz_host</module> でホスト名によるアクセス + 制御を行なう場合には、 + 設定の如何によらず 2 重の逆引きが実行されます。 + これは、セキュリティを保つために必要です。 + <code>HostnameLookups Double</code> を設定しない限り、 + 他の部分はこの 2 重逆引きの結果を使うことはできません。 + 例えば、<code>HostnameLookups On</code> と設定してある状態で、 + ホスト名によるアクセス制限を行なったオブジェクトへの + リクエストを受けたとすると、2 重の逆引きが成功するか否かによらず、 + <code>REMOTE_HOST</code> には通常の逆引き結果が渡されます。</p> + + <p>ディレクティブのデフォルトは + 本当に逆引きを必要としているわけではないサイトの + ネットワークトラフィックを低減させるために、<code>Off</code> になっています。 + ルックアップによる余計な遅延がなくなるため、 + エンドユーザにとっても良いでしょう。 + DNS のルックアップには、かなりの時間が必要となる場合が多く、 + 負荷の高いサイトではこのディレクティブは <code>Off</code> にすべきです。 + なお、<var>/support</var> ディレクトリに含まれ、デフォルトでは + インストールディレクトリの <code>bin</code> サブディレクトリに + インストールされる <program>logresolve</program> ユーティリティにより、 + Apache の動作とは別に、ログに残されている IP アドレスからホスト名を + ルックアップすることが可能です。</p> </usage> </directivesynopsis> <directivesynopsis type="section"> <name>IfDefine</name> -<description>$B5/F0;~$K%F%9%H$,??$G$"$k$H$-$N$_$K=hM}$5$l$k%G%#%l%/%F%#%V$r(B -$B0O$`(B</description> +<description>起動時にテストが真であるときのみに処理されるディレクティブを +囲む</description> <syntax><IfDefine [!]<var>parameter-name</var>> ... </IfDefine></syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -1319,17 +1319,17 @@ module="core">Directory</directive></seealso> <usage> <p><code><IfDefine <var>test</var>>...</IfDefine></code> - $B%;%/%7%g%s$O!"(B - $B%G%#%l%/%F%#%V$r>r7oIU$-$G;XDj$9$k$?$a$KMxMQ$7$^$9!#(B - <directive type="section">IfDefine</directive> $B%;%/%7%g%s$K(B - $B4^$^$l$k%G%#%l%/%F%#%V$O!"(B<var>test</var>$B$,(B - $BDj5A$5$l$F$$$k$H$-$N$_=hM}$5$l$^$9!#(B - $B$b$7(B <var>test</var> $B$,Dj5A$5$l$F$$$J$1$l$P!"(B - $B3+;O$H=*N;$N;XDj$N4V$N%G%#%l%/%F%#%V$OL5;k$5$l$^$9!#(B</p> - - <p><directive type="section">IfDefine</directive> $B%;%/%7%g%s%G%#%l%/%F%#%V$K(B - $B;XDj$9$k(B <var>test</var> $B$O!"(B - $B<!$NFs$D$N7A<0$N$&$A$N0l$D$r$H$j$^$9(B:</p> + セクションは、 + ディレクティブを条件付きで指定するために利用します。 + <directive type="section">IfDefine</directive> セクションに + 含まれるディレクティブは、<var>test</var>が + 定義されているときのみ処理されます。 + もし <var>test</var> が定義されていなければ、 + 開始と終了の指定の間のディレクティブは無視されます。</p> + + <p><directive type="section">IfDefine</directive> セクションディレクティブに + 指定する <var>test</var> は、 + 次の二つの形式のうちの一つをとります:</p> <ul> <li><var>parameter-name</var></li> @@ -1337,18 +1337,18 @@ module="core">Directory</directive></seealso> <li><code>!</code><var>parameter-name</var></li> </ul> - <p>$BA0<T$N>l9g$K$O!"(B<var>parameter-name</var> $B$HL>IU$1$i$l$?%Q%i%a!<%?$,(B - $BDj5A$5$l$F$$$l$P3+;O$H=*N;$N4V$N%G%#%l%/%F%#%V$,=hM}$5$l$^$9!#(B - $B8e<T$N>l9g$O5U$G!"(B<em>parameter-name</em> $B$,;XDj$5$l$F(B<strong>$B$$$J$$(B</strong> - $B>l9g$K=hM}$5$l$^$9!#(B</p> + <p>前者の場合には、<var>parameter-name</var> と名付けられたパラメータが + 定義されていれば開始と終了の間のディレクティブが処理されます。 + 後者の場合は逆で、<em>parameter-name</em> が指定されて<strong>いない</strong> + 場合に処理されます。</p> - <p><var>parameter-name</var> $B0z?t$O!"%5!<%P$r5/F0$9$k:]$K(B - <program>httpd</program> $B$N%3%^%s%I%i%$%s$K(B - <code>-D<var>parameter-</var></code> $B$H$$$&7A$G;XDj$9$k$HDj5A$5$l$^$9!#(B </p> + <p><var>parameter-name</var> 引数は、サーバを起動する際に + <program>httpd</program> のコマンドラインに + <code>-D<var>parameter-</var></code> という形で指定すると定義されます。 </p> - <p><directive type="section">IfDefine</directive> $B%;%/%7%g%s$O(B - $BF~$l;R$K$9$k$3$H$,$G$-!"J#?t$N%Q%i%a!<%?$K$h$k%F%9%H$r$9$k$?$a$K;HMQ$G$-$^$9!#(B - $BNc(B:</p> + <p><directive type="section">IfDefine</directive> セクションは + 入れ子にすることができ、複数のパラメータによるテストをするために使用できます。 + 例:</p> <example> httpd -DReverseProxy ...<br /> @@ -1366,29 +1366,29 @@ module="core">Directory</directive></seealso> <directivesynopsis type="section"> <name>IfModule</name> -<description>$B%b%8%e!<%k$NB8:_$9$k$+$7$J$$$+$K1~$8$F=hM}$5$l$k(B -$B%G%#%l%/%F%#%V$r0O$`(B</description> +<description>モジュールの存在するかしないかに応じて処理される +ディレクティブを囲む</description> <syntax><IfModule [!]<var>module-file</var>|<var>module-identifier</var>> ... </IfModule></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context> </contextlist> <override>All</override> -<compatibility>$B%b%8%e!<%k<1JL;R$O%P!<%8%g%s(B 2.1 $B0J9_$G;HMQ2DG=!#(B</compatibility> +<compatibility>モジュール識別子はバージョン 2.1 以降で使用可能。</compatibility> <usage> <p><code><IfModule <var>test</var>>...</IfModule></code> - $B%;%/%7%g%s$O!"%b%8%e!<%k$,B8:_$9$k$H$-$K=hM}$5$l$k%G%#%l%/%F%#%V$r(B - $B;XDj$9$k$?$a$KMxMQ$7$^$9!#(B - <directive type="section">IfModule</directive> $B%;%/%7%g%s$K(B - $B4^$^$l$k%G%#%l%/%F%#%V$O!"(B<var>test</var> - $B$G;XDj$9$k%b%8%e!<%k$,AH$_9~$^$l$F$$$k$H$-$N$_=hM}$5$l$^$9!#(B - $B$b$7(B <var>test</var> $B$,AH$_9~$^$l$F$$$J$1$l$P!"3+;O$H=*N;$N4V$N%G%#%l%/%F%#%V(B - $B$OL5;k$5$l$^$9!#(B</p> - - <p><directive type="section">IfModule</directive> $B%;%/%7%g%s%G%#%l%/%F%#%V$K(B - $B;XDj$9$k(B <var>test</var> $B$O!"(B - $B<!$NFs$D$N7A<0$N$&$A$N0l$D$r$H$j$^$9!#(B</p> + セクションは、モジュールが存在するときに処理されるディレクティブを + 指定するために利用します。 + <directive type="section">IfModule</directive> セクションに + 含まれるディレクティブは、<var>test</var> + で指定するモジュールが組み込まれているときのみ処理されます。 + もし <var>test</var> が組み込まれていなければ、開始と終了の間のディレクティブ + は無視されます。</p> + + <p><directive type="section">IfModule</directive> セクションディレクティブに + 指定する <var>test</var> は、 + 次の二つの形式のうちの一つをとります。</p> <ul> <li><var>module</var></li> @@ -1396,77 +1396,77 @@ module="core">Directory</directive></seealso> <li>!<var>module</var></li> </ul> - <p>$BA0<T$N>l9g$O!"(B<var>module</var> $B$HL>IU$1$i$l$?%b%8%e!<%k$,(B - Apache $B$KAH$_9~$^$l$F$$$l$P(B - ($B%3%s%Q%$%k:Q$_$N$b$N$H!"(B<directive - module="mod_so">LoadModule</directive> $B$rMxMQ$7$F(B - $BF0E*$KFI$_9~$s$@$b$N$NN>J}(B)$B!"(B - $B3+;O$H=*N;$N4V$N%G%#%l%/%F%#%V$,=hM}$5$l$^$9!#(B - $B8e<T$N>l9g$O5U$G!"(B<var>module</var> $B$,AH$_9~$^$l$F(B<strong>$B$$$J$$(B</strong> - $B>l9g$K=hM}$5$l$^$9!#(B</p> - - <p><var>module</var> $B0z?t$O!"%b%8%e!<%k<1JL;R$+(B - $B%3%s%Q%$%k$r$7$?;~$N%b%8%e!<%k$N%U%!%$%kL>$G$9!#(B - $BNc$($P!"(B<code>rewrite_module</code> $B$O<1JL;R$G(B - <code>mod_rewrite.c</code> $B$O%U%!%$%kL>$G$9!#(B - $B%b%8%e!<%k$,J#?t$N%=!<%9%U%!%$%k$+$i9=@.$5$l$F$$$k>l9g$O!"J8;zNs(B - <code>STANDARD20_MODULE_STUFF</code> $B$,$"$k%U%!%$%k$NL>A0$r(B - $B;H$C$F$/$@$5$$!#(B</p> - - <p><directive type="section">IfModule</directive> $B%;%/%7%g%s$O(B - $BF~$l;R$K$9$k$3$H$,2DG=$G$"$j!"(B - $BJ#?t$N%b%8%e!<%k$N%F%9%H$r9T$J$&$?$a$K;HMQ$G$-$^$9!#(B</p> - - <note>$BFCDj$N%b%8%e!<%k$NB8:_$K4X$o$i$:F0:n$9$k(B - $B@_Dj%U%!%$%k$N86K\$,I,MW$J$H$-$K$N$_$3$N%;%/%7%g%s$r;HMQ$7$F$/$@$5$$!#(B - $BDL>o$NF0:n$G$O!"%G%#%l%/%F%#%V$r(B - <directive type="section">IfModule</directive> $B%;%/%7%g%s$NCf$K(B - $BF~$l$kI,MW$O$"$j$^$;$s!#(B</note> + <p>前者の場合は、<var>module</var> と名付けられたモジュールが + Apache に組み込まれていれば + (コンパイル済みのものと、<directive + module="mod_so">LoadModule</directive> を利用して + 動的に読み込んだものの両方)、 + 開始と終了の間のディレクティブが処理されます。 + 後者の場合は逆で、<var>module</var> が組み込まれて<strong>いない</strong> + 場合に処理されます。</p> + + <p><var>module</var> 引数は、モジュール識別子か + コンパイルをした時のモジュールのファイル名です。 + 例えば、<code>rewrite_module</code> は識別子で + <code>mod_rewrite.c</code> はファイル名です。 + モジュールが複数のソースファイルから構成されている場合は、文字列 + <code>STANDARD20_MODULE_STUFF</code> があるファイルの名前を + 使ってください。</p> + + <p><directive type="section">IfModule</directive> セクションは + 入れ子にすることが可能であり、 + 複数のモジュールのテストを行なうために使用できます。</p> + + <note>特定のモジュールの存在に関わらず動作する + 設定ファイルの原本が必要なときにのみこのセクションを使用してください。 + 通常の動作では、ディレクティブを + <directive type="section">IfModule</directive> セクションの中に + 入れる必要はありません。</note> </usage> </directivesynopsis> <directivesynopsis> <name>Include</name> -<description>$B%5!<%P@_Dj%U%!%$%kCf$+$iB>$N@_Dj%U%!%$%k$r<h$j9~$`(B</description> +<description>サーバ設定ファイル中から他の設定ファイルを取り込む</description> <syntax>Include <var>file-path</var>|<var>directory-path</var></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context> </contextlist> -<compatibility>$B%o%$%k%I%+!<%I$K$h$k%^%C%A$O(B 2.0.41 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>ワイルドカードによるマッチは 2.0.41 以降で使用可能</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$K$h$j!"%5!<%P$N@_Dj%U%!%$%k$+$i(B - $BB>$N@_Dj%U%!%$%k$r%$%s%/%k!<%I$9$k$3$H$,$G$-$^$9!#(B</p> + <p>このディレクティブにより、サーバの設定ファイルから + 他の設定ファイルをインクルードすることができます。</p> - <p>$BJ#?t$N%U%!%$%k$r%"%k%U%!%Y%C%H=g$K0lEY$KFI$_9~$`$?$a$K!"(B - $B%7%'%k7A<0(B (<code>fnmatch</code>) $B$N%o%$%k%I%+!<%IJ8;z$r;H$&$3$H$,$G$-$^$9!#(B - $B$5$i$K!"(B<directive>Include</directive> $B$K%G%#%l%/%H%j$r;XDj$7$?>l9g$O!"(B - $B%G%#%l%/%H%j$H$=$N%5%V%G%#%l%/%H%jFb$NA4$F$N%U%!%$%k$r(B - $B%"%k%U%!%Y%C%H=g$KFI$_9~$s$G!"@_Dj%U%!%$%k$H$7$F=hM}$7$^$9!#(B - $B$7$+$7!"%G%#%l%/%H%jA4BN$rFI$_9~$`$N$O$*4+$a$G$-$^$;$s!#(B - $B$U$H$7$?$3$H$+$i(B <code>httpd</code> $B$,FI$_9~$_$K<:GT$9$k$h$&$J(B - $B0l;~%U%!%$%k$r%G%#%l%/%H%j$K;D$7$F$7$^$&$h$&$J$3$H$,$h$/$"$k$+$i$G$9!#(B</p> + <p>複数のファイルをアルファベット順に一度に読み込むために、 + シェル形式 (<code>fnmatch</code>) のワイルドカード文字を使うことができます。 + さらに、<directive>Include</directive> にディレクトリを指定した場合は、 + ディレクトリとそのサブディレクトリ内の全てのファイルを + アルファベット順に読み込んで、設定ファイルとして処理します。 + しかし、ディレクトリ全体を読み込むのはお勧めできません。 + ふとしたことから <code>httpd</code> が読み込みに失敗するような + 一時ファイルをディレクトリに残してしまうようなことがよくあるからです。</p> - <p>$B;XDj$9$k%U%!%$%k%Q%9$O@dBP%Q%9$+!"(B - <directive module="core">ServerRoot</directive> $B%G%#%l%/%H%j$+$i$N(B - $BAjBP%Q%9$+!"$N$I$A$i$+$G$9!#(B</p> + <p>指定するファイルパスは絶対パスか、 + <directive module="core">ServerRoot</directive> ディレクトリからの + 相対パスか、のどちらかです。</p> - <p>$BNc(B:</p> + <p>例:</p> <example> Include /usr/local/apache2/conf/ssl.conf<br /> Include /usr/local/apache2/conf/vhosts/*.conf </example> - <p><directive module="core">ServerRoot</directive> $B$+$i$NAjBP%Q%9$N>l9g$O(B:</p> + <p><directive module="core">ServerRoot</directive> からの相対パスの場合は:</p> <example> Include conf/ssl.conf<br /> Include conf/vhosts/*.conf </example> - <p><code>apachectl configtest</code> $B$r<B9T$9$k$H!"@_Dj$r%A%'%C%/$7$F$$$k;~$K(B - $BFI$_9~$^$l$?%U%!%$%k$N%j%9%H$,I=<($5$l$^$9(B:</p> + <p><code>apachectl configtest</code> を実行すると、設定をチェックしている時に + 読み込まれたファイルのリストが表示されます:</p> <example> root@host# apachectl configtest<br /> @@ -1482,32 +1482,32 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>KeepAlive</name> -<description>HTTP $B$N;}B3E*$J@\B3$rM-8z$K$9$k(B</description> +<description>HTTP の持続的な接続を有効にする</description> <syntax>KeepAlive On|Off</syntax> <default>KeepAlive On</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>HTTP/1.0 $B$N(B Keep-Alive $B3HD%$H(B HTTP/1.1 $B$N;}B3E*@\B3$N5!G=$O!"(B - $BJ#?t$N%j%/%(%9%H$,F1$8(B TCP $B$N@\B3$GAw$i$l$k!"D9;~4V;}B3$9$k(B - HTTP $B%;%C%7%g%s$rDs6!$7$^$9!#$?$/$5$s$N2hA|$,(B - $B4^$^$l$k(B HTML $B%I%-%e%a%s%H$G$O>l9g$K$h$C$F$OCY1d;~4V$,(B 50% $BC;=L$5$l$k7k2L$b(B - $B$G$F$$$^$9!#(BKeep-Alive $B@\B3$rM-8z$K$9$k$K$O(B - <code>KeepAlive On</code> $B$H@_Dj$7$^$9!#(B</p> - - <p>HTTP/1.0 $B$KBP1~$7$?%/%i%$%"%s%H$N:]$K$O!"(B - $B%/%i%$%"%s%H$h$jFC$KMW5a$,$"$C$?>l9g$N$_(B Keep-Alive $B@\B3$H$J$j$^$9!#(B - $B$5$i$K!"(BHTTP/1.0 $B%/%i%$%"%s%H$G$O!"%3%s%F%s%D$NMFNL$,@h$K(B - ($BLuCm(B: $BMW5a$KBP$7$F1~Ez$rJV$9A0$K(B) $B$o$+$k>l9g$N$_(B Keep-Alive - $B@\B3$rMxMQ$G$-$^$9!#(B - $B$3$l$O!"(BCGI $B$N=PNO$d(B SSI $B$N%Z!<%8!"(B - $B%5!<%P$,@8@.$7$?%G%#%l%/%H%j$N%j%9%H$N$h$&$JF0E*%3%s%F%s%D$r(B - HTTP/1.0 $B%/%i%$%"%s%H$KAw$k>l9g$K$O(B Keep-Alive $B@\B3$r;H$($J$$$3$H$r0UL#$7$^$9!#(B - HTTP/1.1 $B$KBP1~$7$?%/%i%$%"%s%H$N:]$K$O!"(B - $BFC$K;XDj$5$l$J$$8B$j$O%G%U%)%k%H$H$7$F;}B3E*$J@\B3$,9T$J$o$l$^$9!#(B - $B%/%i%$%"%s%H$,MW5a$9$l$P!"%3%s%F%s%D$NMFNL$rH=JL$G$-$J$$$b$N$r(B - $B;}B3E*$J@\B3$rDL$7$FAw$k$?$a$K!"%A%c%s%/%(%s%3!<%G%#%s%0$,MQ$$$i$l$^$9!#(B</p> + <p>HTTP/1.0 の Keep-Alive 拡張と HTTP/1.1 の持続的接続の機能は、 + 複数のリクエストが同じ TCP の接続で送られる、長時間持続する + HTTP セッションを提供します。たくさんの画像が + 含まれる HTML ドキュメントでは場合によっては遅延時間が 50% 短縮される結果も + でています。Keep-Alive 接続を有効にするには + <code>KeepAlive On</code> と設定します。</p> + + <p>HTTP/1.0 に対応したクライアントの際には、 + クライアントより特に要求があった場合のみ Keep-Alive 接続となります。 + さらに、HTTP/1.0 クライアントでは、コンテンツの容量が先に + (訳注: 要求に対して応答を返す前に) わかる場合のみ Keep-Alive + 接続を利用できます。 + これは、CGI の出力や SSI のページ、 + サーバが生成したディレクトリのリストのような動的コンテンツを + HTTP/1.0 クライアントに送る場合には Keep-Alive 接続を使えないことを意味します。 + HTTP/1.1 に対応したクライアントの際には、 + 特に指定されない限りはデフォルトとして持続的な接続が行なわれます。 + クライアントが要求すれば、コンテンツの容量を判別できないものを + 持続的な接続を通して送るために、チャンクエンコーディングが用いられます。</p> </usage> <seealso><directive module="core">MaxKeepAliveRequests</directive></seealso> @@ -1515,29 +1515,29 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>KeepAliveTimeout</name> -<description>$B;}B3E*$J@\B3$G<!$N%j%/%(%9%H$,Mh$k$^$G%5!<%P$,BT$D;~4V(B</description> +<description>持続的な接続で次のリクエストが来るまでサーバが待つ時間</description> <syntax>KeepAliveTimeout <var>seconds</var></syntax> <default>KeepAliveTimeout 5</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$B@\B3$rJD$8$kA0$K!"(BApache $B$,<!$N%j%/%(%9%H$r2?ICBT$D$+$r;XDj$7$^$9!#(B - $B%j%/%(%9%H$r<u$1IU$1$?8e$O!"(B<directive - module="core">Timeout</directive> $B%G%#%l%/%F%#%V$K$h$C$F(B - $B;XDj$5$l$?%?%$%`%"%&%HCM$,;H$o$l$^$9!#(B</p> - - <p><directive>KeepAliveTimeout</directive> $B$rBg$-$JCM$K@_Dj$9$k$H!"(B - $BIi2Y$N9b$$%5!<%P$K$*$$$F$O%Q%U%)!<%^%s%9$NLdBj$r0z$-5/$3$9>l9g$,$"$j$^$9!#(B - $B%?%$%`%"%&%H$,D9$1$l$PD9$$$[$I!"$h$jB?$/$N%5!<%P%W%m%;%9$,(B - $B3hH/$G$J$$%/%i%$%"%s%H$+$i$N@\B3$N=*N;$rBT$AB3$1$k$3$H$K$J$j$^$9!#(B</p> + <p>接続を閉じる前に、Apache が次のリクエストを何秒待つかを指定します。 + リクエストを受け付けた後は、<directive + module="core">Timeout</directive> ディレクティブによって + 指定されたタイムアウト値が使われます。</p> + + <p><directive>KeepAliveTimeout</directive> を大きな値に設定すると、 + 負荷の高いサーバにおいてはパフォーマンスの問題を引き起こす場合があります。 + タイムアウトが長ければ長いほど、より多くのサーバプロセスが + 活発でないクライアントからの接続の終了を待ち続けることになります。</p> </usage> </directivesynopsis> <directivesynopsis type="section"> <name>Limit</name> -<description>$B0O$$$NCf$K$"$k%"%/%;%9@)8f$NE,MQ$rFCDj$N(B HTTP $B%a%=%C%I$N$_$K(B -$B@)8B$9$k(B</description> +<description>囲いの中にあるアクセス制御の適用を特定の HTTP メソッドのみに +制限する</description> <syntax><Limit <var>method</var> [<var>method</var>] ... > ... </Limit></syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -1546,19 +1546,19 @@ module="core">Directory</directive></seealso> <override>All</override> <usage> - <p>$B%"%/%;%9@)8f$O!"DL>o(B<strong>$BA4$F$N(B</strong>$B%"%/%;%9%a%=%C%I$KBP$7$F(B - $B1F6A$7!"IaDL$O$3$l$,K>$^$7$$5sF0$G$9!#(B - <strong>$B$=$&$7$?$3$H$+$i!"BgItJ,$N>l9g$K$O%"%/%;%9@)8f$K4X$o$k%G%#%l%/%F%#%V$r(B - <directive type="section">Limit</directive> $B%;%/%7%g%sFb$K(B - $B=q$/$Y$-$G$O$"$j$^$;$s!#(B </strong></p> - - <p><directive type="section">Limit</directive> $B%G%#%l%/%F%#%V$N(B - $BL\E*$O!"%"%/%;%9@)8f$NHO0O$r(B - $B;XDj$5$l$?(B HTTP $B%a%=%C%I$K8BDj$9$k$?$a$G$9!#(B - $B$=$l0J30$N%a%=%C%I$O!"(B<directive type="section">Limit</directive> $B$G0O$o$l$?%"%/%;%9@)8f$N(B - <strong>$B1F6A$r<u$1$^$;$s(B</strong>$B!#(B - $B0J2<$NNc$O!"(B<code>POST</code>, <code>PUT</code>, <code>DELETE</code> $B$N%a%=%C%I$KBP$7$F$N$_%"%/%;%9$N@)8f$r9T$J$$!"(B - $B$=$l0J30$N%a%=%C%I$K$D$$$F$O@)8B$7$^$;$s(B:</p> + <p>アクセス制御は、通常<strong>全ての</strong>アクセスメソッドに対して + 影響し、普通はこれが望ましい挙動です。 + <strong>そうしたことから、大部分の場合にはアクセス制御に関わるディレクティブを + <directive type="section">Limit</directive> セクション内に + 書くべきではありません。 </strong></p> + + <p><directive type="section">Limit</directive> ディレクティブの + 目的は、アクセス制御の範囲を + 指定された HTTP メソッドに限定するためです。 + それ以外のメソッドは、<directive type="section">Limit</directive> で囲われたアクセス制御の + <strong>影響を受けません</strong>。 + 以下の例は、<code>POST</code>, <code>PUT</code>, <code>DELETE</code> のメソッドに対してのみアクセスの制御を行ない、 + それ以外のメソッドについては制限しません:</p> <example> <Limit POST PUT DELETE><br /> @@ -1568,31 +1568,31 @@ module="core">Directory</directive></seealso> </Limit> </example> - <p>$B%a%=%C%IL>$K$O0J2<$NCf$+$i0l$D0J>e$rNs5s$9$k$3$H$,$G$-$^$9(B: + <p>メソッド名には以下の中から一つ以上を列挙することができます: <code>GET</code>, <code>POST</code>, <code>PUT</code>, <code>DELETE</code>, <code>CONNECT</code>, <code>OPTIONS</code>, <code>PATCH</code>, <code>PROPFIND</code>, <code>PROPPATCH</code>, <code>MKCOL</code>, <code>COPY</code>, <code>MOVE</code>, - <code>LOCK</code>, <code>UNLOCK</code>. <strong>$B%a%=%C%IL>$O(B - $BBgJ8;z>.J8;z$r6hJL$7$^$9!#(B</strong> <code>GET</code> $B$r;XDj$7$?>l9g$K$O(B - <code>HEAD</code> $B%j%/%(%9%H$K$b@)8B$,$+$+$j$^$9!#(B<code>TRACE</code> - $B%a%=%C%I$K@)8B$r$+$1$k$3$H$O$G$-$^$;$s!#(B</p> + <code>LOCK</code>, <code>UNLOCK</code>. <strong>メソッド名は + 大文字小文字を区別します。</strong> <code>GET</code> を指定した場合には + <code>HEAD</code> リクエストにも制限がかかります。<code>TRACE</code> + メソッドに制限をかけることはできません。</p> - <note type="warning">$B%"%/%;%9@)8f$,L\E*$N>l9g$O(B + <note type="warning">アクセス制御が目的の場合は <directive type="section" module="core">Limit</directive> - $B%;%/%7%g%s$NBe$o$j$K(B <directive type="section" - module="core">LimitExcept</directive> $B%;%/%7%g%s$r;HMQ$7$?J}$,NI$$$G$7$g$&!#(B + セクションの代わりに <directive type="section" + module="core">LimitExcept</directive> セクションを使用した方が良いでしょう。 <directive type="section" module="core">LimitExcept</directive> - $B%;%/%7%g%s$G$OITFCDj$N%a%=%C%I$KBP$7$F$bKI8f$G$-$k$+$i$G$9!#(B</note> + セクションでは不特定のメソッドに対しても防御できるからです。</note> </usage> </directivesynopsis> <directivesynopsis type="section"> <name>LimitExcept</name> -<description>$B;XDj$5$l$?$b$N0J30$N(B HTTP $B%a%=%C%I$K%"%/%;%9@)8f$r(B -$B@)8B$9$k(B</description> +<description>指定されたもの以外の HTTP メソッドにアクセス制御を +制限する</description> <syntax><LimitExcept <var>method</var> [<var>method</var>] ... > ... </LimitExcept></syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -1601,18 +1601,18 @@ module="core">Directory</directive></seealso> <override>All</override> <usage> - <p><directive type="section">LimitExcept</directive> $B$H(B - <code></LimitExcept></code> $B$O!"0z?t$K(B - <strong>$B4^$^$l$F$$$J$$(B</strong> - HTTP $B$N%"%/%;%9%a%=%C%I$KE,MQ$9$k$?$a$N%"%/%;%9@)8f(B - $B%G%#%l%/%F%#%V$r3g$k$?$a$KMxMQ$7$^$9!#(B - $B$D$^$j!"(B<directive type="section" module="core" - >Limit</directive> $B%;%/%7%g%s$NH?BP$NF0:n$r$7!"(B - $BI8=`$N%a%=%C%I$HI8=`30$dL$G'<1$N%a%=%C%I$N>l9g$NN>J}$r@_Dj$G$-$^$9!#(B - <directive type="section" module="core">Limit</directive> $B$N%I%-%e%a%s%H$b(B - $BJ;$;$F;2>H$7$F$/$@$5$$!#(B</p> - - <p>$BNc(B:</p> + <p><directive type="section">LimitExcept</directive> と + <code></LimitExcept></code> は、引数に + <strong>含まれていない</strong> + HTTP のアクセスメソッドに適用するためのアクセス制御 + ディレクティブを括るために利用します。 + つまり、<directive type="section" module="core" + >Limit</directive> セクションの反対の動作をし、 + 標準のメソッドと標準外や未認識のメソッドの場合の両方を設定できます。 + <directive type="section" module="core">Limit</directive> のドキュメントも + 併せて参照してください。</p> + + <p>例:</p> <example> <LimitExcept POST GET><br /> @@ -1627,33 +1627,33 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>LimitInternalRecursion</name> -<description>$BFbIt%j%@%$%l%/%H$HF~$l;R$K$J$C$?%5%V%j%/%(%9%H$N:GBg?t$r7hDj$9$k(B</description> +<description>内部リダイレクトと入れ子になったサブリクエストの最大数を決定する</description> <syntax>LimitInternalRecursion <var>number</var> [<var>number</var>]</syntax> <default>LimitInternalRecursion 10</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>Apache 2.0.47 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>Apache 2.0.47 以降で使用可能</compatibility> <usage> - <p>$BFbIt%j%@%$%l%/%H$ONc$($P(B <directive>Action</directive> $B%G%#%l%/%F%#%V$r(B - $B;H$C$F$$$k$H$-$K5/$3$j$^$9!#(B<directive>Action</directive> $B%G%#%l%/%F%#%V$O(B - $B85!9$N%j%/%(%9%H$r(B CGI $B%9%/%j%W%H$KFbIt%j%@%$%l%/%H$r9T$J$$$^$9!#(B - $B%5%V%j%/%(%9%H$O$$$/$D$+$N(B URI $B$KBP$7$F!"%j%/%(%9%H$5$l$?$H$-$K(B - $B2?$,5/$3$k$+$rD4$Y$k$?$a$N(B Apache $B$N5!9=$G$9!#Nc$($P!"(B<module>mod_dir</module> - $B$O(B <directive module="mod_dir">DirectoryIndex</directive> $B%G%#%l%/%F%#%V(B - $B$,%j%9%H$9$k%U%!%$%k$rD4$Y$k$?$a$K%5%V%j%/%(%9%H$r;H$$$^$9!#(B</p> - - <p><directive>LimitInternalRecursion</directive> $B$OFbIt%j%@%$%l%/%H$d(B - $B%5%V%j%/%(%9%H$,L58B%k!<%W$K4Y$C$?$H$-$N%5!<%P%/%i%C%7%e$rKI$.$^$9!#(B - $BIaDL!"$=$N$h$&$J%k!<%W$O@_Dj$K<:GT$7$?$H$-$KH/@8$7$^$9!#(B</p> - - <p>$B$3$N%G%#%l%/%F%#%V$O!"%j%/%(%9%HKh$KI>2A$5$l$k!"Fs$D$N0c$&8B3&CM$r(B - $B@_Dj$7$^$9!#:G=i$N(B <var>number</var> $B$O!"5/$3$jF@$k(B - $BFbIt%j%/%(%9%H$N:GBgCM$r@_Dj$7$^$9!#Fs$D$a$N(B <var>number</var> $B$O(B - $B%5%V%j%/%(%9%H$,F~$l;R$K$G$-$k?<$5$r@_Dj$7$^$9!#(B<var>number</var> $B$r(B - $B0l$D$@$1;XDj$7$?$H$-$O!"N>J}$N8B3&CM$K$=$NCM$,@_Dj$5$l$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p>内部リダイレクトは例えば <directive>Action</directive> ディレクティブを + 使っているときに起こります。<directive>Action</directive> ディレクティブは + 元々のリクエストを CGI スクリプトに内部リダイレクトを行ないます。 + サブリクエストはいくつかの URI に対して、リクエストされたときに + 何が起こるかを調べるための Apache の機構です。例えば、<module>mod_dir</module> + は <directive module="mod_dir">DirectoryIndex</directive> ディレクティブ + がリストするファイルを調べるためにサブリクエストを使います。</p> + + <p><directive>LimitInternalRecursion</directive> は内部リダイレクトや + サブリクエストが無限ループに陥ったときのサーバクラッシュを防ぎます。 + 普通、そのようなループは設定に失敗したときに発生します。</p> + + <p>このディレクティブは、リクエスト毎に評価される、二つの違う限界値を + 設定します。最初の <var>number</var> は、起こり得る + 内部リクエストの最大値を設定します。二つめの <var>number</var> は + サブリクエストが入れ子にできる深さを設定します。<var>number</var> を + 一つだけ指定したときは、両方の限界値にその値が設定されます。</p> + + <example><title>例</title> LimitInternalRecursion 5 </example> </usage> @@ -1661,8 +1661,8 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>LimitRequestBody</name> -<description>$B%/%i%$%"%s%H$+$iAw$i$l$k(B HTTP $B%j%/%(%9%H$N%\%G%#$N(B -$BAmNL$r@)8B$9$k(B</description> +<description>クライアントから送られる HTTP リクエストのボディの +総量を制限する</description> <syntax>LimitRequestBody <var>bytes</var></syntax> <default>LimitRequestBody 0</default> <contextlist><context>server config</context><context>virtual host</context> @@ -1671,30 +1671,30 @@ module="core">Directory</directive></seealso> <override>All</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"%j%/%(%9%H%\%G%#$K5v$5$l$k%P%$%H?t!"(B<var>bytes</var> - $B$r(B 0 ($BL5@)8B$r0UL#$7$^$9(B) $B$+$i(B 2147483647 (2GB) $B$^$G$N?tCM$G;XDj$7$^$9!#(B</p> - - <p><directive>LimitRequestBody</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%G%#%l%/%F%#%V$,=q$+$l$?%3%s%F%-%9%H(B - ($B%5!<%PA4BN!"%G%#%l%/%H%j!"%U%!%$%k!"%m%1!<%7%g%s(B) $BFb$G(B - $B5vMF$9$k(B HTTP $B%j%/%(%9%H%a%C%;!<%8%\%G%#$N%5%$%:$K@)8B$r$+$1$k$3$H$,$G$-$^$9!#(B - $B%/%i%$%"%s%H$N%j%/%(%9%H$,$=$N@)8BCM$r1[$($F$$$l$P!"(B - $B%5!<%P$O%j%/%(%9%H$r=hM}$;$:$K%(%i!<$rJV$7$^$9!#(B - $BIaDL$N%j%/%(%9%H%a%C%;!<%8%\%G%#$N%5%$%:$O!"%j%=!<%9$N<oN`$d(B - $B5v2D$5$l$F$$$k%a%=%C%I$K$h$C$FBg$-$/JQ$o$j$^$9!#(B - CGI $B%9%/%j%W%H$O!"$h$/>pJs$r<u?.$9$k$?$a$K(B - $B%a%C%;!<%8%\%G%#$r;H$$$^$9!#(B - <code>PUT</code> $B%a%=%C%I$N<BAu$O!"$3$N%G%#%l%/%F%#%V$NCM$H$7$F(B - $B>/$J$/$H$b$"$k%j%=!<%9$KBP$7$F%5!<%P$,<u$1IU$1$h$&$H$9$k(B - $BI=8=$NBg$-$5$[$I$NCM$rI,MW$H$7$^$9!#(B</p> - - <p>$B$3$N%G%#%l%/%F%#%V$O!"(B - $B4IM}<T$K%/%i%$%"%s%H$+$i$N0[>o$J%j%/%(%9%H$r@)8f$G$-$k$h$&$K$7!"(B - $B2?$i$+$N7A$N%5!<%S%95qH]967b(B ($BLuCm(B:DoS) $B$rHr$1$k$N$KM-8z$G$9!#(B</p> - - <p>$B$"$k>l=j$X$N%U%!%$%k%"%C%W%m!<%I$r5v2D$9$k>l9g$K!"(B - $B%"%C%W%m!<%I$G$-$k%U%!%$%k$N%5%$%:$r(B 100K $B$K@)8B$7$?$1$l$P!"(B - $B0J2<$N$h$&$K;XDj$7$^$9(B:</p> + <p>このディレクティブは、リクエストボディに許されるバイト数、<var>bytes</var> + を 0 (無制限を意味します) から 2147483647 (2GB) までの数値で指定します。</p> + + <p><directive>LimitRequestBody</directive> ディレクティブは、 + ディレクティブが書かれたコンテキスト + (サーバ全体、ディレクトリ、ファイル、ロケーション) 内で + 許容する HTTP リクエストメッセージボディのサイズに制限をかけることができます。 + クライアントのリクエストがその制限値を越えていれば、 + サーバはリクエストを処理せずにエラーを返します。 + 普通のリクエストメッセージボディのサイズは、リソースの種類や + 許可されているメソッドによって大きく変わります。 + CGI スクリプトは、よく情報を受信するために + メッセージボディを使います。 + <code>PUT</code> メソッドの実装は、このディレクティブの値として + 少なくともあるリソースに対してサーバが受け付けようとする + 表現の大きさほどの値を必要とします。</p> + + <p>このディレクティブは、 + 管理者にクライアントからの異常なリクエストを制御できるようにし、 + 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。</p> + + <p>ある場所へのファイルアップロードを許可する場合に、 + アップロードできるファイルのサイズを 100K に制限したければ、 + 以下のように指定します:</p> <example> LimitRequestBody 102400 @@ -1705,38 +1705,38 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>LimitRequestFields</name> -<description>$B%/%i%$%"%s%H$+$i$N(B HTTP $B%j%/%(%9%H$N%X%C%@%U%#!<%k%I$N?t$r(B -$B@)8B$9$k(B</description> +<description>クライアントからの HTTP リクエストのヘッダフィールドの数を +制限する</description> <syntax>LimitRequestFields <var>number</var></syntax> <default>LimitRequestFields 100</default> <contextlist><context>server config</context></contextlist> <usage> - <p><var>number</var> $B$K$O!"(B0 ($BL5@)8B$r0UL#$7$^$9(B) $B$+$i(B 32767 - $B$^$G$N@0?t$r;XDj$7$^$9!#(B - $B%G%U%)%k%HCM$O!"Dj?t(B <code>DEFAULT_LIMIT_REQUEST_FIELDS</code> - $B$K$h$j%3%s%Q%$%k;~$KDj5A$5$l$^$9(B ($BG[I[;~$K$O(B 100 $B$H;XDj$5$l$F$$$^$9(B)$B!#(B</p> - - <p>LimitRequestBody $B%G%#%l%/%F%#%V$O!"(B - $B%5!<%P4IM}<T$,(B HTTP $B%j%/%(%9%HCf$K$*$$$F5v2D$9$k%j%/%(%9%H%X%C%@%U%#!<%k%I?t$r(B - $B;XDj$7$^$9!#(B - $B%5!<%P$O$3$NCM$K$ODL>o$N%/%i%$%"%s%H$+$i$N%j%/%(%9%H$K4^$^$l$k$G$"$m$&(B - $B%U%#!<%k%I$N?t$h$jBg$-$JCM$,I,MW$H$7$^$9!#(B - $B%/%i%$%"%s%H$K$h$j;H$o$l$?MW5a%X%C%@!<%U%#!<%k%I$N?t$,(B - 20 $B$rD6$($k$3$H$O$[$H$s$I$"$j$^$;$s$,!"(B - $B$3$l$O<o!9$N%/%i%$%"%s%H$N<BAu$h$C$FJQ$o$j!"(B - $B>\:Y$J%3%s%F%s%H%M%4%7%(!<%7%g%s$r$9$k$?$a$N%V%i%&%6$N@_Dj$^$G$K$b(B - $B1F6A$5$l$k$3$H$,$"$j$^$9!#(B - $B%*%W%7%g%s$N(B HTTP $B3HD%$O%j%/%(%9%H%X%C%@%U%#!<%k%I$r;H$C$F8=$5$l$k>l9g$,(B - $BB?$/$"$j$^$9!#(B</p> - - <p>$B$3$N%G%#%l%/%F%#%V$O!"(B - $B4IM}<T$K%/%i%$%"%s%H$+$i$N0[>o$J%j%/%(%9%H$r@)8f$G$-$k$h$&$K$7!"(B - $B2?$i$+$N7A$N%5!<%S%95qH]967b(B ($BLuCm(B:DoS) $B$rHr$1$k$N$KM-8z$G$9!#(B - $B%j%/%(%9%H$N%U%#!<%k%I$,B?2a$.$k$3$H$r0UL#$9$k%(%i!<1~Ez$,(B - $BIaDL$N%/%i%$%"%s%H$KJV$5$l$k$h$&$J;~$O$3$NCM$rA}$d$7$F$/$@$5$$!#(B</p> - - <p>$BNc(B:</p> + <p><var>number</var> には、0 (無制限を意味します) から 32767 + までの整数を指定します。 + デフォルト値は、定数 <code>DEFAULT_LIMIT_REQUEST_FIELDS</code> + によりコンパイル時に定義されます (配布時には 100 と指定されています)。</p> + + <p>LimitRequestBody ディレクティブは、 + サーバ管理者が HTTP リクエスト中において許可するリクエストヘッダフィールド数を + 指定します。 + サーバはこの値には通常のクライアントからのリクエストに含まれるであろう + フィールドの数より大きな値が必要とします。 + クライアントにより使われた要求ヘッダーフィールドの数が + 20 を超えることはほとんどありませんが、 + これは種々のクライアントの実装よって変わり、 + 詳細なコンテントネゴシエーションをするためのブラウザの設定までにも + 影響されることがあります。 + オプションの HTTP 拡張はリクエストヘッダフィールドを使って現される場合が + 多くあります。</p> + + <p>このディレクティブは、 + 管理者にクライアントからの異常なリクエストを制御できるようにし、 + 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。 + リクエストのフィールドが多過ぎることを意味するエラー応答が + 普通のクライアントに返されるような時はこの値を増やしてください。</p> + + <p>例:</p> <example> LimitRequestFields 50 @@ -1747,79 +1747,79 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>LimitRequestFieldSize</name> -<description>$B%/%i%$%"%s%H$+$i$N(B HTTP $B%j%/%(%9%H$N%X%C%@$N(B -$B%5%$%:$r@)8B$9$k(B</description> +<description>クライアントからの HTTP リクエストのヘッダの +サイズを制限する</description> <syntax>LimitRequestFieldsize <var>bytes</var></syntax> <default>LimitRequestFieldsize 8190</default> <contextlist><context>server config</context></contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"(BHTTP $B%j%/%(%9%H%X%C%@0l$D$G<uIU$1$k(B - $B%P%$%H?t(B <var>bytes</var> $B$r;XDj$7$^$9!#(B</p> - - <p><directive>LimitRequestFieldSize</directive> $B%G%#%l%/%F%#%V$O!"(B - HTTP $B%j%/%(%9%H%X%C%@$G5vMF$5$l$k%5%$%:$rA}8:$5$;$k$3$H$,$G$-$^$9!#(B - $B%5!<%P$O!"$3$N%G%#%l%/%F%#%V$NCM$H$7$F!"(B - $B0lHLE*$J%/%i%$%"%s%H$+$i%j%/%(%9%H$,Aw$i$l$?:]$K!"$=$N%j%/%(%9%H$K(B - $BIUB0$7$F$$$k$I$N%X%C%@%U%#!<%k%I$K$D$$$F$b!"(B - $B==J,B-$j$kBg$-$5$K$J$C$F$$$J$1$l$P$J$j$^$;$s!#(B - $B0lHLE*$J%j%/%(%9%H%X%C%@$N%5%$%:$H$$$C$F$b!"$=$NBg$-$5$O8D!9$N(B - $B%/%i%$%"%s%H$N<BAu$K$h$C$FBg$-$/0[$J$j!"(B - $B>\:Y$J%3%s%F%s%H%M%4%7%(!<%7%g%s$r%5%]!<%H$9$k$+$I$&$+$N!"(B - $B%V%i%&%6$N@_Dj$K$b1F6A$5$l$?$j$7$^$9!#(B - SPNEGO $BG'>Z%X%C%@$G$O(B 12392 $B%P%$%H$K$^$G5Z$V$3$H$9$i$"$j$^$9!#(B</p> - - <p>$B$3$N%G%#%l%/%F%#%V$O!"(B - $B4IM}<T$K%/%i%$%"%s%H$+$i$N0[>o$J%j%/%(%9%H$r@)8f$G$-$k$h$&$K$7!"(B - $B2?$i$+$N7A$N%5!<%S%95qH]967b(B ($BLuCm(B:DoS) $B$rHr$1$k$N$KM-8z$G$9!#(B</p> - - <p>$BNc(B:</p> + <p>このディレクティブは、HTTP リクエストヘッダ一つで受付ける + バイト数 <var>bytes</var> を指定します。</p> + + <p><directive>LimitRequestFieldSize</directive> ディレクティブは、 + HTTP リクエストヘッダで許容されるサイズを増減させることができます。 + サーバは、このディレクティブの値として、 + 一般的なクライアントからリクエストが送られた際に、そのリクエストに + 付属しているどのヘッダフィールドについても、 + 十分足りる大きさになっていなければなりません。 + 一般的なリクエストヘッダのサイズといっても、その大きさは個々の + クライアントの実装によって大きく異なり、 + 詳細なコンテントネゴシエーションをサポートするかどうかの、 + ブラウザの設定にも影響されたりします。 + SPNEGO 認証ヘッダでは 12392 バイトにまで及ぶことすらあります。</p> + + <p>このディレクティブは、 + 管理者にクライアントからの異常なリクエストを制御できるようにし、 + 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。</p> + + <p>例:</p> <example> LimitRequestFieldSize 4094 </example> - <note>$BDL>o$O%G%U%)%k%H$+$iJQ99$9$kI,MW$O$"$j$^$;$s!#(B</note> + <note>通常はデフォルトから変更する必要はありません。</note> </usage> </directivesynopsis> <directivesynopsis> <name>LimitRequestLine</name> -<description>$B%/%i%$%"%s%H$+$i$N(B HTTP $B%j%/%(%9%H9T$N%5%$%:$r@)8B$9$k(B</description> +<description>クライアントからの HTTP リクエスト行のサイズを制限する</description> <syntax>LimitRequestLine <var>bytes</var></syntax> <default>LimitRequestLine 8190</default> <contextlist><context>server config</context></contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"(BHTTP $B%j%/%(%9%H9TFb$G5vMF$5$l$k%P%$%H?t(B - <var>bytes</var> $B$r;XDj$7$^$9!#(B</p> + <p>このディレクティブは、HTTP リクエスト行内で許容されるバイト数 + <var>bytes</var> を指定します。</p> - <p><directive>LimitRequestLine</directive> $B%G%#%l%/%F%#%V$K$h$j!"(B - $B%/%i%$%"%s%H$+$i$N(B HTTP $B%j%/%(%9%H9T$N5vMF%5%$%:$rA}8:$G$-$^$9!#(B - $B%j%/%(%9%H9T$O!"(BHTTP$B%a%=%C%I!"(BURI$B!"%W%m%H%3%k%P!<%8%g%s$+$i@.$C$F$*$j!"(B - <directive>LimitRequestLine</directive> $B$O%5!<%P$X$N%j%/%(%9%H$KBP$7$F(B - $B5vMF$9$k%j%/%(%9%H(B URI $B$ND9$5$r@)8B$9$k$3$H$K$J$j$^$9!#(B - $B%5!<%P$O!"(B<code>GET</code> $B%j%/%(%9%H$N%/%(%jItJ,$b4^$a$F!"%j%=!<%9$NL>A0$,F~$k$KB-$k(B - $BBg$-$5$rI,MW$H$7$^$9!#(B</p> + <p><directive>LimitRequestLine</directive> ディレクティブにより、 + クライアントからの HTTP リクエスト行の許容サイズを増減できます。 + リクエスト行は、HTTPメソッド、URI、プロトコルバージョンから成っており、 + <directive>LimitRequestLine</directive> はサーバへのリクエストに対して + 許容するリクエスト URI の長さを制限することになります。 + サーバは、<code>GET</code> リクエストのクエリ部分も含めて、リソースの名前が入るに足る + 大きさを必要とします。</p> - <p>$B$3$N%G%#%l%/%F%#%V$O!"(B - $B4IM}<T$K%/%i%$%"%s%H$+$i$N0[>o$J%j%/%(%9%H$r@)8f$G$-$k$h$&$K$7!"(B - $B2?$i$+$N7A$N%5!<%S%95qH]967b(B ($BLuCm(B:DoS) $B$rHr$1$k$N$KM-8z$G$9!#(B</p> + <p>このディレクティブは、 + 管理者にクライアントからの異常なリクエストを制御できるようにし、 + 何らかの形のサービス拒否攻撃 (訳注:DoS) を避けるのに有効です。</p> - <p>$BNc(B:</p> + <p>例:</p> <example> LimitRequestLine 4094 </example> - <note>$BDL>o$O%G%U%)%k%H$+$iJQ99$9$kI,MW$O$"$j$^$;$s!#(B</note> + <note>通常はデフォルトから変更する必要はありません。</note> </usage> </directivesynopsis> <directivesynopsis> <name>LimitXMLRequestBody</name> -<description>XML $B7A<0$N%j%/%(%9%H$N%\%G%#$N%5%$%:$r@)8B$9$k(B</description> +<description>XML 形式のリクエストのボディのサイズを制限する</description> <syntax>LimitXMLRequestBody <var>bytes</var></syntax> <default>LimitXMLRequestBody 1000000</default> <contextlist><context>server config</context><context>virtual host</context> @@ -1827,10 +1827,10 @@ module="core">Directory</directive></seealso> <override>All</override> <usage> - <p>XML $B7A<0$N%j%/%(%9%H$N%\%G%#$N:GBgCM$r(B ($B%P%$%HC10L$G(B) $B@)8B$7$^$9!#(B - $BCM$K(B <code>0</code> $B$r;XDj$9$k$H%A%'%C%/$rL58z$K$7$^$9!#(B</p> + <p>XML 形式のリクエストのボディの最大値を (バイト単位で) 制限します。 + 値に <code>0</code> を指定するとチェックを無効にします。</p> - <p>$BNc(B:</p> + <p>例:</p> <example> LimitXMLRequestBody 0 @@ -1841,76 +1841,76 @@ module="core">Directory</directive></seealso> <directivesynopsis type="section"> <name>Location</name> -<description>$B0O$s$@%G%#%l%/%F%#%V$r%^%C%A$9$k(B URL $B$N$_$KE,MQ(B</description> +<description>囲んだディレクティブをマッチする URL のみに適用</description> <syntax><Location <var>URL-path</var>|<var>URL</var>> ... </Location></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive type="section">Location</directive> $B%G%#%l%/%F%#%V$O!"(B - URL $B$K$h$jCf$K=q$+$l$?%G%#%l%/%F%#%V$NE,MQHO0O$r@)8B$7$^$9!#(B + <p><directive type="section">Location</directive> ディレクティブは、 + URL により中に書かれたディレクティブの適用範囲を制限します。 <directive type="section" module="core">Directory</directive> - $B%G%#%l%/%F%#%V$H;w$F$$$F!"(B - <code></Location></code> $B%G%#%l%/%F%#%V$G=*N;$9$k(B - $B%5%V%;%/%7%g%s$r3+;O$7$^$9!#(B - <directive type="section">Location</directive> $B%;%/%7%g%s$O!"(B - <directive type="section" module="core">Directory</directive> $B%;%/%7%g%s$H(B - <code>.htaccess</code> $B$NFI$_9~$_$N8e!"(B - <directive type="section" module="core">Files</directive> $B%;%/%7%g%s$r(B - $BE,MQ$7$?8e$K!"@_Dj%U%!%$%k$K8=$l$?=g$K=hM}$5$l$^$9!#(B</p> - - <p><directive type="section">Location</directive> $B%;%/%7%g%s$O(B - $B40A4$K%U%!%$%k%7%9%F%`$H4XO"$;$:$KF0:n$7$^$9!#$3$N$3$H$+$iF3$+$l$k(B - $B7k2L$K$O$$$D$/$+Cm0U$9$kE@$,$"$j$^$9!#:G$b=EMW$J$b$N$O!"(B - $B%U%!%$%k%7%9%F%`$N0LCV$X$N%"%/%;%9@)8f$K(B <directive - type="section">Location</directive> $B%G%#%l%/%F%#%V$r;H$&$Y$-$G$O$J$$(B - $B$H$$$&$3$H$G$9!#J#?t$N(B URL $B$,%U%!%$%k%7%9%F%`$NF1$80LCV$K%^%C%W$5$l$k(B - $B2DG=$,$"$j$^$9$N$G!"$=$N$h$&$J%"%/%;%9@)8f$O2sHr$5$l$F$7$^$&2DG=@-$,(B - $B$"$j$^$9!#(B</p> - - <note><title>$B$$$D(B <directive - type="section">Location</directive> $B$r;H$&$+(B</title> - - <p><directive type="section">Location</directive> $B%G%#%l%/%F%#%V$O(B - $B%U%!%$%k%7%9%F%`30$N%3%s%F%s%D$K%G%#%l%/%F%#%V$rE,MQ$9$k$H$-$K(B - $B;HMQ$7$F$/$@$5$$!#%U%!%$%k%7%9%F%`$KB8:_$9$k%3%s%F%s%D$KBP$7$F$O!"(B + ディレクティブと似ていて、 + <code></Location></code> ディレクティブで終了する + サブセクションを開始します。 + <directive type="section">Location</directive> セクションは、 + <directive type="section" module="core">Directory</directive> セクションと + <code>.htaccess</code> の読み込みの後、 + <directive type="section" module="core">Files</directive> セクションを + 適用した後に、設定ファイルに現れた順に処理されます。</p> + + <p><directive type="section">Location</directive> セクションは + 完全にファイルシステムと関連せずに動作します。このことから導かれる + 結果にはいつくか注意する点があります。最も重要なものは、 + ファイルシステムの位置へのアクセス制御に <directive + type="section">Location</directive> ディレクティブを使うべきではない + ということです。複数の URL がファイルシステムの同じ位置にマップされる + 可能がありますので、そのようなアクセス制御は回避されてしまう可能性が + あります。</p> + + <note><title>いつ <directive + type="section">Location</directive> を使うか</title> + + <p><directive type="section">Location</directive> ディレクティブは + ファイルシステム外のコンテンツにディレクティブを適用するときに + 使用してください。ファイルシステムに存在するコンテンツに対しては、 <directive - type="section" module="core">Directory</directive> $B$H(B <directive - type="section" module="core">Files</directive> $B$r;H$C$F$/$@$5$$!#(B - $BNc30$O!"(B<code><Location /></code> $B$G!"$3$l$O%5!<%PA4BN$KBP$7$F(B - $B@_Dj$rE,MQ$9$k4JC1$JJ}K!$G$9!#(B</p> + type="section" module="core">Directory</directive> と <directive + type="section" module="core">Files</directive> を使ってください。 + 例外は、<code><Location /></code> で、これはサーバ全体に対して + 設定を適用する簡単な方法です。</p> </note> - <p>$BA4$F$N(B ($B%W%m%-%70J30$N(B) $B%j%/%(%9%H$KBP$7!"(B - URL $B$O(B <code>/path/</code> $B$H$$$&!"(B - $B@\F,<-(B <code>http://servername</code> $B$r4^$^$J$$7A$G%^%C%A$7$^$9!#(B - $B%W%m%-%7%j%/%(%9%H$N>l9g$K$O!"(B<code>scheme://servername/path</code> - $B$H$$$&@\F,<-$r4^$`7A$G%^%C%A$7!"@\F,<-$r4^$a$F;XDj$9$kI,MW$,$"$j$^$9!#(B</p> + <p>全ての (プロキシ以外の) リクエストに対し、 + URL は <code>/path/</code> という、 + 接頭辞 <code>http://servername</code> を含まない形でマッチします。 + プロキシリクエストの場合には、<code>scheme://servername/path</code> + という接頭辞を含む形でマッチし、接頭辞を含めて指定する必要があります。</p> - <p>URL $B$K$O%o%$%k%I%+!<%I$rMxMQ$9$k$3$H$,$G$-$^$9!#(B - <code>?</code> $B$OG$0U$N0lJ8;z!"(B<code>*</code> $B$OG$0U$NJ8;zNs$K%^%C%A$7$^$9!#(B </p> + <p>URL にはワイルドカードを利用することができます。 + <code>?</code> は任意の一文字、<code>*</code> は任意の文字列にマッチします。 </p> - <p><code>~</code> $B$H$$$&J8;z$rDI2C$9$k$3$H$G!"3HD%@55,I=8=$r(B - $BMxMQ$9$k$3$H$b$G$-$^$9!#(B - $BNc$($P(B:</p> + <p><code>~</code> という文字を追加することで、拡張正規表現を + 利用することもできます。 + 例えば:</p> <example> <Location ~ "/(extra|special)/data"> </example> - <p>$B$O(B URL $B$K(B <code>/extra/data</code> $B$+(B <code>/special/data</code> $B$H$$$&J8;zNs$,(B - $B4^$^$l$F$$$k>l9g$K%^%C%A$7$^$9!#(B + <p>は URL に <code>/extra/data</code> か <code>/special/data</code> という文字列が + 含まれている場合にマッチします。 <directive type="section" module="core" - >LocationMatch</directive> $B%G%#%l%/%F%#%V$O(B - <directive type="section">Location</directive> $B$N@55,I=8=(B - $BHG$H$^$C$?$/F1$8F0:n$r$7$^$9!#(B</p> + >LocationMatch</directive> ディレクティブは + <directive type="section">Location</directive> の正規表現 + 版とまったく同じ動作をします。</p> - <p><directive type="section">Location</directive> $B5!G=$O!"(B<directive - module="core">SetHandler</directive> $B%G%#%l%/%F%#%V$H(B - $BAH9g$o$;$FMxMQ$9$k$HFC$KJXMx$G$9!#(B - $BNc$($P!"(B<code>foo.com</code> $B$N%V%i%&%6$+$i$N$_%9%F!<%?%9$N;2>H$rM-8z$K$7$?$1$l$P!"(B - $B<!$N$h$&$K$9$l$PNI$$$G$7$g$&!#(B</p> + <p><directive type="section">Location</directive> 機能は、<directive + module="core">SetHandler</directive> ディレクティブと + 組合わせて利用すると特に便利です。 + 例えば、<code>foo.com</code> のブラウザからのみステータスの参照を有効にしたければ、 + 次のようにすれば良いでしょう。</p> <example> <Location /status><br /> @@ -1923,202 +1923,202 @@ module="core">Directory</directive></seealso> </Location> </example> -<note><title>/ ($B%9%i%C%7%e(B) $B$K4X$9$kCm(B</title> - <p>$B%9%i%C%7%eJ8;z$O!"(BURL $BFb$K8=$l$k>l=j$K1~$8$FJQ2=$9$k(B - $BFCJL$J0UL#$r;}$C$F$$$^$9!#(B - $B%U%!%$%k%7%9%F%`$K$*$$$FMxMQ$9$k>l9g$K$OJ#?t$N%9%i%C%7%e$G$b0l$D$N(B - $B%9%i%C%7%e$H$7$F07$o$l$k$3$H$,B?$$$G$9$,!"(B - (<em>$B$9$J$o$A(B</em>$B!"(B<code>/home///foo</code> $B$O(B - <code>/home/foo</code> $B$HF1$8$$$C$?$h$&$K(B) - URL $B$K$*$$$F$OI,$:$7$b$=$&$J$k$o$1$G$O$"$j$^$;$s!#(B +<note><title>/ (スラッシュ) に関する注</title> + <p>スラッシュ文字は、URL 内に現れる場所に応じて変化する + 特別な意味を持っています。 + ファイルシステムにおいて利用する場合には複数のスラッシュでも一つの + スラッシュとして扱われることが多いですが、 + (<em>すなわち</em>、<code>/home///foo</code> は + <code>/home/foo</code> と同じいったように) + URL においては必ずしもそうなるわけではありません。 <directive type="section" module="core">LocationMatch</directive> - $B%G%#%l%/%F%#%V$d@55,I=8=$rMxMQ$7$?(B - <directive type="section">Location</directive> $B%G%#%l%/%F%#%V$G!"(B - $BJ#?t$N%9%i%C%7%e$K%^%C%A$5$;$?$$$H$-$K$O!"!"L@<(E*$K5-=R$9$k(B - $BI,MW$,$"$j$^$9!#(B</p> - - <p>$BNc$($P!"(B<code><LocationMatch ^/abc></code> $B$O!"(B - <code>/abc</code> $B$H$$$&%j%/%(%9%H(B URL $B$K%^%C%A$7$^$9$,!"(B - <code>//abc</code> $B$H$$$&%j%/%(%9%H(B URL $B$K$O%^%C%A$7$^$;$s!#(B - ($B@55,I=8=$G$J$$(B) <directive type="section">Location</directive> - $B%G%#%l%/%F%#%V$O!"(B - proxy $B%j%/%(%9%H$KBP$7$FMxMQ$9$k:]$K$OF1MM$N?6$kIq$$$r$7$^$9$,!"(B - ($B@55,I=8=$G$J$$(B) <directive type="section">Location</directive> $B$r(B proxy - $B$G$J$$%j%/%(%9%H$KBP$7$FMxMQ$9$k:]$K$O!"(B - $B0l$D$N%9%i%C%7%e$GJ#?t$N%9%i%C%7%e$K%^%C%A$7$^$9!#(B - $BNc$($P!"(B<code><Location /abc/def></code> $B$H;XDj$7!"(B - <code>/abc//def</code> $B$H$$$&%j%/%(%9%H$,$"$l$P!"(B - $B%^%C%A$9$k$3$H$K$J$j$^$9!#(B</p></note> + ディレクティブや正規表現を利用した + <directive type="section">Location</directive> ディレクティブで、 + 複数のスラッシュにマッチさせたいときには、、明示的に記述する + 必要があります。</p> + + <p>例えば、<code><LocationMatch ^/abc></code> は、 + <code>/abc</code> というリクエスト URL にマッチしますが、 + <code>//abc</code> というリクエスト URL にはマッチしません。 + (正規表現でない) <directive type="section">Location</directive> + ディレクティブは、 + proxy リクエストに対して利用する際には同様の振る舞いをしますが、 + (正規表現でない) <directive type="section">Location</directive> を proxy + でないリクエストに対して利用する際には、 + 一つのスラッシュで複数のスラッシュにマッチします。 + 例えば、<code><Location /abc/def></code> と指定し、 + <code>/abc//def</code> というリクエストがあれば、 + マッチすることになります。</p></note> </usage> -<seealso>$B%j%/%(%9%H$r<u$1$?:]$K$3$l$i$N0[$J$k%;%/%7%g%s$,(B - $BAH$_9g$o$5$l$kJ}K!$K$D$$$F$O(B <a href="../sections.html"> - <Directory>, <Location>, <Files> $B%;%/%7%g%s$NF0:nK!(B</a></seealso> +<seealso>リクエストを受けた際にこれらの異なるセクションが + 組み合わされる方法については <a href="../sections.html"> + <Directory>, <Location>, <Files> セクションの動作法</a></seealso> </directivesynopsis> <directivesynopsis type="section"> <name>LocationMatch</name> -<description>$B0O$s$@%G%#%l%/%F%#%V$r@55,I=8=$K%^%C%A$9$k(B URL $B$N$_$K(B -$BE,MQ(B</description> +<description>囲んだディレクティブを正規表現にマッチする URL のみに +適用</description> <syntax><LocationMatch <var>regex</var>> ... </LocationMatch></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive type="section">LocationMatch</directive> $B%G%#%l%/%F%#%V$O!"(B - <directive type="section" module="core">Location</directive> $B$HF1$8MM$K(B - URL $B$K$h$jCf$K=q$+$l$?%G%#%l%/%F%#%V$NE,MQHO0O$r@)8B$7$^$9!#(B - $BC"$7!"0z?t$OIaDL$NJ8;zNs$G$O$J$/!"@55,I=8=$H$J$j$^$9!#Nc$($P!"(B</p> + <p><directive type="section">LocationMatch</directive> ディレクティブは、 + <directive type="section" module="core">Location</directive> と同じ様に + URL により中に書かれたディレクティブの適用範囲を制限します。 + 但し、引数は普通の文字列ではなく、正規表現となります。例えば、</p> <example> <LocationMatch "/(extra|special)/data"> </example> - <p>$B$O(B URL $B$K(B <code>/extra/data</code> $B$+(B <code>/special/data</code> - $B$H$$$&J8;zNs$,4^$^$l$F$$$k>l9g$K%^%C%A$7$^$9!#(B</p> + <p>は URL に <code>/extra/data</code> か <code>/special/data</code> + という文字列が含まれている場合にマッチします。</p> </usage> -<seealso>$B%j%/%(%9%H$r<u$1$?:]$K$3$l$i$N0[$J$k%;%/%7%g%s$,(B - $BAH$_9g$o$5$l$kJ}K!$K$D$$$F$O(B <a href="../sections.html"> - <Directory>, <Location>, <Files> $B%;%/%7%g%s$NF0:nK!(B</a></seealso> +<seealso>リクエストを受けた際にこれらの異なるセクションが + 組み合わされる方法については <a href="../sections.html"> + <Directory>, <Location>, <Files> セクションの動作法</a></seealso> </directivesynopsis> <directivesynopsis> <name>LogLevel</name> -<description>ErrorLog $B$N>iD9@-$r@)8f$9$k(B</description> +<description>ErrorLog の冗長性を制御する</description> <syntax>LogLevel <var>level</var></syntax> <default>LogLevel warn</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>LogLevel</directive> $B$O!"%(%i!<%m%0(B (<directive module="core" - >ErrorLog</directive> $B%G%#%l%/%F%#%V$r(B - $B8+$F$/$@$5$$(B) $B$X5-O?$9$k%a%C%;!<%8$N>iD9@-$rD4@0$7$^$9!#(B - $B0J2<$N(B <var>level</var> $B$r;XDj$G$-!"=g$K=EMWEY$,2<$,$C$F$$$-$^$9!#(B</p> + <p><directive>LogLevel</directive> は、エラーログ (<directive module="core" + >ErrorLog</directive> ディレクティブを + 見てください) へ記録するメッセージの冗長性を調整します。 + 以下の <var>level</var> を指定でき、順に重要度が下がっていきます。</p> <table border="1"> <tr> - <th><strong>$B%l%Y%k(B</strong> </th> + <th><strong>レベル</strong> </th> - <th><strong>$B@bL@(B</strong> </th> + <th><strong>説明</strong> </th> - <th><strong>$BNc(B</strong> </th> + <th><strong>例</strong> </th> </tr> <tr> <td><code>emerg</code> </td> - <td>$B6[5^(B - $B%7%9%F%`$,MxMQ$G$-$J$$(B</td> + <td>緊急 - システムが利用できない</td> <td>Child cannot open lock file. Exiting - ($B;R%W%m%;%9$,%m%C%/%U%!%$%k$r3+$1$J$$$?$a=*N;$7$?(B)</td> + (子プロセスがロックファイルを開けないため終了した)</td> </tr> <tr> <td><code>alert</code> </td> - <td>$BD>$A$KBP=h$,I,MW(B</td> + <td>直ちに対処が必要</td> <td>getpwuid: couldn't determine user name from uid - (getpwuid: UID $B$+$i%f!<%6L>$rFCDj$G$-$J$+$C$?(B)</td> + (getpwuid: UID からユーザ名を特定できなかった)</td> </tr> <tr> <td><code>crit</code> </td> - <td>$BCWL?E*$J>uBV(B</td> + <td>致命的な状態</td> <td>socket: Failed to get a socket, exiting child - (socket: $B%=%1%C%H$,F@$i$l$J$$$?$a!";R%W%m%;%9$r=*N;$5$;$?(B)</td> + (socket: ソケットが得られないため、子プロセスを終了させた)</td> </tr> <tr> <td><code>error</code> </td> - <td>$B%(%i!<(B</td> + <td>エラー</td> <td>Premature end of script headers - ($B%9%/%j%W%H$N%X%C%@$,B-$j$J$$$^$^$G=*$o$C$?(B)</td> + (スクリプトのヘッダが足りないままで終わった)</td> </tr> <tr> <td><code>warn</code> </td> - <td>$B7Y9p(B</td> + <td>警告</td> <td>child process 1234 did not exit, sending another SIGHUP - ($B;R%W%m%;%9(B 1234 $B$,=*N;$7$J$+$C$?!#$b$&0lEY(B SIGHUP $B$rAw$k(B)</td> + (子プロセス 1234 が終了しなかった。もう一度 SIGHUP を送る)</td> </tr> <tr> <td><code>notice</code> </td> - <td>$BIaDL$@$,!"=EMW$J>pJs(B</td> + <td>普通だが、重要な情報</td> <td>httpd: caught SIGBUS, attempting to dump core in ... - (httpd: SIGBUS $B%7%0%J%k$r<u$1!"(B... $B$X%3%"%@%s%W$r$7$?(B)</td> + (httpd: SIGBUS シグナルを受け、... へコアダンプをした)</td> </tr> <tr> <td><code>info</code> </td> - <td>$BDI2C>pJs(B</td> + <td>追加情報</td> <td>"Server seems busy, (you may need to increase - StartServers, or Min/MaxSpareServers)..." ($B!V%5!<%P$OIi2Y$,9b$$!"(B - (StartServers $B$d(B Min/MaxSpareServers $B$NCM$rA}$d$9I,MW$,$"$k$+$b(B)$B!W(B)</td> + StartServers, or Min/MaxSpareServers)..." (「サーバは負荷が高い、 + (StartServers や Min/MaxSpareServers の値を増やす必要があるかも)」)</td> </tr> <tr> <td><code>debug</code> </td> - <td>$B%G%P%C%0%a%C%;!<%8(B</td> + <td>デバッグメッセージ</td> - <td>"Opening config file ..." ($B@_Dj%U%!%$%k$r3+$$$F$$$k(B...)</td> + <td>"Opening config file ..." (設定ファイルを開いている...)</td> </tr> </table> - <p>$BFCDj$N%l%Y%k$,;XDj$5$l$?>l9g!"$=$l$h$j9b$$%l%Y%k$NA4$F$N%a%C%;!<%8$,(B - $BJs9p$5$l$^$9!#(B - <em>$BNc$($P(B</em>$B!"(B<code>LogLevel info</code> $B$K;XDj$9$k$H!"(B - <code>notice</code> $B$H(B <code>warn</code> $B$bJs9p$5$l$^$9!#(B</p> + <p>特定のレベルが指定された場合、それより高いレベルの全てのメッセージが + 報告されます。 + <em>例えば</em>、<code>LogLevel info</code> に指定すると、 + <code>notice</code> と <code>warn</code> も報告されます。</p> - <p>$B$J$*(B <code>crit</code> $B0J>e$N%l%Y%k$r;XDj$9$k$3$H$,?d>)$5$l$^$9!#(B</p> + <p>なお <code>crit</code> 以上のレベルを指定することが推奨されます。</p> - <p>$BNc(B:</p> + <p>例:</p> <example> LogLevel notice </example> - <note><title>$BCm(B</title> - <p>$B%U%!%$%k$K%m%0$r=PNO$9$k>l9g!"(B<code>notice</code> - $B%l%Y%k$N%a%C%;!<%8$OM^@)$5$l$:!"$9$Y$F%m%0$K=PNO$5$l$^$9!#(B - $B$7$+$7(B <code>syslog</code> $B$r;HMQ$7$F$$$k>l9g$O!"(B - $B$3$l$OEv$F$O$^$j$^$;$s!#(B</p> + <note><title>注</title> + <p>ファイルにログを出力する場合、<code>notice</code> + レベルのメッセージは抑制されず、すべてログに出力されます。 + しかし <code>syslog</code> を使用している場合は、 + これは当てはまりません。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>MaxKeepAliveRequests</name> -<description>$B;}B3E*$J@\B3>e$G5v2D$5$l$k%j%/%(%9%H$N?t(B</description> +<description>持続的な接続上で許可されるリクエストの数</description> <syntax>MaxKeepAliveRequests <var>number</var></syntax> <default>MaxKeepAliveRequests 100</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>MaxKeepAliveRequests</directive> $B%G%#%l%/%F%#%V$O!"(B - <directive module="core">KeepAlive</directive> $B$,M-8z$J>l9g$K!"(B - $B0l2s$N@\B3$G<u$1IU$12DG=$J%j%/%(%9%H$N?t$r@)8B$7$^$9!#(B - <code>0</code> $B$K@_Dj$7$F$$$l$P!"<u$1IU$1$k%j%/%(%9%H$OL5@)8B$K$J$j$^$9!#(B - $B$3$N@_Dj$O!"%5!<%P@-G=$r8~>e$5$;$k$?$a$K!"Bg$-$J?tCM$r;XDj$9$k$3$H4+$a$^$9!#(B + <p><directive>MaxKeepAliveRequests</directive> ディレクティブは、 + <directive module="core">KeepAlive</directive> が有効な場合に、 + 一回の接続で受け付け可能なリクエストの数を制限します。 + <code>0</code> に設定していれば、受け付けるリクエストは無制限になります。 + この設定は、サーバ性能を向上させるために、大きな数値を指定すること勧めます。 </p> - <p>$BNc(B:</p> + <p>例:</p> <example> MaxKeepAliveRequests 500 @@ -2128,66 +2128,66 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>NameVirtualHost</name> -<description>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$N$?$a$N(B IP $B%"%I%l%9$r;XDj(B</description> +<description>名前ベースのバーチャルホストのための IP アドレスを指定</description> <syntax>NameVirtualHost <var>addr</var>[:<var>port</var>]</syntax> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>NameVirtualHost</directive> $B%G%#%l%/%F%#%V$O!"(B - <a href="../vhosts/">$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H(B</a>$B$N@_Dj$r9T$J$$$?$$>l9g$K(B - $BI,MW$H$J$k$b$N$G$9!#(B</p> + <p><directive>NameVirtualHost</directive> ディレクティブは、 + <a href="../vhosts/">名前ベースのバーチャルホスト</a>の設定を行ないたい場合に + 必要となるものです。</p> - <p><var>addr</var> $B$K$O%[%9%HL>$r;XDj$G$-$^$9$,!"(B - $B>o$K(B IP $B%"%I%l%9$r;XDj$9$k$N$,?d>)$5$l$^$9!#(B - $BNc$($P!"(B</p> + <p><var>addr</var> にはホスト名を指定できますが、 + 常に IP アドレスを指定するのが推奨されます。 + 例えば、</p> <example> NameVirtualHost 111.22.33.44 </example> - <p><directive>NameVirtualHost</directive> $B%G%#%l%/%F%#%V$O!"(B - $BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$r(B - $BMxMQ$7$F%j%/%(%9%H$r<u$1IU$1$k(B IP $B%"%I%l%9$r;XDj$7$^$9!#(B - $B$3$l$O!"IaDL$OL>A0%Y!<%9$N%P!<%A%c%k%[%9%H%"%I%l%9$G$9!#(B - $B$?$@$7!"%U%!%$%"!<%&%)!<%k$dB>$N%W%m%-%7$,%j%/%(%9%H$r<u$1IU$1!"(B - $B0c$&(B IP $B%"%I%l%9$N%5!<%P$K%U%)%o!<%I$9$k$H$$$&>l9g$O!"(B - $B%j%/%(%9%H$rDs6!$7$?$$%^%7%s>e$NJ*M}%$%s%?!<%U%'!<%9$N(B - IP $B%"%I%l%9$r;XDj$9$kI,MW$,$"$j$^$9!#(B - $BJ#?t$N%"%I%l%9$GJ#?t$NL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$r;XDj$9$k>l9g$O(B - $B3F%"%I%l%9$KBP$7$F%G%#%l%/%F%#%V$r=q$$$F$/$@$5$$!#(B</p> - - <note><title>$BCf(B</title> - <p>$B!V<g%5!<%P!W$d!"$I$N(B <code>_default_</code> $B%5!<%P$b!"(B - <directive>NameVirtualHost</directive> $B$G;XDj$7$?(B IP $B%"%I%l%9$X$N%j%/%(%9%H(B - $B$r=hM}$9$k$3$H$O(B<strong>$B$"$j$^$;$s(B</strong> ($B$J$<$+(B - <directive>NameVirtualHost</directive> $B$r(B - $B;XDj$7$?$1$I$=$N%"%I%l%9$K(B <directive>VirtualHost</directive> $B$rDj5A$7$J$+$C$?>l9g$r=|$/(B)$B!#(B</p> + <p><directive>NameVirtualHost</directive> ディレクティブは、 + 名前ベースのバーチャルホストを + 利用してリクエストを受け付ける IP アドレスを指定します。 + これは、普通は名前ベースのバーチャルホストアドレスです。 + ただし、ファイアーウォールや他のプロキシがリクエストを受け付け、 + 違う IP アドレスのサーバにフォワードするという場合は、 + リクエストを提供したいマシン上の物理インターフェースの + IP アドレスを指定する必要があります。 + 複数のアドレスで複数の名前ベースのバーチャルホストを指定する場合は + 各アドレスに対してディレクティブを書いてください。</p> + + <note><title>中</title> + <p>「主サーバ」や、どの <code>_default_</code> サーバも、 + <directive>NameVirtualHost</directive> で指定した IP アドレスへのリクエスト + を処理することは<strong>ありません</strong> (なぜか + <directive>NameVirtualHost</directive> を + 指定したけどそのアドレスに <directive>VirtualHost</directive> を定義しなかった場合を除く)。</p> </note> - <p>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$K%]!<%HHV9f$r;XDj$9$k$3$H$b2DG=$G$9!#(B - $BNc$($P(B</p> + <p>名前ベースのバーチャルホストにポート番号を指定することも可能です。 + 例えば</p> <example> NameVirtualHost 111.22.33.44:8080 </example> - <p>IPV6 $B$N%"%I%l%9$O<!$NNc$N$h$&$K3Q3g8L$G0O$`I,MW$,$"$j$^$9(B:</p> + <p>IPV6 のアドレスは次の例のように角括弧で囲む必要があります:</p> <example> NameVirtualHost [2001:db8::a00:20ff:fea7:ccea]:8080 </example> - <p>$B$9$Y$F$N%$%s%?%U%'!<%9$X$N%j%/%(%9%H$r<u$1<h$k$h$&$K$9$k$?$a$K$O!"(B - $B0z?t$H$7$F(B <code>*</code> $B$r;H$$$^$9!#(B</p> + <p>すべてのインタフェースへのリクエストを受け取るようにするためには、 + 引数として <code>*</code> を使います。</p> <example> NameVirtualHost * </example> - <note><title><directive type="section">VirtualHost</directive> $B%G%#%l%/%F%#%V$N0z?t(B</title> - <p><directive type="section">VirtualHost</directive> $B%G%#%l%/%F%#%V$N0z?t$O(B <directive - >NameVirtualHost</directive> $B%G%#%l%/%F%#%V$N0z?t$K@53N$K(B - $B9g$C$F$$$kI,MW$,$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + <note><title><directive type="section">VirtualHost</directive> ディレクティブの引数</title> + <p><directive type="section">VirtualHost</directive> ディレクティブの引数は <directive + >NameVirtualHost</directive> ディレクティブの引数に正確に + 合っている必要があることに注意してください。</p> <example> NameVirtualHost 1.2.3.4<br /> @@ -2199,14 +2199,14 @@ module="core">Directory</directive></seealso> </usage> -<seealso><a href="../vhosts/">$B%P!<%A%c%k%[%9%H@bL@=q(B +<seealso><a href="../vhosts/">バーチャルホスト説明書 </a></seealso> </directivesynopsis> <directivesynopsis> <name>Options</name> -<description>$B%G%#%l%/%H%j$KBP$7$F;HMQ2DG=$J5!G=$r@_Dj$9$k(B</description> +<description>ディレクトリに対して使用可能な機能を設定する</description> <syntax>Options [+|-]<var>option</var> [[+|-]<var>option</var>] ...</syntax> <default>Options All</default> @@ -2216,87 +2216,87 @@ module="core">Directory</directive></seealso> <override>Options</override> <usage> - <p><directive>Options</directive> $B%G%#%l%/%F%#%V$O!"FCDj$N%G%#%l%/%H%j$KBP$7$F(B - $B$I$N5!G=$,;HMQ2DG=$+$r@)8f$7$^$9!#(B</p> + <p><directive>Options</directive> ディレクティブは、特定のディレクトリに対して + どの機能が使用可能かを制御します。</p> - <p><var>option</var> $B$r(B <code>None</code>$B$K;XDj$9$k$H!"(B - $BFCJL$J5!G=$OA4$FL58z$K$J$j$^$9!#(B - $B$^$?!"0J2<$N<($9(B 1 $B8D0J>e$N$b$N$r;XDj$G$-$^$9!#(B</p> + <p><var>option</var> を <code>None</code>に指定すると、 + 特別な機能は全て無効になります。 + また、以下の示す 1 個以上のものを指定できます。</p> <dl> <dt><code>All</code></dt> - <dd><code>MultiViews</code> $B$r=|$$$?A4$F$N5!G=$,M-8z$H$J$j$^$9!#(B - $B$3$l$,%G%U%)%k%H$G$9!#(B</dd> + <dd><code>MultiViews</code> を除いた全ての機能が有効となります。 + これがデフォルトです。</dd> <dt><code>ExecCGI</code></dt> <dd> - <module>mod_cgi</module> $B$K$h$k(B CGI $B%9%/%j%W%H$N<B9T$r5v2D$7$^$9!#(B</dd> + <module>mod_cgi</module> による CGI スクリプトの実行を許可します。</dd> <dt><code>FollowSymLinks</code></dt> <dd> - $B%5!<%P$,!"$3$N%G%#%l%/%H%jFb$G%7%s%\%j%C%/%j%s%/$r$?$I$l$k$h$&$K$7$^$9!#(B - <note><p>$B%5!<%P$,%7%s%\%j%C%/%j%s%/$r$?$I$k>l9g$G$b!"(B - <directive type="section" module="core">Directory</directive> $B%;%/%7%g%s$K(B - $B%^%C%A$5$;$k$?$a$N(B - $B%Q%9L>$O(B<em>$BJQ99$5$l$^$;$s(B</em>$B!#(B</p> - <p><directive type="section" module="core">Location</directive> $BFb$K(B - $B$3$N%*%W%7%g%s$r;XDj$7$F$b(B<strong>$BL5;k$5$l$k(B</strong>$B$3$H$K(B - $BCm0U$7$F$/$@$5$$!#(B</p></note></dd> + サーバが、このディレクトリ内でシンボリックリンクをたどれるようにします。 + <note><p>サーバがシンボリックリンクをたどる場合でも、 + <directive type="section" module="core">Directory</directive> セクションに + マッチさせるための + パス名は<em>変更されません</em>。</p> + <p><directive type="section" module="core">Location</directive> 内に + このオプションを指定しても<strong>無視される</strong>ことに + 注意してください。</p></note></dd> <dt><code>Includes</code></dt> <dd> - <module>mod_include</module> $B$,Ds6!$9$k(B SSI $B$rM-8z$K$7$^$9!#(B</dd> + <module>mod_include</module> が提供する SSI を有効にします。</dd> <dt><code>IncludesNOEXEC</code></dt> <dd> - SSI $B$OM-8z$K$J$j$^$9$,!"(B<code>#exec</code> $B%3%^%s%I(B $B$H(B <code>#exec CGI</code> $B$OL58z$K$J$j$^$9!#(B - $B$?$@$7!"(B<code>#include virtual</code> $B$K$h$j!"(B<directive module="mod_alias">ScriptAlias</directive> $B$5$l$?%G%#%l%/%H%j$G(B - CGI $B$r<B9T$9$k$3$H$O2DG=$G$9!#(B</dd> + SSI は有効になりますが、<code>#exec</code> コマンド と <code>#exec CGI</code> は無効になります。 + ただし、<code>#include virtual</code> により、<directive module="mod_alias">ScriptAlias</directive> されたディレクトリで + CGI を実行することは可能です。</dd> <dt><code>Indexes</code></dt> <dd> - $B$b$7!"(BURL $B$,%G%#%l%/%H%j$K%^%C%W$9$k%j%/%(%9%H$G$"$C$F!"(B - $B3n$D(B <directive module="mod_dir">DirectoryIndex</directive> $B$G;XDj$7$?%U%!%$%k(B ($BNc$($P!"(B<code>index.html</code>) $B$,(B - $B%G%#%l%/%H%jFb$KL5$1$l$P!"(B<module>mod_autoindex</module> $B$,(B - $B%G%#%l%/%H%jFb$N0lMw$r@07A$7$FJV$7$^$9!#(B</dd> + もし、URL がディレクトリにマップするリクエストであって、 + 且つ <directive module="mod_dir">DirectoryIndex</directive> で指定したファイル (例えば、<code>index.html</code>) が + ディレクトリ内に無ければ、<module>mod_autoindex</module> が + ディレクトリ内の一覧を整形して返します。</dd> <dt><code>MultiViews</code></dt> <dd> - <module>mod_negotiation</module> $B$K$h$k(B - <a href="../content-negotiation.html">$B%3%s%F%s%H%M%4%7%(!<%7%g%s(B</a> - $B$5$l$?(B "MultiViews" $B$r5v2D$7$^$9!#(B</dd> + <module>mod_negotiation</module> による + <a href="../content-negotiation.html">コンテントネゴシエーション</a> + された "MultiViews" を許可します。</dd> <dt><code>SymLinksIfOwnerMatch</code></dt> <dd> - $B%7%s%\%j%C%/@h$N%U%!%$%k$^$?$O%G%#%l%/%H%j$,!"(B - $B%7%s%\%j%C%/%j%s%/$N=jM-%f!<%6(B ID $B$HF1$8>l9g$K$N$_%7%s%\%j%C%/%j%s%/$r(B - $B$?$I$l$k$h$&$K$7$^$9!#(B + シンボリック先のファイルまたはディレクトリが、 + シンボリックリンクの所有ユーザ ID と同じ場合にのみシンボリックリンクを + たどれるようにします。 - <note><title>$BCm(B</title> <directive type="section" module="core" - >Location</directive> $BFb$K$3$N%*%W%7%g%s$r(B - $B;XDj$7$F$bL5;k$5$l$^$9!#(B</note> + <note><title>注</title> <directive type="section" module="core" + >Location</directive> 内にこのオプションを + 指定しても無視されます。</note> </dd> </dl> - <p>$BDL>o!"%G%#%l%/%H%j$KBP$7$FJ#?t$N(B <directive>Options</directive> $B$,(B - $BE,MQ2DG=$J>l9g!"(B - $B:G$b6a$$$b$N0l$D$N$_$,E,MQ$5$l!"B>$N$b$N$OL5;k$5$l$^$9!#(B - $BJ#?t$N;XDj$,%^!<%8$5$l$k$o$1$G$O$"$j$^$;$s!#(B(<a - href="../sections.html#mergin">$B%;%/%7%g%s$N%^!<%8J}K!(B</a>$B$r;2>H$7$F$/$@$5$$!#(B) - $B$7$+$7!"$9$Y$F$N(B <directive>Options</directive> $B%G%#%l%/%F%#%V$,(B <code>+</code> $B$d(B <code>-</code> $BIU$-$G(B - $B;XDj$5$l$?>l9g$O%*%W%7%g%s$NCM$O%^!<%8$5$l$^$9!#(B - <code>+</code> $B$rF,$K$D$1$l$P8=:_$N@_Dj$K2C$($i$l!"(B - <code>-</code> $B$rIU$1$l$P8=:_$N@_Dj$+$i:o=|$5$l$^$9!#(B</p> + <p>通常、ディレクトリに対して複数の <directive>Options</directive> が + 適用可能な場合、 + 最も近いもの一つのみが適用され、他のものは無視されます。 + 複数の指定がマージされるわけではありません。(<a + href="../sections.html#mergin">セクションのマージ方法</a>を参照してください。) + しかし、すべての <directive>Options</directive> ディレクティブが <code>+</code> や <code>-</code> 付きで + 指定された場合はオプションの値はマージされます。 + <code>+</code> を頭につければ現在の設定に加えられ、 + <code>-</code> を付ければ現在の設定から削除されます。</p> - <p>$BNc$($P!"(B<code>+</code> $B$d(B <code>-</code> $B$rMxMQ$7$J$$>l9g$O(B:</p> + <p>例えば、<code>+</code> や <code>-</code> を利用しない場合は:</p> <example> <Directory /web/docs><br /> @@ -2312,9 +2312,9 @@ module="core">Directory</directive></seealso> </Directory> </example> - <p><code>/web/docs/spec</code> $B$H$$$&%G%#%l%/%H%j$K$O!"(B - <code>Includes</code> $B$@$1$,E,MQ$5$l$^$9!#(B - $B$7$+$7!"(B2 $BHVL\$N(B <directive>Options</directive> $B$G(B <code>+</code> $B$d(B <code>-</code> $B$rMxMQ$7$F$_$k$H(B:</p> + <p><code>/web/docs/spec</code> というディレクトリには、 + <code>Includes</code> だけが適用されます。 + しかし、2 番目の <directive>Options</directive> で <code>+</code> や <code>-</code> を利用してみると:</p> <example> <Directory /web/docs><br /> @@ -2330,56 +2330,56 @@ module="core">Directory</directive></seealso> </Directory> </example> - <p><code>/web/docs/spec</code> $B$H$$$&%G%#%l%/%H%j$K$O!"(B <code>FollowSymLinks</code> $B$H(B - <code>Includes</code> $B$,E,MQ$5$l$^$9!#(B</p> + <p><code>/web/docs/spec</code> というディレクトリには、 <code>FollowSymLinks</code> と + <code>Includes</code> が適用されます。</p> - <note><title>$BCm(B</title> - <p><code>-IncludesNOEXEC</code> $B$b$7$/$O(B - <code>-Includes</code> $B$r;XDj$9$k$H!"(B - $BA0$N@_Dj$,$I$N$h$&$K$J$C$F$$$h$&$H$b(B SSI $B$OL58z$H$J$j$^$9!#(B</p> + <note><title>注</title> + <p><code>-IncludesNOEXEC</code> もしくは + <code>-Includes</code> を指定すると、 + 前の設定がどのようになっていようとも SSI は無効となります。</p> </note> - <p>$B$I$N$h$&$J@_Dj$b$5$l$F$$$J$1$l$P!"%G%U%)%k%H$G$O(B <code>All</code> $B$K(B - $B$J$j$^$9!#(B</p> + <p>どのような設定もされていなければ、デフォルトでは <code>All</code> に + なります。</p> </usage> </directivesynopsis> <directivesynopsis> <name>Require</name> -<description>$B$I$NG'>Z:Q$_%f!<%6$,%j%=!<%9$r%"%/%;%9$G$-$k$+$rA*Br$9$k(B</description> +<description>どの認証済みユーザがリソースをアクセスできるかを選択する</description> <syntax>Require <var>entity-name</var> [<var>entity-name</var>] ...</syntax> <contextlist><context>directory</context><context>.htaccess</context> </contextlist> <override>AuthConfig</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"$I$NG'>Z:Q$_$N%f!<%6$,%j%=!<%9$K(B - $B%"%/%;%9$9$k$3$H$,$G$-$k$+$r;XDj$7$^$9!#(B - $B0J2<$N$h$&$J9=J8$K$J$j$^$9!#(B</p> + <p>このディレクティブは、どの認証済みのユーザがリソースに + アクセスすることができるかを指定します。 + 以下のような構文になります。</p> <dl> <dt><code>Require user <var>userid</var> [<var>userid</var>] ...</code></dt> - <dd>$B;XDj$5$l$?%f!<%6$N$_!"%G%#%l%/%H%j$X$N%"%/%;%9$r5v2D$7$^$9!#(B</dd> + <dd>指定されたユーザのみ、ディレクトリへのアクセスを許可します。</dd> <dt><code>Require group <var>group-name</var> [<var>group-name</var>] ...</code></dt> - <dd>$B;XDj$5$l$?%0%k!<%W$KB0$9$k%f!<%6$N$_!"%G%#%l%/%H%j$X$N%"%/%;%9$r5v2D$7$^$9!#(B</dd> + <dd>指定されたグループに属するユーザのみ、ディレクトリへのアクセスを許可します。</dd> <dt><code>Require valid-user</code></dt> - <dd>$BA4$F$NG'>Z$5$l$?%f!<%6$K!"%G%#%l%/%H%j$X$N%"%/%;%9$r5v2D$7$^$9!#(B</dd> + <dd>全ての認証されたユーザに、ディレクトリへのアクセスを許可します。</dd> </dl> - <p><directive>Require</directive> $B$O!"@5$7$/F0:n$9$k$?$a$K$O(B <directive - module="core">AuthName</directive> $B5Z$S(B <directive module="core" - >AuthType</directive> $B%G%#%l%/%F%#%V$d!"(B - ($B%f!<%6$H%0%k!<%W$r;XDj$9$k$?$a$K(B) <directive module="mod_authn_file" - >AuthUserFile</directive> $B5Z$S(B <directive module="mod_authz_groupfile" + <p><directive>Require</directive> は、正しく動作するためには <directive + module="core">AuthName</directive> 及び <directive module="core" + >AuthType</directive> ディレクティブや、 + (ユーザとグループを指定するために) <directive module="mod_authn_file" + >AuthUserFile</directive> 及び <directive module="mod_authz_groupfile" >AuthGroupFile</directive> - $B$H$$$C$?%G%#%l%/%F%#%V$H6&$K(B - $B;XDj$9$kI,MW$,$"$j$^$9!#(B - $BNc$($P(B:</p> + といったディレクティブと共に + 指定する必要があります。 + 例えば:</p> <example> AuthType Basic<br /> @@ -2389,14 +2389,14 @@ module="core">Directory</directive></seealso> Require group admin </example> - <p>$B$3$N$h$&$K$7$FE,MQ$5$l$?%"%/%;%9@)8f$O!"(B<strong>$BA4$F$N(B</strong>$B%a%=%C%I$K(B - $BBP$7$F9T$J$o$l$^$9!#(B - <strong>$BDL>o$O!"$3$l$,K>$^$7$$F0:n$G$9!#(B</strong> - $B$b$7!"FCDj$N%a%=%C%I$KBP$7$F$N$_%"%/%;%9$N@)8f$rE,MQ$7!"(B - $BB>$N%a%=%C%I$O@)8B$7$J$$>l9g$K$O!"(B<directive - type="section" module="core">Limit</directive> $B%;%/%7%g%sFb$K(B - <directive>Require</directive> $B$r(B - $B;XDj$7$F$/$@$5$$!#(B</p> + <p>このようにして適用されたアクセス制御は、<strong>全ての</strong>メソッドに + 対して行なわれます。 + <strong>通常は、これが望ましい動作です。</strong> + もし、特定のメソッドに対してのみアクセスの制御を適用し、 + 他のメソッドは制限しない場合には、<directive + type="section" module="core">Limit</directive> セクション内に + <directive>Require</directive> を + 指定してください。</p> </usage> <seealso><directive module="core">Satisfy</directive></seealso> @@ -2405,30 +2405,30 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>RLimitCPU</name> -<description>Apache $B$N;R%W%m%;%9$+$i5/F0$5$l$?%W%m%;%9$N(B CPU $B>CHqNL$r(B -$B@)8B$9$k(B</description> +<description>Apache の子プロセスから起動されたプロセスの CPU 消費量を +制限する</description> <syntax>RLimitCPU <var>seconds</var>|max [<var>seconds</var>|max]</syntax> -<default>$BL$@_Dj!#%*%Z%l!<%F%#%s%0%7%9%F%`$N%G%U%)%k%H$r;HMQ(B</default> +<default>未設定。オペレーティングシステムのデフォルトを使用</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>All</override> <usage> - <p>$B0l$D$+Fs$D$N%Q%i%a!<%?$r$H$j$^$9!#(B - $B:G=i$N%Q%i%a!<%?$OA4%W%m%;%9$KBP$9$k%j%=!<%9$N%=%U%H%j%_%C%H$r@_Dj$7!"(B - 2 $BHVL\$N%Q%i%a!<%?$O:GBg$N%j%=!<%9%j%_%C%H$r@_Dj$7$^$9!#(B - $B%Q%i%a!<%?$K$O?t;z$+!"%*%Z%l!<%F%#%s%0%7%9%F%`$N:GBg$H$J$k(B - <code>max</code> $B$N$I$A$i$+$r;XDj$9$k$3$H$,$G$-$^$9!#(B - $B:GBg$N%j%=!<%9%j%_%C%H$r>e$2$k$?$a$K$O!"%5!<%P$r(B - <code>root</code> $B$G<B9T$9$k$+5/F0$5$l$J$1$l$P$$$1$^$;$s!#(B</p> - - <p>$B$A$J$_$K!"$3$N@_Dj$O(B Apache $B$N;R%W%m%;%9<+BN$G$O$J$/!"(B - $B%j%/%(%9%H$r<u$1IU$1$?(B Apache $B$N;R%W%m%;%9$+$i(B fork $B$5$l$?%W%m%;%9$K(B - $BE,MQ$5$l$^$9!#(B - $B$3$l$K$O(B CGI $B$d(B SSI $B$+$i<B9T$5$l$?%3%^%s%I$,4^$^$l$^$9$,!"(BApache $B$N(B - $B?F%W%m%;%9$+$i(B fork $B$5$l$?%m%0$N%Q%$%W%W%m%;%9$J$I$K$OE,MQ$5$l$^$;$s!#(B</p> - - <p>CPU $B%j%=!<%9$N%j%_%C%H$O%W%m%;%9$"$?$j$NIC?t$GI=$o$5$l$^$9!#(B</p> + <p>一つか二つのパラメータをとります。 + 最初のパラメータは全プロセスに対するリソースのソフトリミットを設定し、 + 2 番目のパラメータは最大のリソースリミットを設定します。 + パラメータには数字か、オペレーティングシステムの最大となる + <code>max</code> のどちらかを指定することができます。 + 最大のリソースリミットを上げるためには、サーバを + <code>root</code> で実行するか起動されなければいけません。</p> + + <p>ちなみに、この設定は Apache の子プロセス自体ではなく、 + リクエストを受け付けた Apache の子プロセスから fork されたプロセスに + 適用されます。 + これには CGI や SSI から実行されたコマンドが含まれますが、Apache の + 親プロセスから fork されたログのパイププロセスなどには適用されません。</p> + + <p>CPU リソースのリミットはプロセスあたりの秒数で表わされます。</p> </usage> <seealso><directive module="core">RLimitMEM</directive></seealso> @@ -2437,30 +2437,30 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>RLimitMEM</name> -<description>Apache $B$N;R%W%m%;%9$+$i5/F0$5$l$?%W%m%;%9$N%a%b%j>CHqNL$r(B -$B@)8B$9$k(B</description> +<description>Apache の子プロセスから起動されたプロセスのメモリ消費量を +制限する</description> <syntax>RLimitMEM <var>bytes</var>|max [<var>bytes</var>|max]</syntax> -<default>$BL$@_Dj!#%*%Z%l!<%F%#%s%0%7%9%F%`$N%G%U%)%k%H$r;HMQ(B</default> +<default>未設定。オペレーティングシステムのデフォルトを使用</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>All</override> <usage> - <p>$B0l$D$+Fs$D$N%Q%i%a!<%?$r$r$H$j$^$9!#(B - $B:G=i$N%Q%i%a!<%?$OA4%W%m%;%9$KBP$9$k%j%=!<%9$N%=%U%H%j%_%C%H$r@_Dj$7!"(B - 2 $BHVL\$N%Q%i%a!<%?$O:GBg$N%j%=!<%9%j%_%C%H$r@_Dj$7$^$9!#(B - $B%Q%i%a!<%?$K$O?t;z$+!"%*%Z%l!<%F%#%s%0%7%9%F%`$N:GBg$H$J$k(B - <code>max</code> $B$N$I$A$i$+$r;XDj$9$k$3$H$,$G$-$^$9!#(B - $B:GBg$N%j%=!<%9%j%_%C%H$r>e$2$k$?$a$K$O!"%5!<%P$r(B - <code>root</code> $B$G<B9T$9$k$+5/F0$5$l$J$1$l$P$$$1$^$;$s!#(B</p> - - <p>$B$3$N@_Dj$O(B Apache $B$N;R%W%m%;%9<+BN$G$O$J$/!"(B - $B%j%/%(%9%H$r<u$1IU$1$?(B Apache $B$N;R%W%m%;%9$+$i(B fork $B$5$l$?%W%m%;%9$K(B - $BE,MQ$5$l$^$9!#(B - $B$3$l$K$O(B CGI $B$d(B SSI $B$+$i<B9T$5$l$?%3%^%s%I$,4^$^$l$^$9$,!"(BApache $B$N(B - $B?F%W%m%;%9$+$i(B fork $B$5$l$?%m%0$N%Q%$%W%W%m%;%9$J$I$K$OE,MQ$5$l$^$;$s!#(B</p> - - <p>$B%a%b%j%j%=!<%9$N%j%_%C%H$O%W%m%;%9$"$?$j$N%P%$%H?t$GI=$o$5$l$^$9!#(B</p> + <p>一つか二つのパラメータををとります。 + 最初のパラメータは全プロセスに対するリソースのソフトリミットを設定し、 + 2 番目のパラメータは最大のリソースリミットを設定します。 + パラメータには数字か、オペレーティングシステムの最大となる + <code>max</code> のどちらかを指定することができます。 + 最大のリソースリミットを上げるためには、サーバを + <code>root</code> で実行するか起動されなければいけません。</p> + + <p>この設定は Apache の子プロセス自体ではなく、 + リクエストを受け付けた Apache の子プロセスから fork されたプロセスに + 適用されます。 + これには CGI や SSI から実行されたコマンドが含まれますが、Apache の + 親プロセスから fork されたログのパイププロセスなどには適用されません。</p> + + <p>メモリリソースのリミットはプロセスあたりのバイト数で表わされます。</p> </usage> <seealso><directive module="core">RLimitCPU</directive></seealso> <seealso><directive module="core">RLimitNPROC</directive></seealso> @@ -2468,38 +2468,38 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>RLimitNPROC</name> -<description>Apache $B$N;R%W%m%;%9$+$i5/F0$5$l$?%W%m%;%9$,5/F0$9$k%W%m%;%9$N(B -$B?t$r@)8B$9$k(B</description> +<description>Apache の子プロセスから起動されたプロセスが起動するプロセスの +数を制限する</description> <syntax>RLimitNPROC <var>number</var>|max [<var>number</var>|max]</syntax> -<default>$BL$@_Dj!#%*%Z%l!<%F%#%s%0%7%9%F%`$N%G%U%)%k%H$r;HMQ(B</default> +<default>未設定。オペレーティングシステムのデフォルトを使用</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>All</override> <usage> - <p>$B0l$D$+Fs$D$N%Q%i%a!<%?$r$H$j$^$9!#(B - $B:G=i$N%Q%i%a!<%?$OA4%W%m%;%9$KBP$9$k%j%=!<%9$N%=%U%H%j%_%C%H$r@_Dj$7!"(B - 2 $BHVL\$N%Q%i%a!<%?$O:GBg$N%j%=!<%9%j%_%C%H$r@_Dj$7$^$9!#(B - $B%Q%i%a!<%?$K$O?t;z$+!"%*%Z%l!<%F%#%s%0%7%9%F%`$N:GBg$H$J$k(B - <code>max</code> $B$N$I$A$i$+$r;XDj$9$k$3$H$,$G$-$^$9!#(B - $B:GBg$N%j%=!<%9%j%_%C%H$r>e$2$k$?$a$K$O!"%5!<%P$r(B - <code>root</code> $B$G<B9T$9$k$+5/F0$5$l$J$1$l$P$$$1$^$;$s!#(B</p> - - <p>$B$3$N@_Dj$O(B Apache $B$N;R%W%m%;%9<+BN$G$O$J$/!"(B - $B%j%/%(%9%H$r<u$1IU$1$?(B Apache $B$N;R%W%m%;%9$+$i(B fork $B$5$l$?%W%m%;%9$K(B - $BE,MQ$5$l$^$9!#(B - $B$3$l$K$O(B CGI $B$d(B SSI $B$+$i<B9T$5$l$?%3%^%s%I$,4^$^$l$^$9$,!"(BApache $B$N(B - $B?F%W%m%;%9$+$i(B fork $B$5$l$?%m%0$N%Q%$%W%W%m%;%9$J$I$K$OE,MQ$5$l$^$;$s!#(B</p> - - <p>$B%W%m%;%9$N@)8B$O!"%f!<%6$"$?$j$N%W%m%;%9?t$G@)8f$5$l$^$9!#(B</p> - - <note><title>$BCm(B</title> - <p> CGI $B%W%m%;%9$,%&%'%V%5!<%P$N%f!<%6(B ID $B0J30$G<B9T$5$l$k$N$G(B - <strong>$BL5$1$l$P(B</strong>$B!"(B - $B$3$N%G%#%l%/%F%#%V$O!"%5!<%P<+?H$,@8@.$G$-$k%W%m%;%9$N?t$r@)8B$9$k$3$H$K$J$j$^$9!#(B - $B$=$N$h$&$J>u67$K$J$C$F$$$k$+$I$&$+$O!"(B<code>error_log</code> $BCf$N(B - <strong><code>cannot fork</code></strong> $B$H$$$&%a%C%;!<%8$K$h$j(B - $B3NG'$9$k$3$H$,$G$-$^$9!#(B</p> + <p>一つか二つのパラメータをとります。 + 最初のパラメータは全プロセスに対するリソースのソフトリミットを設定し、 + 2 番目のパラメータは最大のリソースリミットを設定します。 + パラメータには数字か、オペレーティングシステムの最大となる + <code>max</code> のどちらかを指定することができます。 + 最大のリソースリミットを上げるためには、サーバを + <code>root</code> で実行するか起動されなければいけません。</p> + + <p>この設定は Apache の子プロセス自体ではなく、 + リクエストを受け付けた Apache の子プロセスから fork されたプロセスに + 適用されます。 + これには CGI や SSI から実行されたコマンドが含まれますが、Apache の + 親プロセスから fork されたログのパイププロセスなどには適用されません。</p> + + <p>プロセスの制限は、ユーザあたりのプロセス数で制御されます。</p> + + <note><title>注</title> + <p> CGI プロセスがウェブサーバのユーザ ID 以外で実行されるので + <strong>無ければ</strong>、 + このディレクティブは、サーバ自身が生成できるプロセスの数を制限することになります。 + そのような状況になっているかどうかは、<code>error_log</code> 中の + <strong><code>cannot fork</code></strong> というメッセージにより + 確認することができます。</p> </note> </usage> <seealso><directive module="core">RLimitMEM</directive></seealso> @@ -2508,35 +2508,35 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>Satisfy</name> -<description>$B%[%9%H%l%Y%k$N%"%/%;%9@)8f$H%f!<%6G'>Z$H$NAj8_:nMQ$r;XDj(B</description> +<description>ホストレベルのアクセス制御とユーザ認証との相互作用を指定</description> <syntax>Satisfy Any|All</syntax> <default>Satisfy All</default> <contextlist><context>directory</context><context>.htaccess</context> </contextlist> <override>AuthConfig</override> -<compatibility>$B%P!<%8%g%s(B 2.0.51 $B0J9_$G$O(B <directive module="core" type="section" - >Limit</directive> $B%G%#%l%/%F%#%V$H(B <directive module="core" - type="section">LimitExcept</directive> $B%G%#%l%/%F%#%V$N1F6A$r<u$1$k(B +<compatibility>バージョン 2.0.51 以降では <directive module="core" type="section" + >Limit</directive> ディレクティブと <directive module="core" + type="section">LimitExcept</directive> ディレクティブの影響を受ける </compatibility> <usage> - <p><directive module="mod_authz_host">Allow</directive> $B$H(B - <directive module="core">Require</directive> $B$NN>J}$,;H$o$l$F$$$k$H$-$N(B - $B%"%/%;%9%]%j%7!<$r@_Dj$7$^$9!#%Q%i%a!<%?$O(B <code>All</code> $B$+(B <code>Any</code> - $B$G$9!#$3$N%G%#%l%/%F%#%V$O$"$k>l=j$X$N%"%/%;%9$,%f!<%6L>(B/$B%Q%9%o!<%I(B - <em>$B$H(B</em>$B%/%i%$%"%s%H$N%[%9%H$N%"%I%l%9$G@)8B$5$l$F$$$k$H$-$K$N$_(B - $BLrN)$A$^$9!#%G%U%)%k%H$NF0:n(B (<code>All</code>) $B$O%/%i%$%"%s%H$,%"%I%l%9$K$h$k(B - $B%"%/%;%9@)8B$rK~$?$7!"(B<em>$B$+$D(B</em>$B@5$7$$%f!<%6L>$H%Q%9%o!<%I$rF~NO$9$k$3$H$r(B - $BMW5a$7$^$9!#(B<code>Any</code> $B$G$O!"%/%i%$%"%s%H$O%[%9%H$N@)8B$rK~$?$9$+!"(B - $B@5$7$$%f!<%6L>$H%Q%9%o!<%I$NF~NO$r$9$k$+$r$9$l$P%"%/%;%9$r5v2D$5$l$^$9!#(B - $B$3$l$O!"$"$k>l=j$r%Q%9%o!<%I$GJ]8n$9$k$1$l$I!"FCDj$N%"%I%l%9$+$i$N(B - $B%/%i%$%"%s%H$K$O%Q%9%o!<%I$NF~NO$rMW5a$;$:$K%"%/%;%9$r5v2D$9$k!"(B - $B$H$$$&$h$&$J$H$-$K;HMQ$G$-$^$9!#(B</p> - - <p>$BNc$($P!"F1$8%M%C%H%o!<%/>e$K$$$k?M$K$O%&%'%V%5%$%H$N$"$kItJ,$K$D$$$F(B - $BL5@)8B$N%"%/%;%9$r5v$7$?$$$1$l$I!"30$N%M%C%H%o!<%/$N?M$K$O(B - $B%Q%9%o!<%I$rDs6!$5$;$k$h$&$K$9$k$?$a$K$O!"<!$N$h$&$J@_Dj$r$9$k$3$H$,(B - $B$G$-$^$9(B:</p> + <p><directive module="mod_authz_host">Allow</directive> と + <directive module="core">Require</directive> の両方が使われているときの + アクセスポリシーを設定します。パラメータは <code>All</code> か <code>Any</code> + です。このディレクティブはある場所へのアクセスがユーザ名/パスワード + <em>と</em>クライアントのホストのアドレスで制限されているときにのみ + 役立ちます。デフォルトの動作 (<code>All</code>) はクライアントがアドレスによる + アクセス制限を満たし、<em>かつ</em>正しいユーザ名とパスワードを入力することを + 要求します。<code>Any</code> では、クライアントはホストの制限を満たすか、 + 正しいユーザ名とパスワードの入力をするかをすればアクセスを許可されます。 + これは、ある場所をパスワードで保護するけれど、特定のアドレスからの + クライアントにはパスワードの入力を要求せずにアクセスを許可する、 + というようなときに使用できます。</p> + + <p>例えば、同じネットワーク上にいる人にはウェブサイトのある部分について + 無制限のアクセスを許したいけれど、外のネットワークの人には + パスワードを提供させるようにするためには、次のような設定をすることが + できます:</p> <example> Require valid-user<br /> @@ -2544,14 +2544,14 @@ module="core">Directory</directive></seealso> Satisfy Any </example> - <p>$B%P!<%8%g%s(B 2.0.51 $B$+$i$O(B + <p>バージョン 2.0.51 からは <directive module="core" - type="section">Limit</directive> $B%;%/%7%g%s$H(B + type="section">Limit</directive> セクションと <directive module="core" type="section" - >LimitExcept</directive> $B%;%/%7%g%s$r;HMQ$9$k$3$H$G(B - <directive>Satisfy</directive> $B%G%#%l%/%F%#%V$,(B - $BE,MQ$5$l$k%a%=%C%I$r@)8B$9$k$3$H$,(B - $B$G$-$k$h$&$K$J$j$^$7$?!#(B</p> + >LimitExcept</directive> セクションを使用することで + <directive>Satisfy</directive> ディレクティブが + 適用されるメソッドを制限することが + できるようになりました。</p> </usage> <seealso><directive module="mod_authz_host">Allow</directive></seealso> <seealso><directive module="core">Require</directive></seealso> @@ -2559,111 +2559,111 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>ScriptInterpreterSource</name> -<description>CGI $B%9%/%j%W%H$N%$%s%?!<%W%j%?$N0LCV$rD4$Y$k$?$a$N<jK!(B</description> +<description>CGI スクリプトのインタープリタの位置を調べるための手法</description> <syntax>ScriptInterpreterSource Registry|Registry-Strict|Script</syntax> <default>ScriptInterpreterSource Script</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>Win32 $B$N$_!#(B -$B%*%W%7%g%s(B <code>Registry-Strict</code> $B$O(B Apache 2.0 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>Win32 のみ。 +オプション <code>Registry-Strict</code> は Apache 2.0 以降で使用可能</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"(BApache $B$G(B CGI $B%9%/%j%W%H$r(B - $B<B9T$9$k>l9g$KMxMQ$9$k%$%s%?!<%W%j%?$r!"(B - $B$I$N$h$&$KC5$7=P$9$+$K$D$$$F@)8f$9$k$?$a$K;HMQ$7$^$9!#(B - $B%G%U%)%k%H$N@_Dj$O(B <code>Script</code> $B$G$9!#$3$l$O%9%/%j%W%H$N(B - shebang $B9T(B ($B:G=i$N9T$G(B <code>#!</code> $B$+$i;O$^$k$b$N(B) - $B$K;X$5$l$F$$$k%$%s%?!<%W%j%?$r;HMQ$7$^$9!#(BWin32 $B$G$O$=$N9T$O(B - $B0J2<$NMM$K$J$j$^$9!#(B</p> + <p>このディレクティブは、Apache で CGI スクリプトを + 実行する場合に利用するインタープリタを、 + どのように探し出すかについて制御するために使用します。 + デフォルトの設定は <code>Script</code> です。これはスクリプトの + shebang 行 (最初の行で <code>#!</code> から始まるもの) + に指されているインタープリタを使用します。Win32 ではその行は + 以下の様になります。</p> <example> #!C:/Perl/bin/perl.exe </example> - <p>$B$b$7$/$O!"(B<code>perl</code> $B$,(B <code>PATH</code> $B$K$"$k>l9g$OC1$K(B:</p> + <p>もしくは、<code>perl</code> が <code>PATH</code> にある場合は単に:</p> <example> #!perl </example> - <p><code>ScriptInterpreterSource Registry</code> $B$r;XDj$9$k$H!"(B - $B%9%/%j%W%H%U%!%$%k$N3HD%;R(B ($BNc$($P!"(B<code>.pl</code>) $B$r(B - $B%-!<$H$7$F!"(BWindows $B$N%l%8%9%H%j%D%j!<(B <code>HKEY_CLASSES_ROOT</code> - $B$r8!:w$9$k$h$&$K$J$j$^$9!#%l%8%9%H%j$N%5%V%-!<(B - <code>Shell\ExecCGI\Command</code> $B$+!"$=$l$,B8:_$7$J$$>l9g$O(B - <code>Shell\Open\Command</code> $B$,%9%/%j%W%H%U%!%$%k$r3+$/$?$a$K(B - $B;H$o$l$^$9!#%l%8%9%H%j%-!<$,8+$D$+$i$J$$$H$-$O!"(BApache $B$O(B <code>Script</code> - $B%*%W%7%g%s$,;XDj$5$l$?$H$-$NF0:n$KLa$j$^$9!#(B</p> - - <note type="warning"><title>$B%;%-%e%j%F%#(B</title> - <p><code>ScriptInterpreterSource Registry</code> $B$r(B <directive - module="mod_alias">ScriptAlias</directive> $B$5$l$?%G%#%l%/%H%j$G;H$&$H$-$O(B - $BCm0U$7$F$/$@$5$$!#(BApache $B$O$=$N%G%#%l%/%H%jCf$N(B<em>$B$9$Y$F$N(B</em>$B%U%!%$%k$r(B - $B<B9T$7$h$&$H$7$^$9!#(B<code>Registry</code> $B$H$$$&@_Dj$ODL>o$O<B9T$5$l$J$$(B - $B%U%!%$%k$KBP$7$FK>$^$7$/$J$$%W%m%0%i%`$N<B9T$,H/@8$9$k2DG=@-$,$"$j$^$9!#(B - $BNc$($P!"$[$H$s$I$N(B Windows $B%7%9%F%`$G!"(B - <code>.htm</code> $B%U%!%$%k$N%G%U%)%k%H$N!V3+$/!W%3%^%s%I$O(B - Microsoft Internet Explorer $B$r<B9T$7$^$9$N$G!"%9%/%j%W%H$K;XDj$5$l$?(B - $B%G%#%l%/%H%j$K$"$k(B <code>.htm</code> $B%U%!%$%k$X$N%j%/%(%9%H$O%5!<%P$N(B - $B%P%C%/%0%i%&%s%I$G%V%i%&%6$r<B9T$9$k$3$H$K$J$j$^$9!#$3$l$O!"0lJ,Fb$/$i$$$G(B - $B%7%9%F%`$r%/%i%C%7%e$5$k$?$a$NNI$$J}K!$G$9!#(B</p> + <p><code>ScriptInterpreterSource Registry</code> を指定すると、 + スクリプトファイルの拡張子 (例えば、<code>.pl</code>) を + キーとして、Windows のレジストリツリー <code>HKEY_CLASSES_ROOT</code> + を検索するようになります。レジストリのサブキー + <code>Shell\ExecCGI\Command</code> か、それが存在しない場合は + <code>Shell\Open\Command</code> がスクリプトファイルを開くために + 使われます。レジストリキーが見つからないときは、Apache は <code>Script</code> + オプションが指定されたときの動作に戻ります。</p> + + <note type="warning"><title>セキュリティ</title> + <p><code>ScriptInterpreterSource Registry</code> を <directive + module="mod_alias">ScriptAlias</directive> されたディレクトリで使うときは + 注意してください。Apache はそのディレクトリ中の<em>すべての</em>ファイルを + 実行しようとします。<code>Registry</code> という設定は通常は実行されない + ファイルに対して望ましくないプログラムの実行が発生する可能性があります。 + 例えば、ほとんどの Windows システムで、 + <code>.htm</code> ファイルのデフォルトの「開く」コマンドは + Microsoft Internet Explorer を実行しますので、スクリプトに指定された + ディレクトリにある <code>.htm</code> ファイルへのリクエストはサーバの + バックグラウンドでブラウザを実行することになります。これは、一分内くらいで + システムをクラッシュさるための良い方法です。</p> </note> - <p>Apache 2.0 $B$+$iF3F~$5$l$?%*%W%7%g%s(B <code>Registry-Strict</code> $B$O(B - <code>Registry</code> $B$HF1$8$3$H$r9T$J$$$^$9$,!"%5%V%-!<(B - <code>Shell\ExecCGI\Command</code> $B$N$_$r;H$$$^$9!#(B - <code>ExecCGI</code> $B%-!<$OIaDL$K;H$o$l$k%-!<$G$O$"$j$^$;$s!#(BWindows - $B%l%8%9%H%j$K<jF0$G@_Dj$9$kI,MW$,$"$j$^$9$N$G!"%7%9%F%`$G$N6vH/E*$J%W%m%0%i%`$N(B - $B<B9T$rKI$0$3$H$,$G$-$^$9!#(B</p> + <p>Apache 2.0 から導入されたオプション <code>Registry-Strict</code> は + <code>Registry</code> と同じことを行ないますが、サブキー + <code>Shell\ExecCGI\Command</code> のみを使います。 + <code>ExecCGI</code> キーは普通に使われるキーではありません。Windows + レジストリに手動で設定する必要がありますので、システムでの偶発的なプログラムの + 実行を防ぐことができます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ServerAdmin</name> -<description>$B%5!<%P$,%/%i%$%"%s%H$KAw$k%(%i!<%a%C%;!<%8$K4^$a$kEE;R%a!<%k$N(B -$B%"%I%l%9(B</description> +<description>サーバがクライアントに送るエラーメッセージに含める電子メールの +アドレス</description> <syntax>ServerAdmin <var>email-address</var>|<var>URL</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>ServerAdmin</directive> $B$O!"%/%i%$%"%s%H$KJV$9$5$^$6$^$J(B - $B%(%i!<%a%C%;!<%8Cf$K5-=R$9$k!"(B - $BLd9g$;%"%I%l%9$r@_Dj$7$^$9!#M?$($i$l$?0z?t$r(B <code>httpd</code> $B$,(B - URL $B$HG'<1$7$J$$>l9g$O!"(B<var>email-address</var> $B$@$H2r<a$7$F!"(B - $B%O%$%Q!<%j%s%/$N%?!<%2%C%H$K(B <code>mailto:</code> $B$rIU$1$^$9!#(B - $B<B:]$K$O!"$3$3$K$OEE;R%a!<%k%"%I%l%9$r;H$&$3$H$,?d>)$5$l$F$$$^$9!#(B - $BB?$/$N(B CGI $B%9%/%j%W%H$O$=$&$J$C$F$$$k$3$H$r2>Dj$7$F$$$^$9!#(B - URL $B$r;H$&>l9g$O!"$"$J$?$N4IM}2<$K$"$kJL%5!<%P$r;X$9$h$&$K$7$F$/$@$5$$!#(B - $B$=$&$G$J$$$H!"%(%i!<$,5/$3$C$?$H$-$KO"Mm$r$9$k$3$H$,$G$-$J$/$J$C$F(B - $B$7$^$$$^$9!#(B + <p><directive>ServerAdmin</directive> は、クライアントに返すさまざまな + エラーメッセージ中に記述する、 + 問合せアドレスを設定します。与えられた引数を <code>httpd</code> が + URL と認識しない場合は、<var>email-address</var> だと解釈して、 + ハイパーリンクのターゲットに <code>mailto:</code> を付けます。 + 実際には、ここには電子メールアドレスを使うことが推奨されています。 + 多くの CGI スクリプトはそうなっていることを仮定しています。 + URL を使う場合は、あなたの管理下にある別サーバを指すようにしてください。 + そうでないと、エラーが起こったときに連絡をすることができなくなって + しまいます。 </p> - <p>$B$=$N:]!"$3$l$N$?$a$K@lMQ$N%"%I%l%9$r@_Dj$9$k$N$,NI$$$G$7$g$&!#(B - $BNc$($P!"(B</p> + <p>その際、これのために専用のアドレスを設定するのが良いでしょう。 + 例えば、</p> <example> ServerAdmin www-admin@foo.example.com </example> - <p>$B$H$$$C$?$h$&$K$7$^$9!#%f!<%6$O$$$D$b%5!<%P$K4X$9$kOC$G$"$k$H$$$&$3$H$r(B - $BL@5-$7$F$/$k$o$1$G$O$"$j$^$;$s$N$G!#(B</p> + <p>といったようにします。ユーザはいつもサーバに関する話であるということを + 明記してくるわけではありませんので。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ServerAlias</name> -<description>$B%j%/%(%9%H$rL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$K%^%C%A$5$;$F$$$k$H$-$K(B -$B;HMQ$5$l$k%[%9%H$NJLL>(B</description> +<description>リクエストを名前ベースのバーチャルホストにマッチさせているときに +使用されるホストの別名</description> <syntax>ServerAlias <var>hostname</var> [<var>hostname</var>] ...</syntax> <contextlist><context>virtual host</context></contextlist> <usage> - <p><directive>ServerAlias</directive> $B%G%#%l%/%F%#%V$O!"(B<a - href="../vhosts/name-based.html">$B%M!<%`%Y!<%9$N%P!<%A%c%k%[%9%H(B</a>$B$K$*$$$F(B - $B;HMQ$9$k%[%9%H$NJLL>$r;XDj$7$^$9!#(B</p> + <p><directive>ServerAlias</directive> ディレクティブは、<a + href="../vhosts/name-based.html">ネームベースのバーチャルホスト</a>において + 使用するホストの別名を指定します。</p> <example> <VirtualHost *><br /> @@ -2673,53 +2673,53 @@ module="core">Directory</directive></seealso> </VirtualHost> </example> </usage> -<seealso><a href="../vhosts/">Apache $B%P!<%A%c%k%[%9%H@bL@=q(B</a></seealso> +<seealso><a href="../vhosts/">Apache バーチャルホスト説明書</a></seealso> </directivesynopsis> <directivesynopsis> <name>ServerName</name> -<description>$B%5!<%P$,<+J,<+?H$r<($9$H$-$K;H$&%[%9%HL>$H%]!<%H(B</description> +<description>サーバが自分自身を示すときに使うホスト名とポート</description> <syntax>ServerName <var>fully-qualified-domain-name</var>[:<var>port</var>]</syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>$B$3$N%G%#%l%/%F%#%V$O%P!<%8%g%s(B 2.0 $B$G$O%P!<%8%g%s(B 1.3 $B$N(B - <directive>Port</directive> $B%G%#%l%/%F%#%V$N5!G=$b4^$_$^$9!#(B</compatibility> +<compatibility>このディレクティブはバージョン 2.0 ではバージョン 1.3 の + <directive>Port</directive> ディレクティブの機能も含みます。</compatibility> <usage> - <p><directive>ServerName</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%5!<%P$,<+J,<+?H$r<($9%[%9%HL>$H%]!<%H$r@_Dj$7$^$9!#(B - $B$3$l$O!"%j%@%$%l%/%H$9$k(B URL $B$r@8@.$9$k:]$KMxMQ$5$l$^$9!#(B - $BNc$($P!"%&%'%V%5!<%P$rF0$+$7$F$$$k%^%7%s$O(B <code>simple.example.com</code> - $B$G!"(BDNS $B$N%(%$%j%"%9(B <code>www.example.com</code> $B$b$"$k$H$-$K!"(B - $B%&%'%V%5!<%P$,8e<T$H$7$FG'<1$5$l$FM_$7$$$H$-$O!"0J2<$N$h$&$K%G%#%l%/%F%#%V$r(B - $B;H$$$^$9!#(B</p> + <p><directive>ServerName</directive> ディレクティブは、 + サーバが自分自身を示すホスト名とポートを設定します。 + これは、リダイレクトする URL を生成する際に利用されます。 + 例えば、ウェブサーバを動かしているマシンは <code>simple.example.com</code> + で、DNS のエイリアス <code>www.example.com</code> もあるときに、 + ウェブサーバが後者として認識されて欲しいときは、以下のようにディレクティブを + 使います。</p> <example> ServerName www.example.com:80 </example> - <p><directive>ServerName</directive> $B$,;XDj$5$l$F$$$J$$$H$-$O!"(B - $B%5!<%P$O(B IP $B%"%I%l%9$+$i5U0z$-$r9T$J$&$3$H$G%[%9%HL>$rCN$m$&$H$7$^$9!#(B - <directive>ServerName</directive> $B$K%]!<%H$,;XDj$5$l$F$$$J$$$H$-$O!"(B - $B%5!<%P$O%j%/%(%9%H$,Mh$F$$$k(B - $B%]!<%H$r;H$$$^$9!#:G9b$N?.Mj@-$H3N<B@-$r$b$?$i$9$?$a$K$O!"(B - <directive>ServerName</directive> $B$r;H$C$F%[%9%HL>$H%]!<%H$rL@<(E*$K(B - $B;XDj$7$F$/$@$5$$!#(B</p> - - <p><a href="../vhosts/name-based.html">$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H(B</a> - $B$rMxMQ$7$F$$$k>l9g!"(B<directive type="section" module="core" - >VirtualHost</directive> $B%;%/%7%g%sFb$N(B - <directive>ServerName</directive> $B$O$3$N%P!<%A%c%k%[%9%H$K%^%C%A$9$k$?$a$K(B - $B2?$,%j%/%(%9%H$N(B Host: $B%X%C%@$K8=$l$kI,MW$,$"$k$N$+$r;XDj$7$^$9!#(B</p> - - <p>$B<+8J;2>H(B URL ($BNc$($P(B <module>mod_dir</module> $B%b%8%e!<%k$K$h$k$b$N$J$I(B) - $B$,;XDj$5$l$?%]!<%H$r;H$&$+!"%/%i%$%"%s%H$N%j%/%(%9%H$N%]!<%HHV9f$r;H$&$+$r(B - $B7hDj$9$k@_Dj$O(B <directive module="core">UseCanonicalName</directive> - $B%G%#%l%/%F%#%V$r;2>H$7$F$/$@$5$$!#(B</p> + <p><directive>ServerName</directive> が指定されていないときは、 + サーバは IP アドレスから逆引きを行なうことでホスト名を知ろうとします。 + <directive>ServerName</directive> にポートが指定されていないときは、 + サーバはリクエストが来ている + ポートを使います。最高の信頼性と確実性をもたらすためには、 + <directive>ServerName</directive> を使ってホスト名とポートを明示的に + 指定してください。</p> + + <p><a href="../vhosts/name-based.html">名前ベースのバーチャルホスト</a> + を利用している場合、<directive type="section" module="core" + >VirtualHost</directive> セクション内の + <directive>ServerName</directive> はこのバーチャルホストにマッチするために + 何がリクエストの Host: ヘッダに現れる必要があるのかを指定します。</p> + + <p>自己参照 URL (例えば <module>mod_dir</module> モジュールによるものなど) + が指定されたポートを使うか、クライアントのリクエストのポート番号を使うかを + 決定する設定は <directive module="core">UseCanonicalName</directive> + ディレクティブを参照してください。</p> </usage> -<seealso><a href="../dns-caveats.html">DNS $B$H(B Apache $B$K4X$9$kOC(B</a></seealso> -<seealso><a href="../vhosts/">Apache $B%P!<%A%c%k%[%9%H@bL@=q(B</a></seealso> +<seealso><a href="../dns-caveats.html">DNS と Apache に関する話</a></seealso> +<seealso><a href="../vhosts/">Apache バーチャルホスト説明書</a></seealso> <seealso><directive module="core">UseCanonicalName</directive></seealso> <seealso><directive module="core">NameVirtualHost</directive></seealso> <seealso><directive module="core">ServerAlias</directive></seealso> @@ -2727,51 +2727,51 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>ServerPath</name> -<description>$BHs8_49$N%V%i%&%6$,L>A0%Y!<%9$N%P!<%A%c%k%[%9%H$K%"%/%;%9$7$?$H$-$N(B -$B$?$a$N8_49MQ(B URL $B%Q%9L>(B</description> +<description>非互換のブラウザが名前ベースのバーチャルホストにアクセスしたときの +ための互換用 URL パス名</description> <syntax>ServerPath <var>URL-path</var></syntax> <contextlist><context>virtual host</context></contextlist> <usage> - <p><directive>ServerPath</directive> $B%G%#%l%/%F%#%V$O!"(B<a - href="../vhosts/">$B%M!<%`%Y!<%9$N%P!<%A%c%k%[%9%H(B</a>$B$K$*$$$FMxMQ$9$k(B - $B8_49MQ(B URL $B%Q%9L>$r@_Dj$7$^$9!#(B</p> + <p><directive>ServerPath</directive> ディレクティブは、<a + href="../vhosts/">ネームベースのバーチャルホスト</a>において利用する + 互換用 URL パス名を設定します。</p> </usage> -<seealso><a href="../vhosts/">Apache $B%P!<%A%c%k%[%9%H@bL@=q(B</a></seealso> +<seealso><a href="../vhosts/">Apache バーチャルホスト説明書</a></seealso> </directivesynopsis> <directivesynopsis> <name>ServerRoot</name> -<description>$B%$%s%9%H!<%k$5$l$?%5!<%P$N%Y!<%9%G%#%l%/%H%j(B</description> +<description>インストールされたサーバのベースディレクトリ</description> <syntax>ServerRoot <var>directory-path</var></syntax> <default>ServerRoot /usr/local/apache</default> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>ServerRoot</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%5!<%P$,B8:_$9$k%G%#%l%/%H%j$r@_Dj$7$^$9!#(B - $BDL>o!"(B<code>conf/</code> $B$d(B <code>logs/</code> $B$H$$$C$?%5%V%G%#%l%/%H%j$,(B - $BB8:_$7$^$9!#(B - $B$^$?!"B>$N@_Dj%G%#%l%/%F%#%V(B ($BNc$($P(B <directive - module="core">Include</directive> $B$d(B <directive - module="mod_so">LoadModule</directive> $B$J$I(B) $B$K$*$1$kAjBP%Q%9$O!"(B - $B$3$N%G%#%l%/%H%j$+$i$NAjBP0LCV$H$J$j$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p><directive>ServerRoot</directive> ディレクティブは、 + サーバが存在するディレクトリを設定します。 + 通常、<code>conf/</code> や <code>logs/</code> といったサブディレクトリが + 存在します。 + また、他の設定ディレクティブ (例えば <directive + module="core">Include</directive> や <directive + module="mod_so">LoadModule</directive> など) における相対パスは、 + このディレクトリからの相対位置となります。</p> + + <example><title>例</title> ServerRoot /home/httpd </example> </usage> -<seealso><a href="../invoking.html"><code>httpd</code> $B$N(B <code>-d</code> - $B%*%W%7%g%s(B</a></seealso> -<seealso><directive>ServerRoot</directive> $B$N8"8B$rE,@Z$K@_Dj$9$kJ}K!$O(B<a - href="../misc/security_tips.html#serverroot">$B%;%-%e%j%F%#$N$3$D(B</a></seealso> +<seealso><a href="../invoking.html"><code>httpd</code> の <code>-d</code> + オプション</a></seealso> +<seealso><directive>ServerRoot</directive> の権限を適切に設定する方法は<a + href="../misc/security_tips.html#serverroot">セキュリティのこつ</a></seealso> </directivesynopsis> <directivesynopsis> <name>ServerSignature</name> -<description>$B%5!<%P$,@8@.$9$k%I%-%e%a%s%H$N%U%C%?$r@_Dj(B</description> +<description>サーバが生成するドキュメントのフッタを設定</description> <syntax>ServerSignature On|Off|EMail</syntax> <default>ServerSignature Off</default> <contextlist><context>server config</context><context>virtual host</context> @@ -2780,49 +2780,49 @@ module="core">Directory</directive></seealso> <override>All</override> <usage> - <p><directive>ServerSignature</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%5!<%P$,@8@.$9$k%I%-%e%a%s%H(B - ($B%(%i!<%a%C%;!<%8!"(B<module>mod_proxy</module> $B$K$*$1$k(B FTP $B$N%G%#%l%/%H%j%j%9%H!"(B - <module>mod_info</module> $B$N=PNO!"Ey!9(B) - $B$N:G2<9T$KIUM?$9$k%U%C%?$N@_Dj$r9T$J$$$^$9!#(B - $B$=$N$h$&$J%U%C%?9T$rM-8z$K$7$?$$M}M3$K$O!"(B - $B%W%m%-%7$,J#?tO"$J$C$F$$$k>l9g$K!"%f!<%6$O$I$N%5!<%P$,JV$7$?(B - $B%(%i!<%a%C%;!<%8$+$rCN$k<jCJ$,$[$H$s$IL5$$$H$$$&$b$N$,$"$j$^$9!#(B</p> - - - <p>$B%G%U%)%k%H$G$"$k(B <code>Off</code> $B$K@_Dj$r$9$k$H!"%U%C%?9T$,M^@)$5$l$^$9(B - ($B$=$7$F!"(BApache-1.2 $B0JA0$H8_49$NF0:n$r$7$^$9(B)$B!#(B - <code>On</code> $B$K@_Dj$7$?>l9g$O!"C1$K%I%-%e%a%s%H$NCf$K!"%5!<%P$N%P!<%8%g%s!"(B - $B2TF0Cf$N%P!<%A%c%k%[%9%H$N(B <a - href="#servername">ServerName</a> $B$N=q$+$l$?9T$rDI2C$7!"(B - <code>EMail</code> $B$K$7$?>l9g$O$5$i$K;2>H$5$l$?%I%-%e%a%s%H$KBP$9$k(B <a - href="#serveradmin">ServerAdmin</a> $B$r;X$9(B "mailto:" $B$,DI2C$5$l$^$9!#(B</p> - - <p>$B%P!<%8%g%s(B 2.0.44 $B0J9_$G$O$3$N%G%#%l%/%F%#%V$O(B <directive + <p><directive>ServerSignature</directive> ディレクティブは、 + サーバが生成するドキュメント + (エラーメッセージ、<module>mod_proxy</module> における FTP のディレクトリリスト、 + <module>mod_info</module> の出力、等々) + の最下行に付与するフッタの設定を行ないます。 + そのようなフッタ行を有効にしたい理由には、 + プロキシが複数連なっている場合に、ユーザはどのサーバが返した + エラーメッセージかを知る手段がほとんど無いというものがあります。</p> + + + <p>デフォルトである <code>Off</code> に設定をすると、フッタ行が抑制されます + (そして、Apache-1.2 以前と互換の動作をします)。 + <code>On</code> に設定した場合は、単にドキュメントの中に、サーバのバージョン、 + 稼動中のバーチャルホストの <a + href="#servername">ServerName</a> の書かれた行を追加し、 + <code>EMail</code> にした場合はさらに参照されたドキュメントに対する <a + href="#serveradmin">ServerAdmin</a> を指す "mailto:" が追加されます。</p> + + <p>バージョン 2.0.44 以降ではこのディレクティブは <directive module="core">ServerSignature</directive> - $B%G%#%l%/%F%#%V$K$h$jI=<($5$l$k>pJs$b@)8f$7$^$9!#(B</p> + ディレクティブにより表示される情報も制御します。</p> </usage> <seealso><directive module="core">ServerTokens</directive></seealso> </directivesynopsis> <directivesynopsis> <name>ServerTokens</name> -<description>Server HTTP $B1~Ez%X%C%@$r@_Dj$9$k(B</description> +<description>Server HTTP 応答ヘッダを設定する</description> <syntax>ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full</syntax> <default>ServerTokens Full</default> <contextlist><context>server config</context></contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"%/%i%$%"%s%H$KAw$jJV$9(B <code>Server</code> - $B1~Ez%X%C%@Fb$K!"%5!<%P$N0lHLE*$J(B OS $B<oJL$d!"(B - $B%3%s%Q%$%k$5$l$FAH$_9~$^$l$F$$$k%b%8%e!<%k$N>pJs$r(B - $B4^$a$k$+$I$&$+$r;XDj$7$^$9!#(B</p> + <p>このディレクティブは、クライアントに送り返す <code>Server</code> + 応答ヘッダ内に、サーバの一般的な OS 種別や、 + コンパイルされて組み込まれているモジュールの情報を + 含めるかどうかを指定します。</p> <dl> <dt><code>ServerTokens Prod[uctOnly]</code></dt> - <dd>$B%5!<%P$O(B ($BNc$($P(B): <code>Server: - Apache</code> $B$H$$$C$?$h$&$KAw$j$^$9!#(B</dd> + <dd>サーバは (例えば): <code>Server: + Apache</code> といったように送ります。</dd> <dt><code>ServerTokens Major</code></dt> @@ -2836,59 +2836,59 @@ module="core">Directory</directive></seealso> <dt><code>ServerTokens Min[imal]</code></dt> - <dd>$B%5!<%P$O(B ($BNc$($P(B): <code>Server: - Apache/2.0.41</code> $B$H$$$C$?$h$&$KAw$j$^$9!#(B</dd> + <dd>サーバは (例えば): <code>Server: + Apache/2.0.41</code> といったように送ります。</dd> <dt><code>ServerTokens OS</code></dt> - <dd>$B%5!<%P$O(B ($BNc$($P(B): <code>Server: Apache/2.0.41 - (Unix)</code> $B$H$$$C$?$h$&$KAw$j$^$9!#(B</dd> + <dd>サーバは (例えば): <code>Server: Apache/2.0.41 + (Unix)</code> といったように送ります。</dd> - <dt><code>ServerTokens Full</code> ($B$b$7$/$OL$;XDj(B)</dt> + <dt><code>ServerTokens Full</code> (もしくは未指定)</dt> - <dd>$B%5!<%P$O(B ($BNc$($P(B): <code>Server: Apache/2.0.41 - (Unix) PHP/4.2.2 MyMod/1.2</code> $B$H$$$C$?$h$&$KAw$j$^$9!#(B</dd> + <dd>サーバは (例えば): <code>Server: Apache/2.0.41 + (Unix) PHP/4.2.2 MyMod/1.2</code> といったように送ります。</dd> </dl> - <p>$B$3$N@_Dj$O%5!<%PA4BN$KE,MQ$5$l!"%P!<%A%c%k%[%9%H>e$GM-8z$K$7$?$j(B - $BL58z$K$7$?$j$O$G$-$^$;$s!#(B</p> + <p>この設定はサーバ全体に適用され、バーチャルホスト上で有効にしたり + 無効にしたりはできません。</p> - <p>$B%P!<%8%g%s(B 2.0.44 $B0J9_$G$O$3$N%G%#%l%/%F%#%V$O(B <directive + <p>バージョン 2.0.44 以降ではこのディレクティブは <directive module="core">ServerSignature</directive> - $B%G%#%l%/%F%#%V$K$h$jI=<($5$l$k>pJs$b@)8f$7$^$9!#(B</p> + ディレクティブにより表示される情報も制御します。</p> </usage> <seealso><directive module="core">ServerSignature</directive></seealso> </directivesynopsis> <directivesynopsis> <name>SetHandler</name> -<description>$B%^%C%A$9$k%U%!%$%k$,%O%s%I%i$G=hM}$5$l$k$h$&$K$9$k(B</description> +<description>マッチするファイルがハンドラで処理されるようにする</description> <syntax>SetHandler <var>handler-name</var>|None</syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context> </contextlist> <override>FileInfo</override> -<compatibility>Apache 2.0 $B$G(B core $B$K0\F0(B</compatibility> +<compatibility>Apache 2.0 で core に移動</compatibility> <usage> - <p><code>.htaccess</code> $B$d(B <directive type="section" module="core" + <p><code>.htaccess</code> や <directive type="section" module="core" >Directory</directive> - $B%;%/%7%g%s!"(B<directive type="section" module="core">Location</directive> - $B%;%/%7%g%s$K=q$+$l$?>l9g!"(B - $B$3$N%G%#%l%/%F%#%V$O$=$3$K$"$k$9$Y$F$N%U%!%$%k$,(B - <var>handler-name</var> $B$G;XDj$5$l$?(B<a href="../handler.html" - >$B%O%s%I%i(B</a>$B$G07$o$l$k$3$H$r6/@)$7$^$9!#Nc$($P!"3HD%;R$K4X$o$i$:!"(B - $B%G%#%l%/%H%jA4BN$,%$%a!<%8%^%C%W%U%!%$%k$H$7$F2r@O$7$FM_$7$$>l9g$K$O!"(B - $B0J2<$r$=$N%G%#%l%/%H%j$N(B <code>.htaccess</code> - $B%U%!%$%k$K5-=R$7$^$9(B:</p> + セクション、<directive type="section" module="core">Location</directive> + セクションに書かれた場合、 + このディレクティブはそこにあるすべてのファイルが + <var>handler-name</var> で指定された<a href="../handler.html" + >ハンドラ</a>で扱われることを強制します。例えば、拡張子に関わらず、 + ディレクトリ全体がイメージマップファイルとして解析して欲しい場合には、 + 以下をそのディレクトリの <code>.htaccess</code> + ファイルに記述します:</p> <example> SetHandler imap-file </example> - <p>$BJL$NNc(B: URL <code>http://servername/status</code> - $B$,;XDj$5$l$?$H$-$K%5!<%P$,>uBVJs9p$r$9$k$h$&$K$7$?$$$H$-$O!"0J2<$r(B - <code>httpd.conf</code> $B$K5-=R$7$^$9(B:</p> + <p>別の例: URL <code>http://servername/status</code> + が指定されたときにサーバが状態報告をするようにしたいときは、以下を + <code>httpd.conf</code> に記述します:</p> <example> <Location /status><br /> @@ -2898,9 +2898,9 @@ module="core">Directory</directive></seealso> </Location> </example> - <p><code>None</code> $B$H$$$&CM$r@_Dj$9$k$3$H$G!"(B - $BA0$NJ}$N(B <directive>SetHandler</directive> $B$GDj5A$5$l$?@_Dj$rL58z$K$9$k$3$H$,(B - $B$G$-$^$9!#(B</p> + <p><code>None</code> という値を設定することで、 + 前の方の <directive>SetHandler</directive> で定義された設定を無効にすることが + できます。</p> </usage> @@ -2910,7 +2910,7 @@ module="core">Directory</directive></seealso> <directivesynopsis> <name>SetInputFilter</name> -<description>$B%/%i%$%"%s%H$N%j%/%(%9%H$d(B POST $B$NF~NO$r=hM}$9$k%U%#%k%?$r@_Dj$9$k(B</description> +<description>クライアントのリクエストや POST の入力を処理するフィルタを設定する</description> <syntax>SetInputFilter <var>filter</var>[;<var>filter</var>...]</syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context> @@ -2918,22 +2918,22 @@ module="core">Directory</directive></seealso> <override>FileInfo</override> <usage> - <p><directive>SetInputFilter</directive> $B%G%#%l%/%F%#%V$O%/%i%$%"%s%H$N(B - $B%j%/%(%9%H$d(B POST $B$NF~NO$r%5!<%P$,<u$1<h$C$?$H$-$K=hM}$9$k%U%#%k%?$r(B - $B@_Dj$7$^$9!#$3$l$O(B <directive module="mod_mime">AddInputFilter</directive> - $B%G%#%l%/%F%#%V$r4^$a!"B>$N>l=j$GDj5A$5$l$F$$$k%U%#%k%?$N@_Dj$K(B - $BDI2C$5$l$^$9!#(B</p> + <p><directive>SetInputFilter</directive> ディレクティブはクライアントの + リクエストや POST の入力をサーバが受け取ったときに処理するフィルタを + 設定します。これは <directive module="mod_mime">AddInputFilter</directive> + ディレクティブを含め、他の場所で定義されているフィルタの設定に + 追加されます。</p> - <p>$BJ#?t$N%U%#%k%?$r;XDj$9$k$H$-$O!"%G!<%?$r=hM}$9$k=gHV$K(B - $B%;%_%3%m%s$G6h@Z$kI,MW$,$"$j$^$9!#(B</p> + <p>複数のフィルタを指定するときは、データを処理する順番に + セミコロンで区切る必要があります。</p> </usage> -<seealso><a href="../filter.html">$B%U%#%k%?(B</a>$B@bL@=q(B</seealso> +<seealso><a href="../filter.html">フィルタ</a>説明書</seealso> </directivesynopsis> <directivesynopsis> <name>SetOutputFilter</name> -<description>$B%5!<%P$N1~Ez$r=hM}$9$k%U%#%k%?$r@_Dj$9$k(B</description> +<description>サーバの応答を処理するフィルタを設定する</description> <syntax>SetOutputFilter <var>filter</var>[;<var>filter</var>...]</syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context> @@ -2941,14 +2941,14 @@ module="core">Directory</directive></seealso> <override>FileInfo</override> <usage> - <p><directive>SetOutputFilter</directive> $B%G%#%l%/%F%#%V$O(B - $B%5!<%P$N1~Ez$r%/%i%$%"%s%H$KAw$jJV$5$l$kA0$K=hM}$9$k%U%#%k%?$r@_Dj$7$^$9!#(B - $B$3$l$O(B <directive module="mod_mime">AddOutputFilter</directive> - $B%G%#%l%/%F%#%V$r4^$a!"B>$N>l=j$GDj5A$5$l$F$$$k%U%#%k%?$N@_Dj$K(B - $BDI2C$5$l$^$9!#(B</p> + <p><directive>SetOutputFilter</directive> ディレクティブは + サーバの応答をクライアントに送り返される前に処理するフィルタを設定します。 + これは <directive module="mod_mime">AddOutputFilter</directive> + ディレクティブを含め、他の場所で定義されているフィルタの設定に + 追加されます。</p> - <p>$BNc$($P!"0J2<$N@_Dj$O(B <code>/www/data/</code> $B%G%#%l%/%H%j$N$9$Y$F$N(B - $B%U%!%$%k$r(B SSI $B$G=hM}$7$^$9!#(B</p> + <p>例えば、以下の設定は <code>/www/data/</code> ディレクトリのすべての + ファイルを SSI で処理します。</p> <example> <Directory /www/data/><br /> @@ -2958,97 +2958,97 @@ module="core">Directory</directive></seealso> </Directory> </example> - <p>$BJ#?t$N%U%#%k%?$r;XDj$9$k$H$-$O!"%G!<%?$r=hM}$9$k=gHV$K(B - $B%;%_%3%m%s$G6h@Z$kI,MW$,$"$j$^$9!#(B</p> + <p>複数のフィルタを指定するときは、データを処理する順番に + セミコロンで区切る必要があります。</p> </usage> -<seealso><a href="../filter.html">$B%U%#%k%?(B</a>$B@bL@=q(B</seealso> +<seealso><a href="../filter.html">フィルタ</a>説明書</seealso> </directivesynopsis> <directivesynopsis> <name>TimeOut</name> -<description>$B3F%$%Y%s%H$K$D$$$F!"%j%/%(%9%H$r<:GT$5$;$k$^$G$K%5!<%P$,(B -$BBT$D;~4V$r@_Dj(B</description> +<description>各イベントについて、リクエストを失敗させるまでにサーバが +待つ時間を設定</description> <syntax>TimeOut <var>seconds</var></syntax> <default>TimeOut 300</default> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>TimeOut</directive> $B%G%#%l%/%F%#%V$O!"8=:_$N$H$3$m(B - $B0J2<$N;0$D$NBT$A;~4V$K$D$$$F$NDj5A$r9T$$$^$9(B:</p> + <p><directive>TimeOut</directive> ディレクティブは、現在のところ + 以下の三つの待ち時間についての定義を行います:</p> <ol> - <li>GET $B%j%/%(%9%H$r<u$1<h$k$N$K$+$+$kAm;~4V(B</li> + <li>GET リクエストを受け取るのにかかる総時間</li> - <li>POST $B$d(B PUT$B%j%/%(%9%H$K$*$$$F!"<!$N(B TCP $B%Q%1%C%H$,FO$/$^$G$NBT$A;~4V(B</li> + <li>POST や PUTリクエストにおいて、次の TCP パケットが届くまでの待ち時間</li> - <li>$B%l%9%]%s%9$rJV$9:]!"(BTCP $B$N(B ACK $B$,5"$C$F$/$k$^$G$N;~4V(B</li> + <li>レスポンスを返す際、TCP の ACK が帰ってくるまでの時間</li> </ol> - <p>$B>-Mh$K$OJL!9$N@_Dj$r$9$k$3$H$,2DG=$K$G$-$k$h$&9MN8Cf$G$9!#(B - Apache 1.2 $B0JA0$O%?%$%^!<$O(B 1200 $B$,%G%U%)%k%H$G$7$?$,!"(B - 300 $B$K2<$2$i$l$^$7$?!#(B300 $B$G$b$[$H$s$I$N>l9g$O==J,$9$.$kCM$G$9!#(B - $B%3!<%ICf$NJQ$J>l=j$K$^$@%Q%1%C%H$rAw$k:]$K%?%$%^$r%j%;%C%H$7$J$$(B - $B>l=j$,$"$k$+$b$7$l$J$$$N$G!"%G%U%)%k%H$r$h$j>.$5$$CM$K$O$7$F$$$^$;$s!#(B</p> + <p>将来には別々の設定をすることが可能にできるよう考慮中です。 + Apache 1.2 以前はタイマーは 1200 がデフォルトでしたが、 + 300 に下げられました。300 でもほとんどの場合は十分すぎる値です。 + コード中の変な場所にまだパケットを送る際にタイマをリセットしない + 場所があるかもしれないので、デフォルトをより小さい値にはしていません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>UseCanonicalName</name> -<description>$B%5!<%P$,<+J,<+?H$NL>A0$H%]!<%H$r7hDj$9$kJ}K!$r@_Dj$9$k(B</description> +<description>サーバが自分自身の名前とポートを決定する方法を設定する</description> <syntax>UseCanonicalName On|Off|Dns</syntax> <default>UseCanonicalName Off</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context></contextlist> <usage> - <p>$BB?$/$N>u67$G(B Apache $B$O(B<em>$B<+8J;2>H(B</em> URL$B!"$9$J$o$A(B - $BF1$8%5!<%P$r;X$9(B URL$B!"$r:n@.$9$kI,MW$,$"$j$^$9!#(B - <code>UseCanonicalName On</code> $B$N>l9g$O!"(B<directive - module="core">ServerName</directive> $B%G%#%l%/%F%#%V$G;XDj$5$l$F$$$k(B - $B%[%9%HL>$H%]!<%HHV9f$r;H$C$F!"$=$N@55,L>(B ($B<+8J;2>H$NL>A0(B) $B$r@8@.$7$^$9!#(B - $B$3$NL>A0$O!"$9$Y$F$N<+8J;2>H(B URL $B$G;H$o$l$^$9$7!"(BCGI $B$N(B - <code>SERVER_NAME</code> $B$H(B <code>SERVER_PORT</code> $B$G$b;H$o$l$^$9!#(B</p> - - <p><code>UseCanonicalName Off</code> $B$N>l9g!"(B - $B%/%i%$%"%s%H$,%[%9%HL>$H%]!<%H$r;XDj$7$?$H$-$K$O!"(B - $B$=$l$i$r85$K<+8J;2>H(B URL $B$r:n@.$7$^$9(B ($B;XDj$,$J$+$C$?$H$-$O(B - $B>e$NDj5A$HF1MM$K$7$F@55,L>$r2r7h$7$^$9(B)$B!#(B - $B$3$l$i$NCM$O(B<a href="../vhosts/name-based.html">$BL>A0%Y!<%9$N(B - $B%P!<%A%c%k%[%9%H(B</a>$B$r<BAu$G;H$o$l$F$$$k$N$HF1$8CM$G!"(B - $BF1$8%/%i%$%"%s%H$G<hF@$G$-$kCM$K$J$C$F$$$^$9!#(B - CGI $BJQ?t(B <code>SERVER_NAME</code> $B$H(B <code>SERVER_PORT</code> - $B$b%/%i%$%"%s%H$+$iM?$($i$l$?CM$+$i:n@.$5$l$^$9!#(B</p> - - <p>$B$3$N$h$&$J5sF0$,JXMx$JNc$O!"%$%s%H%i%M%C%H$N%5!<%P$G(B <code>www</code> - $B$N$h$&$JC;$$L>A0$G%f!<%6$,%^%7%s$K@\B3$9$k$H$-$G$9!#(B - $B%f!<%6$NF~NO$GC;$$%[%9%HL>$,;H$o$l$F$$$F!"(BURL $B$,(B<em>$B:G8e$N%9%i%C%7%eL5$7$N(B</em> - $B%G%#%l%/%H%j$K$J$C$F$$$k(B <code>http://www/splat</code> $B$N$h$&$J$H$-!"(B - Apache $B$O%j%/%(%9%H$r(B <code>http://www.domain.com/splat/</code> - $B$X%j%@%$%l%/%H$7$^$9!#(B - $BG'>Z$r$9$k$h$&$K@_Dj$7$F$$$k$H!"$3$N>l9g(B - $B%f!<%6$O(B 2 $B2sG'>Z$r$7$J$1$l$P$J$i$J$/$J$j$^$9(B (<code>www</code> $B$K(B - $BBP$7$F(B 1 $B2s!"(B<code>www.domain.com</code> $B$KBP$7$F$b$&(B 1 $B2s(B -- - $B>\:Y$O(B <a - href="http://httpd.apache.org/docs/misc/FAQ.html#prompted-twice">$B$3$NOCBj$N(B - FAQ</a> $B$r;2>H$7$F$/$@$5$$(B)$B!#(B - $B$7$+$7(B <directive>UseCanonicalName</directive> $B$,(B <code>Off</code> $B$K$J$C$F$$$k$H!"(B - Apache $B$O(B <code>http://www/splat/</code> $B$K%j%@%$%l%/%H$7$^$9!#(B</p> - - <p>$B;0$DL\$N%*%W%7%g%s(B <code>UseCanonicalName DNS</code> $B$O!"(B - $BBg5,LO$J(B IP $B%Y!<%9$N%P!<%A%c%k%[%9%F%#%s%0$G!"(B - <code>Host:</code> $B%X%C%@$rDs6!$7$J$$8E$$%/%i%$%"%s%H$r(B - $B%5%]!<%H$9$k>l9g$rA[Dj$7$F$$$^$9!#(B - $B$3$N%*%W%7%g%s$G$O(B Apache $B$O!"%/%i%$%"%s%H$,@\B3$7$?(B IP $B%"%I%l%9$KBP$7$F(B - DNS $B$N5U0z$-$r9T$J$C$F!"<+8J;2>H(B URL $B$r:n@.$7$^$9!#(B</p> - - <note type="warning"><title>$B7Y9p(B</title> - <p>CGI $B$,(B <code>SERVER_NAME</code> $B$K4X$7$F2?$i$+$NA0Ds>r7o$r(B - $B2>Dj$7$F$$$k$H$-$K$O!"$3$N%*%W%7%g%s$N@_Dj$K$h$C$F$OF0:n$7$J$/(B - $B$J$k$+$b$7$l$^$;$s!#%/%i%$%"%s%H$O<B<AE*$K$O%[%9%HL>$H$7$F(B - $B2?$G$bK>$_$NCM$r;XDj$9$k$3$H$,$G$-$^$9!#(BCGI $B$,(B - <code>SERVER_NAME</code> $B$r;H$C$F<+8J;2>H(B URL $B$r:n@.$9$k$3$H$7$+$7$J$$(B - $B>l9g$O!"$I$N@_Dj$r9T$J$C$F$bBg>fIW$J$O$:$G$9!#(B</p></note> + <p>多くの状況で Apache は<em>自己参照</em> URL、すなわち + 同じサーバを指す URL、を作成する必要があります。 + <code>UseCanonicalName On</code> の場合は、<directive + module="core">ServerName</directive> ディレクティブで指定されている + ホスト名とポート番号を使って、その正規名 (自己参照の名前) を生成します。 + この名前は、すべての自己参照 URL で使われますし、CGI の + <code>SERVER_NAME</code> と <code>SERVER_PORT</code> でも使われます。</p> + + <p><code>UseCanonicalName Off</code> の場合、 + クライアントがホスト名とポートを指定したときには、 + それらを元に自己参照 URL を作成します (指定がなかったときは + 上の定義と同様にして正規名を解決します)。 + これらの値は<a href="../vhosts/name-based.html">名前ベースの + バーチャルホスト</a>を実装で使われているのと同じ値で、 + 同じクライアントで取得できる値になっています。 + CGI 変数 <code>SERVER_NAME</code> と <code>SERVER_PORT</code> + もクライアントから与えられた値から作成されます。</p> + + <p>このような挙動が便利な例は、イントラネットのサーバで <code>www</code> + のような短い名前でユーザがマシンに接続するときです。 + ユーザの入力で短いホスト名が使われていて、URL が<em>最後のスラッシュ無しの</em> + ディレクトリになっている <code>http://www/splat</code> のようなとき、 + Apache はリクエストを <code>http://www.domain.com/splat/</code> + へリダイレクトします。 + 認証をするように設定していると、この場合 + ユーザは 2 回認証をしなければならなくなります (<code>www</code> に + 対して 1 回、<code>www.domain.com</code> に対してもう 1 回 -- + 詳細は <a + href="http://httpd.apache.org/docs/misc/FAQ.html#prompted-twice">この話題の + FAQ</a> を参照してください)。 + しかし <directive>UseCanonicalName</directive> が <code>Off</code> になっていると、 + Apache は <code>http://www/splat/</code> にリダイレクトします。</p> + + <p>三つ目のオプション <code>UseCanonicalName DNS</code> は、 + 大規模な IP ベースのバーチャルホスティングで、 + <code>Host:</code> ヘッダを提供しない古いクライアントを + サポートする場合を想定しています。 + このオプションでは Apache は、クライアントが接続した IP アドレスに対して + DNS の逆引きを行なって、自己参照 URL を作成します。</p> + + <note type="warning"><title>警告</title> + <p>CGI が <code>SERVER_NAME</code> に関して何らかの前提条件を + 仮定しているときには、このオプションの設定によっては動作しなく + なるかもしれません。クライアントは実質的にはホスト名として + 何でも望みの値を指定することができます。CGI が + <code>SERVER_NAME</code> を使って自己参照 URL を作成することしかしない + 場合は、どの設定を行なっても大丈夫なはずです。</p></note> </usage> <seealso><directive module="core">ServerName</directive></seealso> <seealso><directive module="mpm_common">Listen</directive></seealso> @@ -3056,38 +3056,38 @@ module="core">Directory</directive></seealso> <directivesynopsis type="section"> <name>VirtualHost</name> -<description>$BFCDj$N%[%9%HL>$d(B IP $B%"%I%l%9$N$_$KE,MQ$5$l$k%G%#%l%/%F%#%V$r(B -$B0O$`(B</description> +<description>特定のホスト名や IP アドレスのみに適用されるディレクティブを +囲む</description> <syntax><VirtualHost <var>addr</var>[:<var>port</var>] [<var>addr</var>[:<var>port</var>]] ...> ... </VirtualHost></syntax> <contextlist><context>server config</context></contextlist> <usage> - <p><directive type="section">VirtualHost</directive> $B5Z$S(B - <code></VirtualHost></code> $B$O!"(B - $BFCDj$N%P!<%A%c%k%[%9%H$KBP$7$F$N$_E,MQ$5$l$k%G%#%l%/%F%#%V72$r3g$k(B - $B$?$a$K;H$o$l$^$9!#(B - $B%P!<%A%c%k%[%9%H%3%s%F%-%9%H$G5v2D$5$l$kA4$F$N%G%#%l%/%F%#%V$r;XDj2DG=$G$9!#(B - $B%5!<%P$,!";XDj$5$l$?%P!<%A%c%k%[%9%H$K$"$k%I%-%e%a%s%H$X$N(B - $B%j%/%(%9%H$r<u$1IU$1$?>l9g!"(B - <directive type="section">VirtualHost</directive> $B%;%/%7%g%s$NCf$K$"$k(B - $B%G%#%l%/%F%#%V$,E,MQ$5$l$^$9!#(B - <var>Addr</var>$B$O!"<!$N$b$N$,MxMQ$G$-$^$9(B:</p> + <p><directive type="section">VirtualHost</directive> 及び + <code></VirtualHost></code> は、 + 特定のバーチャルホストに対してのみ適用されるディレクティブ群を括る + ために使われます。 + バーチャルホストコンテキストで許可される全てのディレクティブを指定可能です。 + サーバが、指定されたバーチャルホストにあるドキュメントへの + リクエストを受け付けた場合、 + <directive type="section">VirtualHost</directive> セクションの中にある + ディレクティブが適用されます。 + <var>Addr</var>は、次のものが利用できます:</p> <ul> - <li>$B%P!<%A%c%k%[%9%H$N(B IP $B%"%I%l%9(B</li> + <li>バーチャルホストの IP アドレス</li> - <li>$B%P!<%A%c%k%[%9%H$N(B IP $B$KBP1~$9$k40A4$J%I%a%$%sL>(B</li> + <li>バーチャルホストの IP に対応する完全なドメイン名</li> - <li><code>NameVirtualHost *</code> $B$H6&$K;H$o$l$k!"(B - $B$9$Y$F$N(B IP $B%"%I%l%9$K%^%C%A$9$kJ8;z(B <code>*</code></li> + <li><code>NameVirtualHost *</code> と共に使われる、 + すべての IP アドレスにマッチする文字 <code>*</code></li> - <li>IP $B%Y!<%9$N%P!<%A%c%k%[%9%H$GB>$N$b$N$K%^%C%A$7$J$$(B IP $B%"%I%l%9(B - $B$N$?$a$NJ8;zNs(B <code>_default_</code></li> + <li>IP ベースのバーチャルホストで他のものにマッチしない IP アドレス + のための文字列 <code>_default_</code></li> </ul> - <example><title>$BNc(B</title> + <example><title>例</title> <VirtualHost 10.1.2.3><br /> <indent> ServerAdmin webmaster@host.foo.com<br /> @@ -3099,8 +3099,8 @@ module="core">Directory</directive></seealso> </VirtualHost> </example> - <p>IPv6 $B%"%I%l%9$O%*%W%7%g%s$N%]!<%HHV9f$N;XDj$H6hJL$9$k$?$a$K!"(B - $B3Q3g8L$G3g$C$F;XDj$9$kI,MW$,$"$j$^$9!#<!$O(B IPv6 $B$NNc$G$9(B:</p> + <p>IPv6 アドレスはオプションのポート番号の指定と区別するために、 + 角括弧で括って指定する必要があります。次は IPv6 の例です:</p> <example> <VirtualHost [2001:db8::a00:20ff:fea7:ccea]><br /> @@ -3114,79 +3114,79 @@ module="core">Directory</directive></seealso> </VirtualHost> </example> - <p>$B3F!9$N%P!<%A%c%k%[%9%H$K$O$=$l$>$l0c$&(B IP $B%"%I%l%9!"%]!<%HHV9f(B - $B$b$7$/$O%[%9%HL>$KBP1~$9$kI,MW$,$"$j!"(B - 1 $BHVL\$N>l9g$K$OJ#?t$N%"%I%l%9$G(B IP $B%Q%1%C%H$r<u?.$G$-$k$h$&$K(B - $B%5!<%P%^%7%s$r@_Dj$7$J$1$l$P$J$j$^$;$s!#(B - ($B$b$7!"%^%7%s$,J#?t$N%M%C%H%o!<%/%$%s%?!<%U%'!<%9$H;}$?$J$$>l9g$O!"(B - (OS$B$,%5%]!<%H$7$F$$$l$P(B) <code>ifconfig alias</code> $B%3%^%s%I$K$h$j(B - $BC#@.$G$-$^$9(B)$B!#(B</p> - - <p><code>:port</code> $B$H$$$C$?7A<0$G5-=R$9$k$3$H$K$h$j!"(B - $B%^%C%A$5$;$k%]!<%H$rJQ992DG=$G$9!#(B - $B$3$N;XDj$r$7$J$$>l9g$K$O!"<g%5!<%P@_Dj$K$*$1$k(B - $B0lHV:G8e$K(B <code><a href="#port">Port</a></code> $B$G;XDj$5$l$?%]!<%H$,(B - $B%G%U%)%k%H$H$J$j$^$9!#(B - <code>:*</code> $B$r;XDj$9$k$3$H$K$h$j!"(B - $B%"%I%l%9>e$NA4$F$N%]!<%H$K%^%C%A$7$^$9!#(B(<code>_default_</code> $B$N$H$-$O(B - $B$3$l$r;H$&$3$H$,?d>)$5$l$F$$$^$9!#(B)</p> - - <p><strong>$B%;%-%e%j%F%#$K4X$7$F(B</strong>: - $B%5!<%P!<$r5/F0$7$?0J30$N%f!<%6$,%m%0%U%!%$%k$,J]4I$5$l$k%G%#%l%/%H%j$K(B - $B=q$-9~$_2DG=$J$H$-$K$J$<%;%-%e%j%F%#$,GK$i$l$k2DG=@-$,$"$k$+$N>\:Y$O(B - <a href="../misc/security_tips.html">$B%;%-%e%j%F%#$K4X$9$k%3%D(B</a> $B$r(B - $B;2>H$7$F$/$@$5$$!#(B</p> + <p>各々のバーチャルホストにはそれぞれ違う IP アドレス、ポート番号 + もしくはホスト名に対応する必要があり、 + 1 番目の場合には複数のアドレスで IP パケットを受信できるように + サーバマシンを設定しなければなりません。 + (もし、マシンが複数のネットワークインターフェースと持たない場合は、 + (OSがサポートしていれば) <code>ifconfig alias</code> コマンドにより + 達成できます)。</p> + + <p><code>:port</code> といった形式で記述することにより、 + マッチさせるポートを変更可能です。 + この指定をしない場合には、主サーバ設定における + 一番最後に <code><a href="#port">Port</a></code> で指定されたポートが + デフォルトとなります。 + <code>:*</code> を指定することにより、 + アドレス上の全てのポートにマッチします。(<code>_default_</code> のときは + これを使うことが推奨されています。)</p> + + <p><strong>セキュリティに関して</strong>: + サーバーを起動した以外のユーザがログファイルが保管されるディレクトリに + 書き込み可能なときになぜセキュリティが破られる可能性があるかの詳細は + <a href="../misc/security_tips.html">セキュリティに関するコツ</a> を + 参照してください。</p> - <note><title>$BCm0UE@(B</title> - <p><directive type="section">VirtualHost</directive> $B$O(B Apache $B$,(B Listen $B$9$k(B - IP $B%"%I%l%9$K$O1F6A$rM?$((B<strong>$B$^$;$s(B</strong>$B!#(B - <directive module="mpm_common">Listen</directive> $B$r(B - $B;H$C$F(B Apache $B$,@5$7$$%"%I%l%9$r(B listen $B$9$k$h$&$K@_Dj$9$kI,MW$,$"$j$^$9!#(B</p> + <note><title>注意点</title> + <p><directive type="section">VirtualHost</directive> は Apache が Listen する + IP アドレスには影響を与え<strong>ません</strong>。 + <directive module="mpm_common">Listen</directive> を + 使って Apache が正しいアドレスを listen するように設定する必要があります。</p> </note> - <p>IP $B%Y!<%9$N%P!<%A%c%k%[%9%H$r;H$C$F$$$k>l9g$O!"FCJL$JL>A0(B - <code>_default_</code> $B$r;XDj$9$k$3$H$,$G$-$^$9!#$=$N>l9g$O(B - $B$=$N%P!<%A%c%k%[%9%H$OB>$N%P!<%A%c%k%[%9%H$GL@<(E*$K5s$2$i$l$F$$$J$$(B - $B$9$Y$F$N(B IP $B%"%I%l%9$K%^%C%A$7$^$9!#(B<code>_default_</code> $B%P!<%A%c%k%[%9%H$,L5$$(B - $B>l9g$K(B IP $B$,%P!<%A%c%k%[%9%H$G;XDj$5$l$?$b$N$K%^%C%A$7$J$$$H$-$O!"(B - VirtualHost $B%;%/%7%g%s$N30$N$9$Y$F$NDj5A$+$i$J$k!V<g!W%5!<%P@_Dj$,(B - $B;H$o$l$^$9!#(B($B$?$@$7!"(B<directive - module="core">NameVirtualHost</directive> $B%G%#%l%/%F%#%V$K%^%C%A$9$k(B - $B$9$Y$F$N(B IP $B%"%I%l%9$O!V<g!W%5!<%P@_Dj$b(B <code>_default_</code> $B%P!<%A%c%k%[%9%H$b(B - $B;H$o$J$$$3$H$KCm0U$7$F$/$@$5$$!#>\$7$/$O(B <a - href="../vhosts/name-based.html">$B%M!<%`%Y!<%9$N%P!<%A%c%k%[%9%H(B</a> $B$r(B - $B;2>H$7$F$/$@$5$$!#(B)</p> - - <p><code>:port</code> $B$H$$$C$?7A<0$G5-=R$9$k$3$H$K$h$j!"(B - $B%^%C%A$5$;$k%]!<%H$rJQ992DG=$G$9!#(B - $B$3$N;XDj$r$7$J$$>l9g$K$O!"<g%5!<%P@_Dj$K$*$1$k(B - $B0lHV:G8e$K(B <directive module="mpm_common">Listen</directive> $B$G;XDj$5$l$?(B - $B%]!<%H$,%G%U%)%k%H$H$J$j$^$9!#(B - <code>:*</code> $B$r;XDj$9$k$3$H$K$h$j!"(B - $B%"%I%l%9>e$NA4$F$N%]!<%H$K%^%C%A$7$^$9!#(B(<code>_default_</code> $B$N$H$-$O(B - $B$3$l$r;H$&$3$H$,?d>)$5$l$F$$$^$9!#(B)</p> - - <p><code>:port</code> $B$H$$$C$?7A<0$G5-=R$9$k$3$H$K$h$j!"(B - $B%^%C%A$5$;$k%]!<%H$rJQ992DG=$G$9!#(B - $B$3$N;XDj$r$7$J$$>l9g$K$O!"<g%5!<%P@_Dj$K$*$1$k(B - $B0lHV:G8e$K(B <code><a href="#port">Port</a></code> $B$G;XDj$5$l$?%]!<%H$,(B - $B%G%U%)%k%H$H$J$j$^$9!#(B - <code>:*</code> $B$r;XDj$9$k$3$H$K$h$j!"(B - $B%"%I%l%9>e$NA4$F$N%]!<%H$K%^%C%A$7$^$9!#(B(<code>_default_</code> $B$N$H$-$O(B - $B$3$l$r;H$&$3$H$,?d>)$5$l$F$$$^$9!#(B)</p> - - <note type="warning"><title>$B%;%-%e%j%F%#(B</title> - <p>$B%5!<%P!<$r5/F0$7$?0J30$N%f!<%6$,%m%0%U%!%$%k$,J]4I$5$l$k%G%#%l%/%H%j$K(B - $B=q$-9~$_2DG=$J$H$-$K$J$<%;%-%e%j%F%#$,GK$i$l$k2DG=@-$,$"$k$+$N>\:Y$O(B - <a href="../misc/security_tips.html">$B%;%-%e%j%F%#$K4X$9$k%3%D(B</a> $B$r(B - $B;2>H$7$F$/$@$5$$!#(B</p></note> + <p>IP ベースのバーチャルホストを使っている場合は、特別な名前 + <code>_default_</code> を指定することができます。その場合は + そのバーチャルホストは他のバーチャルホストで明示的に挙げられていない + すべての IP アドレスにマッチします。<code>_default_</code> バーチャルホストが無い + 場合に IP がバーチャルホストで指定されたものにマッチしないときは、 + VirtualHost セクションの外のすべての定義からなる「主」サーバ設定が + 使われます。(ただし、<directive + module="core">NameVirtualHost</directive> ディレクティブにマッチする + すべての IP アドレスは「主」サーバ設定も <code>_default_</code> バーチャルホストも + 使わないことに注意してください。詳しくは <a + href="../vhosts/name-based.html">ネームベースのバーチャルホスト</a> を + 参照してください。)</p> + + <p><code>:port</code> といった形式で記述することにより、 + マッチさせるポートを変更可能です。 + この指定をしない場合には、主サーバ設定における + 一番最後に <directive module="mpm_common">Listen</directive> で指定された + ポートがデフォルトとなります。 + <code>:*</code> を指定することにより、 + アドレス上の全てのポートにマッチします。(<code>_default_</code> のときは + これを使うことが推奨されています。)</p> + + <p><code>:port</code> といった形式で記述することにより、 + マッチさせるポートを変更可能です。 + この指定をしない場合には、主サーバ設定における + 一番最後に <code><a href="#port">Port</a></code> で指定されたポートが + デフォルトとなります。 + <code>:*</code> を指定することにより、 + アドレス上の全てのポートにマッチします。(<code>_default_</code> のときは + これを使うことが推奨されています。)</p> + + <note type="warning"><title>セキュリティ</title> + <p>サーバーを起動した以外のユーザがログファイルが保管されるディレクトリに + 書き込み可能なときになぜセキュリティが破られる可能性があるかの詳細は + <a href="../misc/security_tips.html">セキュリティに関するコツ</a> を + 参照してください。</p></note> </usage> -<seealso><a href="../vhosts/">Apache $B%P!<%A%c%k%[%9%H@bL@=q(B</a></seealso> -<seealso><a href="../dns-caveats.html">DNS $B$H(B Apache $B$K4X$9$kOC(B</a></seealso> -<seealso><a href="../bind.html">Apache $B$,;HMQ$9$k%"%I%l%9$H%]!<%H$N@_Dj(B</a></seealso> -<seealso>$B%j%/%(%9%H$r<u$1$?:]$K$3$l$i$N0[$J$k%;%/%7%g%s$,(B - $BAH$_9g$o$5$l$kJ}K!$K$D$$$F$O(B <a href="../sections.html"> - <Directory>, <Location>, <Files> $B%;%/%7%g%s$NF0:nK!(B</a></seealso> +<seealso><a href="../vhosts/">Apache バーチャルホスト説明書</a></seealso> +<seealso><a href="../dns-caveats.html">DNS と Apache に関する話</a></seealso> +<seealso><a href="../bind.html">Apache が使用するアドレスとポートの設定</a></seealso> +<seealso>リクエストを受けた際にこれらの異なるセクションが + 組み合わされる方法については <a href="../sections.html"> + <Directory>, <Location>, <Files> セクションの動作法</a></seealso> </directivesynopsis> </modulesynopsis> diff --git a/docs/manual/mod/directive-dict.xml.ja b/docs/manual/mod/directive-dict.xml.ja index 57809f14da..02cbd33248 100644 --- a/docs/manual/mod/directive-dict.xml.ja +++ b/docs/manual/mod/directive-dict.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -22,274 +22,274 @@ <manualpage metafile="directive-dict.xml.meta"> - <title>$B%G%#%l%/%F%#%V$N2r@b$K;H$o$l$kMQ8l(B</title> + <title>ディレクティブの解説に使われる用語</title> <summary> - <p>$B$3$NJ8=q$O3F(B Apache <a href="directives.html">$B@_Dj%G%#%l%/%F%#%V(B</a> - $B$r@bL@$9$k$?$a$K;H$o$l$F$$$kMQ8l$r@bL@$7$^$9!#(B</p> + <p>この文書は各 Apache <a href="directives.html">設定ディレクティブ</a> + を説明するために使われている用語を説明します。</p> </summary> -<seealso><a href="../configuring.html">$B@_Dj%U%!%$%k(B</a></seealso> +<seealso><a href="../configuring.html">設定ファイル</a></seealso> -<section id="Description"><title>$B@bL@(B</title> +<section id="Description"><title>説明</title> -<p>$B%G%#%l%/%F%#%V$NL\E*$N4JC1$J@bL@!#(B</p> +<p>ディレクティブの目的の簡単な説明。</p> </section> -<section id="Syntax"><title>$B9=J8(B</title> - - <p>$B@_Dj%U%!%$%kCf$N%G%#%l%/%F%#%V$N=q<0$r<($7$^$9!#(B - $B$3$N9=J8$O%G%#%l%/%F%#%VFCM-$J$N$G!">\:Y$O%G%#%l%/%F%#%V$N@bL@$r(B - $B;2>H$7$F$/$@$5$$!#0lHLE*$K!"%G%#%l%/%F%#%VL>$N8e$K$O(B - $B6uGr$K$h$jJ,3d$5$l$?$$$/$D$+$N0z?t$,B3$-$^$9!#(B - $B0z?t$,6uGr$r4^$`$H$-$OFs=E0zMQId(B ($BLuCm(B: ") - $B$G0O$^$l$F$$$^$9!#(B $B%*%W%7%g%J%k$J0z?t$O3g8L(B - ($BLuCm(B: []) $B$G0O$^$l$F$$$^$9!#(B - $B0z?t$,J#?t$NCM$r<h$jF@$k>l9g$O!"$=$l$i$NCM$O?bD>$NK@(B "|" - $B$G(B $BJ,3d$5$l$F$$$^$9!#(B - $BJQ99$5$l$J$$%F%-%9%H$O%G%U%)%k%H$N%U%)%s%H$GI=<($5$l!"CV49$NI,MW$J(B - $B0z?t$O(B<em>$B6/D4$5$l$F(B</em>$BI=<($5$l$^$9!#(B - $B0z?t$N?t$,JQ$o$k%G%#%l%/%F%#%V$O:G8e$N(B - $B0z?t$,7+$jJV$5$l$k$3$H$r<($9$?$a$K(B "..." - $B$G=*$o$j$^$9!#(B</p> +<section id="Syntax"><title>構文</title> + + <p>設定ファイル中のディレクティブの書式を示します。 + この構文はディレクティブ特有なので、詳細はディレクティブの説明を + 参照してください。一般的に、ディレクティブ名の後には + 空白により分割されたいくつかの引数が続きます。 + 引数が空白を含むときは二重引用符 (訳注: ") + で囲まれています。 オプショナルな引数は括弧 + (訳注: []) で囲まれています。 + 引数が複数の値を取り得る場合は、それらの値は垂直の棒 "|" + で 分割されています。 + 変更されないテキストはデフォルトのフォントで表示され、置換の必要な + 引数は<em>強調されて</em>表示されます。 + 引数の数が変わるディレクティブは最後の + 引数が繰り返されることを示すために "..." + で終わります。</p> <p> - $B%G%#%l%/%F%#%V$OB?$/$N0c$&7?$N0z?t$r$H$j$^$9!#$$$/$D$+!"NI$/(B - $B;H$o$l$k$b$N$r0J2<$GDj5A$7$^$9!#(B</p> + ディレクティブは多くの違う型の引数をとります。いくつか、良く + 使われるものを以下で定義します。</p> <dl> <dt><em>URL</em></dt> <dd><code>http://www.example.com/path/to/file.html</code> - $B$N$h$&$K!"(B - $B%9%-!<%`!"%[%9%HL>!"%Q%9L>(B($B>JN,2DG=(B)$B$r4^$s$G$$$k40A4$J(B - Uniform Resource Locator$B!#(B</dd> + のように、 + スキーム、ホスト名、パス名(省略可能)を含んでいる完全な + Uniform Resource Locator。</dd> <dt><em>URL-path</em></dt> - <dd><code>/path/to/file.html</code> $B$N$h$&$K!"%9%-!<%`$H(B - $B%[%9%HL>$N8e$KB3$/(B <em>url</em> - $B$N0lIt!#(B<em>url-path</em> $B$O(B - $B%U%!%$%k%7%9%F%`$+$i$N;kE@$G$O$J$/!"(B - $B%&%'%V$+$i$N;kE@$G%j%=!<%9$rI=8=$7$^$9!#(B</dd> + <dd><code>/path/to/file.html</code> のように、スキームと + ホスト名の後に続く <em>url</em> + の一部。<em>url-path</em> は + ファイルシステムからの視点ではなく、 + ウェブからの視点でリソースを表現します。</dd> <dt><em>file-path</em></dt> <dd><code>/usr/local/apache/htdocs/path/to/file.html</code> - $B$N$h$&$K!"(B - $B%k!<%H%G%#%l%/%H%j$+$i;O$^$k%m!<%+%k$N%U%!%$%k%7%9%F%`>e$N%U%!%$%k$X$N%Q%9!#(B - $BDL>o!"%9%i%C%7%e$G;O$^$i$J$$(B <em>file-path</em> $B$O(B <a + のように、 + ルートディレクトリから始まるローカルのファイルシステム上のファイルへのパス。 + 通常、スラッシュで始まらない <em>file-path</em> は <a href="core.html#serverroot">ServerRoot</a> - $B$+$i$NAjBP%Q%9$H$7$F(B $B07$o$l$^$9!#(B</dd> + からの相対パスとして 扱われます。</dd> <dt><em>directory-path</em></dt> <dd><code>/usr/local/apache/htdocs/path/to/</code> - $B$N$h$&$K!"(B - $B%k!<%H%G%#%l%/%H%j$+$i;O$^$k%m!<%+%k$N%U%!%$%k%7%9%F%`$N%G%#%l%/%H%j$X$N(B - $B%Q%9!#(B</dd> + のように、 + ルートディレクトリから始まるローカルのファイルシステムのディレクトリへの + パス。</dd> <dt><em>filename</em></dt> - <dd><code>file.html</code> $B$N$h$&$K!"%Q%9>pJs$NIU$$$F$$$J$$(B - $B%U%!%$%kL>!#(B</dd> + <dd><code>file.html</code> のように、パス情報の付いていない + ファイル名。</dd> <dt><em>regex</em></dt> - <dd>Perl $B8_49$N(B<a href="../glossary.html#regex">$B@55,I=8=(B</a>$B$G$9!#(B - $B%G%#%l%/%F%#%V$NDj5A$,(B <em>regex</em> - $B$,2?$KBP$7$F%^%C%A$r9T$J$&$N$+$r;XDj$7$^$9!#(B</dd> + <dd>Perl 互換の<a href="../glossary.html#regex">正規表現</a>です。 + ディレクティブの定義が <em>regex</em> + が何に対してマッチを行なうのかを指定します。</dd> <dt><em>extension</em></dt> - <dd>$B0lHLE*$K$O(B <em>filename</em> - $B$N:G8e$N%I%C%H$N8e$NItJ,$G$9!#(B $B$7$+$7!"(BApache - $B$OJ#?t$N%U%!%$%k$N3HD%;R$rG'<1$7$^$9$N$G!"(B<em>filename</em> - $B$KJ#?t$N%I%C%H$,$"$k$H!":G=i$N%I%C%H$N8e$N!"$=$l$>$l$N%I%C%H$GJ,N%$5$l$?ItJ,$,(B - <em>extension</em> ($BLuCm(B: $B3HD%;R(B) - $B$K$J$j$^$9!#Nc$($P!"(B<em>filename</em> + <dd>一般的には <em>filename</em> + の最後のドットの後の部分です。 しかし、Apache + は複数のファイルの拡張子を認識しますので、<em>filename</em> + に複数のドットがあると、最初のドットの後の、それぞれのドットで分離された部分が + <em>extension</em> (訳注: 拡張子) + になります。例えば、<em>filename</em> <code>file.html.en</code> - $B$K$OFs$D$N3HD%;R$,$"$j$^$9!#(B<code>.html</code> $B$H(B - <code>.en</code> $B$G$9!#(BApache - $B$N%G%#%l%/%F%#%V$G$O!"(B<em>extension</em> - $B$O%I%C%HIU$-$G$bL5$7$G$b;XDj$G$-$^$9!#$5$i$K!"(B<em>extension</em> - $B$O(B $BBgJ8;z>.J8;z$r6hJL$7$^$;$s!#(B</dd> + には二つの拡張子があります。<code>.html</code> と + <code>.en</code> です。Apache + のディレクティブでは、<em>extension</em> + はドット付きでも無しでも指定できます。さらに、<em>extension</em> + は 大文字小文字を区別しません。</dd> <dt><em>MIME-type</em></dt> - <dd><code>text/html</code> $B$N$h$&$K!"%9%i%C%7%e$GJ,N%$5$l$?(B - $B<g%U%)!<%^%C%H$HI{%U%)!<%^%C%H$K$h$C$F%U%!%$%k$N7A<0$r(B - $BI=$9J}K!$G$9!#(B</dd> + <dd><code>text/html</code> のように、スラッシュで分離された + 主フォーマットと副フォーマットによってファイルの形式を + 表す方法です。</dd> <dt><em>env-variable</em></dt> - <dd>Apache $B$N@_Dj$K$h$jDj5A$5$l$k(B <a - href="../env.html">$B4D6-JQ?t(B</a>$B$NL>A0$G$9!#$3$l$O%*%Z%l!<%F%#%s%0%7%9%F%`$N(B - $B4D6-JQ?t$HF1$8$H$O8B$i$J$$$3$H$KCm0U$7$F$/$@$5$$!#>\:Y$O(B <a - href="../env.html">$B4D6-JQ?t$N@bL@(B</a>$B$r;2>H$7$F$/$@$5$$!#(B</dd> + <dd>Apache の設定により定義される <a + href="../env.html">環境変数</a>の名前です。これはオペレーティングシステムの + 環境変数と同じとは限らないことに注意してください。詳細は <a + href="../env.html">環境変数の説明</a>を参照してください。</dd> </dl> </section> -<section id="Default"><title>$B%G%U%)%k%H(B</title> - - <p>$B%G%#%l%/%F%#%V$K%G%U%)%k%HCM(B - (<em>$B$9$J$o$A(B</em>$B!"@_Dj%U%!%$%k$+$i(B - $B>JN,$5$l$F$$$F$b!"(BApache - $B%&%'%V%5!<%P$OFCDj$NCM$K@_Dj$5$l$F$$$k$+$N$h$&$K(B - $BF0:n$7$^$9(B) $B$,$"$k>l9g$O$3$3$K5-=R$5$l$^$9!#(B - $B%G%U%)%k%HCM$NL5$$>l9g!"$3$3$O(B "<em>None</em>" $B$H(B - $B=q$+$l$^$9!#$3$3$G=q$+$l$F$$$k%G%U%)%k%H$O%5!<%P$H6&$KG[I[$5$l$F$$$k(B - $B%G%U%)%k%H$N(B httpd.conf - $BFb$K=q$+$l$F$$$k%G%#%l%/%F%#%V$NCM$H(B - $B0c$&2DG=@-$,$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B</p> +<section id="Default"><title>デフォルト</title> + + <p>ディレクティブにデフォルト値 + (<em>すなわち</em>、設定ファイルから + 省略されていても、Apache + ウェブサーバは特定の値に設定されているかのように + 動作します) がある場合はここに記述されます。 + デフォルト値の無い場合、ここは "<em>None</em>" と + 書かれます。ここで書かれているデフォルトはサーバと共に配布されている + デフォルトの httpd.conf + 内に書かれているディレクティブの値と + 違う可能性があることに注意してください。</p> </section> -<section id="Context"><title>$B%3%s%F%-%9%H(B</title> +<section id="Context"><title>コンテキスト</title> <p> - $B$3$l$O!"%5!<%P$N@_Dj%U%!%$%kCf$N$I$3$G%G%#%l%/%F%#%V$,M-8z$J$N$+$r<($7$^$9!#(B - $B<!$K<($9CM$,0l$D0J>e%+%s%^6h@Z$j$GNs5s$5$l$F$$$^$9!#(B</p> + これは、サーバの設定ファイル中のどこでディレクティブが有効なのかを示します。 + 次に示す値が一つ以上カンマ区切りで列挙されています。</p> <dl> - <dt>$B%5!<%P@_Dj%U%!%$%k(B</dt> + <dt>サーバ設定ファイル</dt> - <dd>$B$3$l$O!"%5!<%P@_Dj%U%!%$%k(B - (<em>$BNc$($P(B</em>$B!"(B<code>httpd.conf</code>, + <dd>これは、サーバ設定ファイル + (<em>例えば</em>、<code>httpd.conf</code>, <code>srm.conf</code>, <code>access.conf</code>) - $BFb$G$O;HMQ$G$-$^$9$,!"(B - <directive module="core" type="section">VirtualHost</directive> $B$d(B - <directive module="core" type="section">Directory</directive> $B$NCf$G$O(B - <strong>$B;HMQ$G$-$J$$(B</strong>$B$3$H$r<($7$^$9!#(B - <code>.htaccess</code>$B%U%!%$%k$G$N;HMQ$O5v2D$5$l$F$$$^$;$s!#(B</dd> + 内では使用できますが、 + <directive module="core" type="section">VirtualHost</directive> や + <directive module="core" type="section">Directory</directive> の中では + <strong>使用できない</strong>ことを示します。 + <code>.htaccess</code>ファイルでの使用は許可されていません。</dd> - <dt>$B%P!<%A%c%k%[%9%H(B</dt> + <dt>バーチャルホスト</dt> - <dd>$B$3$l$O!"%5!<%P@_Dj%U%!%$%k$N(B + <dd>これは、サーバ設定ファイルの <directive module="core" type="section">VirtualHost</directive> - $B$NCf$G;HMQ$G$-$k$3$H$r<($7$^$9!#(B</dd> + の中で使用できることを示します。</dd> - <dt>$B%G%#%l%/%H%j(B</dt> + <dt>ディレクトリ</dt> - <dd>$B$3$l$O!"%5!<%P@_Dj%U%!%$%k$N(B + <dd>これは、サーバ設定ファイルの <directive module="core" type="section">Directory</directive>, <directive module="core" type="section">Location</directive>, <directive module="core" type="section">Files</directive>, <directive module="mod_proxy" type="section">Proxy</directive> - $B%3%s%F%J$NCf$G!"(B <a - href="../sections.html">$B@_Dj%;%/%7%g%s(B</a> - $B$G@bL@$5$l$F$$$k@)8B$N2<$G;HMQ$G$-$k$3$H$r<($7$^$9!#(B</dd> + コンテナの中で、 <a + href="../sections.html">設定セクション</a> + で説明されている制限の下で使用できることを示します。</dd> <dt>.htaccess</dt> - <dd>$B$3$l$O!"%G%#%l%/%H%j(B<em>$BKh(B</em>$B$N(B - <code>.htaccess</code> $B%U%!%$%kFb$G(B - $B;HMQ2DG=$G$"$k$3$H$r<($7$^$9!#(B $B$?$@!"(B<a - href="#Override">$B>e=q$-(B</a> - $B$N@_Dj$K$h$C$F$O!"=hM}$5$l$J$$$+$b$7$l$^$;$s!#(B</dd> + <dd>これは、ディレクトリ<em>毎</em>の + <code>.htaccess</code> ファイル内で + 使用可能であることを示します。 ただ、<a + href="#Override">上書き</a> + の設定によっては、処理されないかもしれません。</dd> </dl> <p> - $B%G%#%l%/%F%#%V$O;X<($5$l$?%3%s%F%-%9%H$G(B<em>$B$N$_(B</em>$B5v2D$5$l$^$9!#(B - $BB>$N>l=j$G;H$*$&$H$9$k$H!"%5!<%P$,$=$N%3%s%F%-%9%H$r@5$7$/07$($J$/(B - $B$J$k$h$&$J@_Dj%(%i!<$,H/@8$9$k$+!"%5!<%P$,$^$C$?$/F0:n$7$J$/$J$k!"(B - <em>$B$9$J$o$A(B</em>$B!"%5!<%P$,5/F0$7$J$/$J$k$H$$$&$3$H$K$J$j$^$9!#(B</p> + ディレクティブは指示されたコンテキストで<em>のみ</em>許可されます。 + 他の場所で使おうとすると、サーバがそのコンテキストを正しく扱えなく + なるような設定エラーが発生するか、サーバがまったく動作しなくなる、 + <em>すなわち</em>、サーバが起動しなくなるということになります。</p> <p> - $B%G%#%l%/%F%#%V$NM-8z$J0LCV$O!"<B:]$O5s$2$i$l$F$$$k%3%s%F%-%9%H$N(B - $BO@M}OB(B ($BLuCm(B: Boolen OR) - $B$K$J$j$^$9!#8@$$49$($k$H!"(B - "<code>$B%5!<%P@_Dj%U%!%$%k!"(B.htaccess</code>" $B$GM-8z$@$H(B - $B5-$5$l$F$$$k%G%#%l%/%F%#%V$O(B <code>httpd.conf</code> - $B%U%!%$%k$H(B <code>.htaccess</code> - $B%U%!%$%k$H$GM-8z$G$9$,!"(B <directive module="core" + ディレクティブの有効な位置は、実際は挙げられているコンテキストの + 論理和 (訳注: Boolen OR) + になります。言い換えると、 + "<code>サーバ設定ファイル、.htaccess</code>" で有効だと + 記されているディレクティブは <code>httpd.conf</code> + ファイルと <code>.htaccess</code> + ファイルとで有効ですが、 <directive module="core" type="section">Directory</directive> - $B$d(B <directive module="core" type="section">VirtualHost</directive> - $B$NCf$G$O;HMQ$G$-$^$;$s!#(B</p> + や <directive module="core" type="section">VirtualHost</directive> + の中では使用できません。</p> </section> -<section id="Override"><title>$B>e=q$-(B</title> - - <p>$B$3$N%G%#%l%/%F%#%V$NB0@-$O!"(B<code>.htaccess</code> - $B%U%!%$%kCf$K(B - $B%G%#%l%/%F%#%V$,8=$l$?$H$-$K!"$=$l$N=hM}$rM-8z$K$9$k$?$a$K(B - $B$I$N@_Dj$N>e=q$-$,I,MW$+$r<($7$^$9!#(B $B%G%#%l%/%F%#%V$N(B - <a href="#Context">$B%3%s%F%-%9%H(B</a> - $B$,!"(B<code>.htaccess</code> - $B%U%!%$%kCf$G$O5v2D$7$F$$$J$$>l9g$O!"(B $B$3$NB0@-$O(B - "<em>$BE,MQIT2D(B</em>" $B$H=q$+$l$^$9!#(B</p> - - <p>$B>e=q$-$O!"(B<directive module="core">AllowOverride</directive> - $B%G%#%l%/%F%#%V$K$h$C$FM-8z$K$5$l!"(B - $BFCDj$N%9%3!<%W(B($B%G%#%l%/%H%j$J$I(B)$B$H!"(B - $B$5$i$K2<0L$N%l%Y%k$N(B <directive module="core">AllowOverride</directive> - $B$G=$@5$5$l$J$$8B$j!"(B $B$=$NG[2<$KBP$7$FE,MQ$5$l$^$9!#(B - $B%G%#%l%/%F%#%V$N%I%-%e%a%s%H$O<h$jF@$k>e=q$-$NL>A0$b5s$2$^$9!#(B</p> +<section id="Override"><title>上書き</title> + + <p>このディレクティブの属性は、<code>.htaccess</code> + ファイル中に + ディレクティブが現れたときに、それの処理を有効にするために + どの設定の上書きが必要かを示します。 ディレクティブの + <a href="#Context">コンテキスト</a> + が、<code>.htaccess</code> + ファイル中では許可していない場合は、 この属性は + "<em>適用不可</em>" と書かれます。</p> + + <p>上書きは、<directive module="core">AllowOverride</directive> + ディレクティブによって有効にされ、 + 特定のスコープ(ディレクトリなど)と、 + さらに下位のレベルの <directive module="core">AllowOverride</directive> + で修正されない限り、 その配下に対して適用されます。 + ディレクティブのドキュメントは取り得る上書きの名前も挙げます。</p> </section> -<section id="Status"><title>$B%9%F!<%?%9(B</title> +<section id="Status"><title>ステータス</title> - <p>$B$3$l$O%G%#%l%/%F%#%V$,(B Apache - $B%&%'%V%5!<%P$K$I$l$/$i$$$-$D$/AH$_9~$^$l$F$$$k$+$r(B - $B<($7$^$9!#8@$$49$($l$P!"%G%#%l%/%F%#%V$H$=$N5!G=$rMxMQ$9$k$?$a$K!"(B - $B%b%8%e!<%k$N?t$rA}$d$7$F!"%5!<%P$r:F%3%s%Q%$%k$9$kI,MW$,$"$k$+$b$7$l$J$$(B - $B$H$$$&$3$H$r<($7$^$9!#(B - $B$3$NB0@-$,<h$jF@$kCM$O0J2<$N$b$N$G$9(B:</p> + <p>これはディレクティブが Apache + ウェブサーバにどれくらいきつく組み込まれているかを + 示します。言い換えれば、ディレクティブとその機能を利用するために、 + モジュールの数を増やして、サーバを再コンパイルする必要があるかもしれない + ということを示します。 + この属性が取り得る値は以下のものです:</p> <dl> <dt>Core</dt> - <dd>"Core" $B$N%G%#%l%/%F%#%V$O(B Apache - $B%&%'%V%5!<%P$N4pK\$H$J$k$Y$-$b$N$G$"$j!"(B - $B>o$K;HMQ2DG=$G$"$k$3$H$r<($7$^$9!#(B</dd> + <dd>"Core" のディレクティブは Apache + ウェブサーバの基本となるべきものであり、 + 常に使用可能であることを示します。</dd> <dt>MPM</dt> - <dd>"MPM" $B$N%G%#%l%/%F%#%V$O(B<a - href="../mpm.html">$B%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B</a>$B$GDs6!$5$l$F$$$^$9!#(B - $B$3$N<oN`$N%G%#%l%/%F%#%V$O%G%#%l%/%F%#%V$NDj5A$N(B<a - href="#Module">$B%b%8%e!<%k(B</a>$B$N9T$K;H$C$F$$$k%b%8%e!<%k$NL>A0$,=q$+$l$F$$$k(B - $B>l9g$K$N$_;HMQ2DG=$G$9!#(B</dd> + <dd>"MPM" のディレクティブは<a + href="../mpm.html">マルチプロセッシングモジュール</a>で提供されています。 + この種類のディレクティブはディレクティブの定義の<a + href="#Module">モジュール</a>の行に使っているモジュールの名前が書かれている + 場合にのみ使用可能です。</dd> <dt>Base</dt> - <dd>"Base" $B$N%G%#%l%/%F%#%V$O(B - $B%G%U%)%k%H$G%5!<%P$KAH$_9~$^$l$F$$$kI8=`%b%8%e!<%k$NCf$N0l$D$G%5(B - $B%]!<%H$5$l$F$$$F!"$o$6$o$6@_Dj$+$i%b%8%e!<%k$r:o=|$7$?$H$-$r=|$$$F!"(B - $BDL>o$G$O;HMQ2DG=$G$"$k$3$H$r<($7$^$9!#(B</dd> + <dd>"Base" のディレクティブは + デフォルトでサーバに組み込まれている標準モジュールの中の一つでサ + ポートされていて、わざわざ設定からモジュールを削除したときを除いて、 + 通常では使用可能であることを示します。</dd> <dt>Extension</dt> - <dd>"Extension" $B$N%G%#%l%/%F%#%V$O!"(B Apache - $B%5!<%P$NG[I[J*$KF1:-$5$l$F$$$k%b%8%e!<%k$N0l$D$GDs6!$5$l$F$$$k$b$N$N!"(B - $BDL>o$G$O%5!<%P$KAH$_9~$^$l$F$$$J$$$3$H$r<($7$^$9!#(B - $B%G%#%l%/%F%#%V$H$=$N5!G=$rM-8z$K$9$k$K$O!"%5!<%P%S%k%IMQ$N@_Dj%U%!%$%k$r(B - $BJQ99$7$F(B Apache - $B$r:F%3%s%Q%$%k$9$kI,MW$,$"$j$^$9!#(B</dd> + <dd>"Extension" のディレクティブは、 Apache + サーバの配布物に同梱されているモジュールの一つで提供されているものの、 + 通常ではサーバに組み込まれていないことを示します。 + ディレクティブとその機能を有効にするには、サーバビルド用の設定ファイルを + 変更して Apache + を再コンパイルする必要があります。</dd> <dt>Experimental</dt> - <dd>"Experimental" $B$N%G%#%l%/%F%#%V$O!"(BApache - $BG[I[J*$K(B - $BF1:-$5$l$F$$$k$b$N$N!";n$7$?$$>l9g$O<+8J@UG$$G9T$J$&(B - $BI,MW$,$"$k$H$$$&$3$H$r<($7$^$9!#%G%#%l%/%F%#%V$O!"$9$Y$F$N%I%-%e%a%s%H$r(B - $B40A4$K$=$m$o$;$k$?$a$K2r@b$5$l$F$$$^$9$,!"%5%]!<%H$5$l$F$$$k$H$O8B$j$^$;$s!#(B - $B%G%#%l%/%F%#%V$rDs6!$9$k%b%8%e!<%k$O%G%U%)%k%H$GAH$_9~$^$l$F$$$k$+$b(B - $B$7$l$^$;$s$7!"$=$&$G$J$$$+$b$7$l$^$;$s!#;HMQ2DG=$+$I$&$+$O!"(B - $B%G%#%l%/%F%#%V$H%b%8%e!<%k$N@bL@$r$7$F$$$k%Z!<%8$N@hF,$rD4$Y$F$/$@$5$$!#(B</dd> + <dd>"Experimental" のディレクティブは、Apache + 配布物に + 同梱されているものの、試したい場合は自己責任で行なう + 必要があるということを示します。ディレクティブは、すべてのドキュメントを + 完全にそろわせるために解説されていますが、サポートされているとは限りません。 + ディレクティブを提供するモジュールはデフォルトで組み込まれているかも + しれませんし、そうでないかもしれません。使用可能かどうかは、 + ディレクティブとモジュールの説明をしているページの先頭を調べてください。</dd> </dl> </section> -<section id="Module"><title>$B%b%8%e!<%k(B</title> +<section id="Module"><title>モジュール</title> <p> - $B$3$l$OC1=c$K%G%#%l%/%F%#%V$,Dj5A$5$l$F$$$k%b%8%e!<%k$NL>A0$r5-:\$7$^$9!#(B</p> + これは単純にディレクティブが定義されているモジュールの名前を記載します。</p> </section> -<section id="Compatibility"><title>$B8_49@-(B</title> +<section id="Compatibility"><title>互換性</title> - <p>$B%G%#%l%/%F%#%V$,(B Apache 2 - $B$NG[I[$KAH$_9~$^$l$F$$$J$+$C$?>l9g!"(B - $B%G%#%l%/%F%#%V$,F3F~$5$l$?%P!<%8%g%s$,$3$3$K=q$+$l$F$$$^$9!#(B - $B$^$?!"%G%#%l%/%F%#%V$,FCDj$N%W%i%C%H%U%)!<%`$K$N$_B8:_$9$k$H$-$b(B - $B$3$3$K=q$+$l$F$$$^$9!#(B</p> + <p>ディレクティブが Apache 2 + の配布に組み込まれていなかった場合、 + ディレクティブが導入されたバージョンがここに書かれています。 + また、ディレクティブが特定のプラットフォームにのみ存在するときも + ここに書かれています。</p> </section> </manualpage> diff --git a/docs/manual/mod/directives.xml.ja b/docs/manual/mod/directives.xml.ja index 8fb3e769ca..7e713f4418 100644 --- a/docs/manual/mod/directives.xml.ja +++ b/docs/manual/mod/directives.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE directiveindex SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -21,18 +21,18 @@ --> <directiveindex metafile="directives.xml.meta"> - <title>$B%G%#%l%/%F%#%V0lMw(B</title> + <title>ディレクティブ一覧</title> <summary> <p> - $BI8=`(B Apache $BG[I[$K$"$k$9$Y$F$N(B Apache $B$N%G%#%l%/%F%#%V$N0lMw$G$9!#(B - $B$3$l$i$O0l4S$7$?7A<0$G=q$+$l$F$$$F!";H$o$l$F$$$kMQ8l$N(B + 標準 Apache 配布にあるすべての Apache のディレクティブの一覧です。 + これらは一貫した形式で書かれていて、使われている用語の <a href="directive-dict.html" - rel="Glossary">$BMQ8l=8(B</a> $B$bMQ0U$5$l$F$$$^$9!#(B + rel="Glossary">用語集</a> も用意されています。 </p> <p> - $B3F%G%#%l%/%F%#%V$N35MW$r@bL@$7$?(B <a - href="quickreference.html">$B%G%#%l%/%F%#%V%/%$%C%/%j%U%!%l%s%9(B</a>$B$b(B - $B$"$j$^$9!#(B + 各ディレクティブの概要を説明した <a + href="quickreference.html">ディレクティブクイックリファレンス</a>も + あります。 </p> </summary> </directiveindex> diff --git a/docs/manual/mod/index.xml.ja b/docs/manual/mod/index.xml.ja index 8615fa8b40..f3117003df 100644 --- a/docs/manual/mod/index.xml.ja +++ b/docs/manual/mod/index.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE moduleindex SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -21,16 +21,16 @@ --> <moduleindex metafile="index.xml.meta"> - <title>$B%b%8%e!<%k0lMw(B</title> + <title>モジュール一覧</title> <summary> <p> - $B0J2<$O(B Apache $B$NG[I[$N0lIt$H$7$FG[$i$l$F$$$k$9$Y$F$N%b%8%e!<%k$N(B - $B0lMw$G$9!#$9$Y$F$N(B <a href="directives.html">Apache - $B%G%#%l%/%F%#%V(B</a> $B$N%"%k%U%!%Y%C%H=g$N%j%9%H$b8+$F$/$@$5$$!#(B + 以下は Apache の配布の一部として配られているすべてのモジュールの + 一覧です。すべての <a href="directives.html">Apache + ディレクティブ</a> のアルファベット順のリストも見てください。 </p> </summary> - <seealso><a href="../mpm.html">$B%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B (MPMs)</a> + <seealso><a href="../mpm.html">マルチプロセッシングモジュール (MPMs)</a> </seealso> - <seealso><a href="quickreference.html">$B%G%#%l%/%F%#%V(B $B%/%$%C%/%j%U%!%l%s%9(B</a> + <seealso><a href="quickreference.html">ディレクティブ クイックリファレンス</a> </seealso> </moduleindex> diff --git a/docs/manual/mod/mod_access_compat.xml.ja b/docs/manual/mod/mod_access_compat.xml.ja index 387c08dfcd..263b08e9c6 100644 --- a/docs/manual/mod/mod_access_compat.xml.ja +++ b/docs/manual/mod/mod_access_compat.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 522942:645883 (outdated) --> @@ -23,58 +23,58 @@ <modulesynopsis metafile="mod_access_compat.xml.meta"> <name>mod_access_compat</name> -<description>$B%[%9%H(B ($BL>A0$b$7$/$O(B IP $B%"%I%l%9(B) $B$K4p$E$$$?%0%k!<%W>5G'(B</description> +<description>ホスト (名前もしくは IP アドレス) に基づいたグループ承認</description> <status>Extension</status> <sourcefile>mod_access_compat.c</sourcefile> <identifier>access_compat_module</identifier> -<compatibility>Apache 2.3 (Apache 2.x $B$N0JA0$N%P!<%8%g%s$H$N8_49@-$N$?$a$N%b%8%e!<%k$H$7$F(B)$B!#(B -$B$3$N%b%8%e!<%k$GDs6!$9$k%G%#%l%/%F%#%V$O!">5G'$N;EAH$_$N0l?7$KH<$$!"Hs?d>)$K$J$C$?$b$N$G$9!#(B -<module>mod_authz_host</module> $B$b8+$F$/$@$5$$!#(B</compatibility> +<compatibility>Apache 2.3 (Apache 2.x の以前のバージョンとの互換性のためのモジュールとして)。 +このモジュールで提供するディレクティブは、承認の仕組みの一新に伴い、非推奨になったものです。 +<module>mod_authz_host</module> も見てください。</compatibility> <summary> - <p><module>mod_access_compat</module> $B$K$h$jDs6!$5$l$k%G%#%l%/%F%#%V$O(B - $B%5!<%P$NFCDj$NItJ,$X$N(B - $B%"%/%;%9$r@)8f$9$k$?$a$K(B <directive module="core" type="section" + <p><module>mod_access_compat</module> により提供されるディレクティブは + サーバの特定の部分への + アクセスを制御するために <directive module="core" type="section" >Directory</directive>, <directive module="core" type="section">Files</directive>, <directive module="core" type="section">Location</directive> - $B$H(B <code><a href="core.html#accessfilename">.htaccess</a - ></code> $B%U%!%$%k$G;HMQ$5$l$^$9!#%/%i%$%"%s%H$N%[%9%HL>!"(BIP - $B%"%I%l%9$d!"(B<a href="../env.html">$B4D6-JQ?t(B</a - >$B$J$I$N%j%/%(%9%H$NFCD'$K4p$E$$$F(B - $B%"%/%;%9@)8f$r9T$J$&$3$H$,$G$-$^$9!#(B<directive - module="mod_access_compat">Allow</directive> $B$H(B - <directive module="mod_access_compat">Deny</directive> $B%G%#%l%/%F%#%V$r;H$C$F!"(B - $B$I$N$h$&$J%/%i%$%"%s%H$K%"%/%;%9$r(B - $B5v2D$9$k!"$7$J$$$r;XDj$7$^$9!#$^$?(B - <directive module="mod_access_compat">Order</directive> $B%G%#%l%/%F%#%V$r;H$C$F!"(B - $B%G%U%)%k%H$N%"%/%;%9>uBV$H!"(B - <directive module="mod_access_compat">Allow</directive> $B%G%#%l%/%F%#%V$H(B + と <code><a href="core.html#accessfilename">.htaccess</a + ></code> ファイルで使用されます。クライアントのホスト名、IP + アドレスや、<a href="../env.html">環境変数</a + >などのリクエストの特徴に基づいて + アクセス制御を行なうことができます。<directive + module="mod_access_compat">Allow</directive> と + <directive module="mod_access_compat">Deny</directive> ディレクティブを使って、 + どのようなクライアントにアクセスを + 許可する、しないを指定します。また + <directive module="mod_access_compat">Order</directive> ディレクティブを使って、 + デフォルトのアクセス状態と、 + <directive module="mod_access_compat">Allow</directive> ディレクティブと <directive module="mod_access_compat">Deny</directive> - $B%G%#%l%/%F%#%V$H$N$*8_$$$X$N1F6A$N;EJ}$r@_Dj$7$^$9!#(B + ディレクティブとのお互いへの影響の仕方を設定します。 </p> - <p>$B%[%9%H$K$h$k%"%/%;%9@)8B$H%Q%9%o!<%I$K$h$kG'>Z$r!"(B - $BF1;~$KAH$_9g$o$;$F;H$&$3$H$b$G$-$^$9!#(B - $B$3$N>l9g!"$=$NFs$D$N@)8B$N4X78$r;XDj$9$k$?$a$K(B + <p>ホストによるアクセス制限とパスワードによる認証を、 + 同時に組み合わせて使うこともできます。 + この場合、その二つの制限の関係を指定するために <directive module="core">Satisfy</directive> - $B%G%#%l%/%F%#%V$r;HMQ$7$^$9!#(B</p> + ディレクティブを使用します。</p> <note type="warning"><title>Note</title> - <p><module>mod_access_compat</module>$B$,Ds6!$9$k%G%#%l%/%F%#%V$O!"(B - $B>5G'$N;EAH$_$N0l?7$KH<$$!"Hs?d>)$K$J$C$?$b$N$G$9!#(B - <module>mod_authz_host</module> $B$b8+$F$/$@$5$$!#(B - $B%G%U%)%k%H$N>5G'$N<h$j07$$5!G=$r;HMQ$9$k$?$a$K(B + <p><module>mod_access_compat</module>が提供するディレクティブは、 + 承認の仕組みの一新に伴い、非推奨になったものです。 + <module>mod_authz_host</module> も見てください。 + デフォルトの承認の取り扱い機能を使用するために <module>mod_authz_default</module> - $B%b%8%e!<%k$b%m!<%I$5$l$J$1$l$P$J$j$^$;$s!#(B</p> + モジュールもロードされなければなりません。</p> </note> - <p>$B0lHLE*$K$O!"%"%/%;%9@)8B%G%#%l%/%F%#%V$O$9$Y$F$N%"%/%;%9%a%=%C%I(B - (<code>GET</code>, <code>PUT</code>, <code>POST</code> $B$J$I(B) - $B$KE,MQ$5$l$^$9!#$=$7$F!"$[$H$s$I$N>l9g$3$l$,K>$^$7$$F0:n$G$9!#(B - $B$7$+$7!"(B<directive module="core" type="section">Limit</directive> - $B%;%/%7%g%s$NCf$K%G%#%l%/%F%#%V$r=q$/$3$H$G!"(B - $B0lIt$N%a%=%C%I$K$N$_@)8B$r$+$1$k$3$H$b$G$-$^$9!#(B</p> + <p>一般的には、アクセス制限ディレクティブはすべてのアクセスメソッド + (<code>GET</code>, <code>PUT</code>, <code>POST</code> など) + に適用されます。そして、ほとんどの場合これが望ましい動作です。 + しかし、<directive module="core" type="section">Limit</directive> + セクションの中にディレクティブを書くことで、 + 一部のメソッドにのみ制限をかけることもできます。</p> </summary> <seealso><directive module="mod_authz_core">Require</directive></seealso> @@ -83,7 +83,7 @@ <directivesynopsis> <name>Allow</name> -<description>$B%5!<%P$N$"$kNN0h$K%"%/%;%9$G$-$k%[%9%H$r@)8f$9$k(B</description> +<description>サーバのある領域にアクセスできるホストを制御する</description> <syntax> Allow from all|<var>host</var>|env=<var>env-variable</var> [<var>host</var>|env=<var>env-variable</var>] ...</syntax> <contextlist><context>directory</context><context>.htaccess</context> @@ -91,103 +91,103 @@ <override>Limit</override> <usage> - <p><directive>Allow</directive> $B%G%#%l%/%F%#%V$O!"$I$N%[%9%H$,(B - $B%5!<%P$N$"$kNN0h$K%"%/%;%9$G$-$k$+$K1F6A$rM?$($^$9!#(B - $B%"%/%;%9$O%[%9%HL>!"(BIP $B%"%I%l%9!"(BIP $B%"%I%l%9$NHO0O$d!"(B - $B4D6-JQ?t$J$I$N%/%i%$%"%s%H$N%j%/%(%9%H$N(B - $BFCD'$K4p$E$$$F%"%/%;%9@)8f$9$k$3$H$,$G$-$^$9!#(B</p> - - <p>$B$3$N%G%#%l%/%F%#%V$N:G=i$N0z?t$O>o$K(B <code>from</code> $B$G$9!#(B - $B$=$l$KB3$/0z?t$O;0$D$N0c$C$?7A<0$,$"$j$^$9!#(B<code>Allow from - all</code> $B$,;XDj$5$l$F$$$l$P!"$9$Y$F$N%[%9%H$K%"%/%;%9$r5v2D$7!"(B - $B%"%/%;%9@)8B$O2<$G@bL@$5$l$F$$$k$h$&$K!"(B + <p><directive>Allow</directive> ディレクティブは、どのホストが + サーバのある領域にアクセスできるかに影響を与えます。 + アクセスはホスト名、IP アドレス、IP アドレスの範囲や、 + 環境変数などのクライアントのリクエストの + 特徴に基づいてアクセス制御することができます。</p> + + <p>このディレクティブの最初の引数は常に <code>from</code> です。 + それに続く引数は三つの違った形式があります。<code>Allow from + all</code> が指定されていれば、すべてのホストにアクセスを許可し、 + アクセス制限は下で説明されているように、 <directive module="mod_access_compat">Deny</directive> - $B%G%#%l%/%F%#%V$H(B <directive module="mod_access_compat">Order</directive> - $B%G%#%l%/%F%#%V$N@_Dj$G7h$^$j$^$9!#(B - $BFCDj$N%[%9%H$d%[%9%H72$K$N$_%5!<%P$X$N%"%/%;%9$r5v2D$9$k$?$a$K$O!"(B - $B0J2<$N$I$l$+$N7A<0$G(B <em>host</em> $B$r;XDj$9$k$3$H$,$G$-$^$9(B:</p> + ディレクティブと <directive module="mod_access_compat">Order</directive> + ディレクティブの設定で決まります。 + 特定のホストやホスト群にのみサーバへのアクセスを許可するためには、 + 以下のどれかの形式で <em>host</em> を指定することができます:</p> <dl> - <dt>$B%I%a%$%sL>(B ($B$N0lIt(B)</dt> + <dt>ドメイン名 (の一部)</dt> <dd> - <example><title>$BNc(B</title> + <example><title>例</title> Allow from apache.org<br /> Allow from .net example.edu </example> - <p>$B$3$NJ8;zNs$K9g$&$+!"$3$l$G=*$o$kL>A0$N%[%9%H$N%"%/%;%9$,5v2D$5$l$^$9!#(B - $B3FItJ,$,40A4$K9g$&$b$N$@$1$KE,MQ$5$l$^$9$N$G!">e$NNc$O(B - <code>foo.apache.org</code> $B$K$O%^%C%A$7$^$9$,!"(B - <code>fooapache.org</code> $B$K$O%^%C%A$7$^$;$s!#(B - $B$3$N@_Dj$r$9$k$H!"(BApache $B$O(B + <p>この文字列に合うか、これで終わる名前のホストのアクセスが許可されます。 + 各部分が完全に合うものだけに適用されますので、上の例は + <code>foo.apache.org</code> にはマッチしますが、 + <code>fooapache.org</code> にはマッチしません。 + この設定をすると、Apache は <directive module="core">HostnameLookups</directive> - $B$N@_Dj$K4X$o$i$:!"%/%i%$%"%s%H$N(B IP $B%"%I%l%9$KBP$7$F(B - DNS $B$N(B 2 $B=E5U0z$-$r9T$J$$$^$9!#(B - $B%[%9%HL>$+$i%*%j%8%J%k$N(B IP $B%"%I%l%9$r=g0z$-$7$^$9!#(B - $B=g0z$-$H5U0z$-$,0lCW$7!"%[%9%HL>$,3:Ev$7$?>l9g$K$N$_!"(B - $B%"%/%;%9$,5v2D$5$l$^$9!#(B</p></dd> + の設定に関わらず、クライアントの IP アドレスに対して + DNS の 2 重逆引きを行ないます。 + ホスト名からオリジナルの IP アドレスを順引きします。 + 順引きと逆引きが一致し、ホスト名が該当した場合にのみ、 + アクセスが許可されます。</p></dd> - <dt>$B40A4$J(B IP $B%"%I%l%9(B</dt> + <dt>完全な IP アドレス</dt> <dd> - <example><title>$BNc(B</title> + <example><title>例</title> Allow from 10.1.2.3<br /> Allow from 192.168.1.104 192.168.1.205 </example> - <p>$B%"%/%;%9$r5v2D$9$k(B IP $B%"%I%l%9$G$9!#(B</p></dd> + <p>アクセスを許可する IP アドレスです。</p></dd> - <dt>IP $B%"%I%l%9$N0lIt(B</dt> + <dt>IP アドレスの一部</dt> <dd> - <example><title>$BNc(B</title> + <example><title>例</title> Allow from 10.1<br /> Allow from 10 172.20 192.168.2 </example> - <p>$B%5%V%M%C%H$N@)8BMQ$N!"(BIP - $B%"%I%l%9$N:G=i$N0l$D$+$i;0$D$^$G$N%P%$%H$G$9!#(B</p></dd> + <p>サブネットの制限用の、IP + アドレスの最初の一つから三つまでのバイトです。</p></dd> - <dt>$B%M%C%H%o!<%/(B/$B%M%C%H%^%9%/(B $B$NBP(B</dt> + <dt>ネットワーク/ネットマスク の対</dt> <dd> - <example><title>$BNc(B</title> + <example><title>例</title> Allow from 10.1.0.0/255.255.0.0 </example> - <p>$B%M%C%H%o!<%/(B a.b.c.d $B$H%M%C%H%^%9%/(B w.x.y.z $B$G$9!#(B - $B$h$j:YN3EY$N%5%V%M%C%H@)8BMQ$G$9!#(B</p></dd> + <p>ネットワーク a.b.c.d とネットマスク w.x.y.z です。 + より細粒度のサブネット制限用です。</p></dd> - <dt>$B%M%C%H%o!<%/(B/nnn CIDR $B;XDj(B</dt> + <dt>ネットワーク/nnn CIDR 指定</dt> <dd> - <example><title>$BNc(B</title> + <example><title>例</title> Allow from 10.1.0.0/16 </example> - <p>$B%M%C%H%^%9%/$,(B nnn $B$N>e0L%S%C%H$,(B 1 - $B$H$J$C$F$$$k$b$N$+$i$J$k$3$H0J30$OA0$N$b$N$HF1$8$G$9!#(B</p></dd> + <p>ネットマスクが nnn の上位ビットが 1 + となっているものからなること以外は前のものと同じです。</p></dd> </dl> - <p>$BCm(B: $B:G8e$N;0$D$NNc$O$^$C$?$/F1$8%[%9%H$K9g$$$^$9!#(B</p> + <p>注: 最後の三つの例はまったく同じホストに合います。</p> - <p>IPv6 $B%"%I%l%9$H(B IPv6 $B$N%5%V%M%C%H$O0J2<$N$h$&$K;XDj$G$-$^$9(B:</p> + <p>IPv6 アドレスと IPv6 のサブネットは以下のように指定できます:</p> <example> Allow from 2001:db8::a00:20ff:fea7:ccea<br /> Allow from 2001:db8::a00:20ff:fea7:ccea/10 </example> - <p><directive>Allow</directive> $B%G%#%l%/%F%#%V$N0z?t$N;0$DL\$N7A<0$O!"(B - <a href="../env.html">$B4D6-JQ?t(B</a> - $B$NB8:_$K$h$j%"%/%;%9$N@)8f$r9T$J$($k$h$&$K$9$k$b$N$G$9!#(B + <p><directive>Allow</directive> ディレクティブの引数の三つ目の形式は、 + <a href="../env.html">環境変数</a> + の存在によりアクセスの制御を行なえるようにするものです。 <code>Allow from env=<var>env-variable</var></code> - $B$,;XDj$5$l$F$$$k$H!"4D6-JQ?t(B <var>env-variable</var> - $B$,B8:_$7$?>l9g$K%j%/%(%9%H$O%"%/%;%9$r5v2D$5$l$^$9!#%5!<%P$O(B + が指定されていると、環境変数 <var>env-variable</var> + が存在した場合にリクエストはアクセスを許可されます。サーバは <module>mod_setenvif</module> - $B$N%G%#%l%/%F%#%V$K$h$j!"%/%i%$%"%s%H$N%j%/%(%9%H(B - $B$NFCD'$K4p$E$$$F=@Fp$K4D6-JQ?t$r@_Dj$9$k5!G=$rDs6!$7$^$9!#(B - $B$G$9$+$i!"$3$N%G%#%l%/%F%#%V$O%/%i%$%"%s%H$N(B - <code>User-Agent</code> ($B%V%i%&%6$N<oN`(B)$B!"(B<code>Referer</code> - $B$dB>$N(B HTTP $B%j%/%(%9%H$N%X%C%@%U%#!<%k%I$J$I$K4p$E$$$F(B - $B%"%/%;%95v2D$r$9$k$?$a$K;H$&$3$H$,$G$-$^$9!#(B + のディレクティブにより、クライアントのリクエスト + の特徴に基づいて柔軟に環境変数を設定する機能を提供します。 + ですから、このディレクティブはクライアントの + <code>User-Agent</code> (ブラウザの種類)、<code>Referer</code> + や他の HTTP リクエストのヘッダフィールドなどに基づいて + アクセス許可をするために使うことができます。 </p> <example><title>Example:</title> @@ -201,35 +201,35 @@ </Directory> </example> - <p>$B$3$N>l9g!"(Buser-agent $B$NJ8;zNs$,(B <code>KnockKnock/2.0</code> - $B$G;O$^$k%V%i%&%6$N$_$,%"%/%;%9$,5v2D$5$l!"(B - $BB>$N$b$N$O%"%/%;%9$,5qH]$5$l$^$9!#(B</p> + <p>この場合、user-agent の文字列が <code>KnockKnock/2.0</code> + で始まるブラウザのみがアクセスが許可され、 + 他のものはアクセスが拒否されます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>Deny</name> -<description>$B%5!<%P$,%"%/%;%9$r5qH]$9$k%[%9%H$r@)8f$9$k(B</description> +<description>サーバがアクセスを拒否するホストを制御する</description> <syntax> Deny from all|<var>host</var>|env=<var>env-variable</var> [<var>host</var>|env=<var>env-variable</var>] ...</syntax> <contextlist><context>directory</context><context>.htaccess</context> </contextlist> <override>Limit</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%[%9%HL>!"(BIP - $B%"%I%l%9!"4D6-JQ?t$K4p$E$$$F%5!<%P$X$N%"%/%;%9$r@)8B$7$^$9!#(B - <directive>Deny</directive> $B%G%#%l%/%F%#%V$N0z?t$O(B <directive + <p>このディレクティブはホスト名、IP + アドレス、環境変数に基づいてサーバへのアクセスを制限します。 + <directive>Deny</directive> ディレクティブの引数は <directive module="mod_access_compat">Allow</directive> - $B%G%#%l%/%F%#%V$H$^$C$?$/F1$8$G$9!#(B</p> + ディレクティブとまったく同じです。</p> </usage> </directivesynopsis> <directivesynopsis> <name>Order</name> -<description>$B%G%U%)%k%H$N%"%/%;%92DG=$J>uBV$H!"(B<directive>Allow</directive> $B$H(B -<directive>Deny</directive> $B$,I>2A$5$l$k=gHV$r@)8f$9$k(B</description> +<description>デフォルトのアクセス可能な状態と、<directive>Allow</directive> と +<directive>Deny</directive> が評価される順番を制御する</description> <syntax> Order <var>ordering</var></syntax> <default>Order Deny,Allow</default> <contextlist><context>directory</context><context>.htaccess</context> @@ -238,88 +238,88 @@ <usage> - <p><directive>Order</directive> $B%G%#%l%/%F%#%V$O(B <directive - module="mod_access_compat">Allow</directive> $B%G%#%l%/%F%#%V$H(B<directive - module="mod_access_compat">Deny</directive> $B$H6&$K(B"3$BCJ3,%"%/%;%9@)8f%7%9%F%`(B" - $B$r@)8f$7$^$9!#Bh(B1$BCJ3,L\$G$O(B <directive>Order</directive> $B%G%#%l%/%F%#%V$G(B1$BHVL\$K(B - $B;XDj$7$?%G%#%l%/%F%#%V(B(<directive module="mod_access_compat">Allow</directive> - $B$^$?$O(B <directive module="mod_access_compat">Deny</directive>)$B$rA4$F=hM}$7$^$9!#(B - $BBh(B2$BCJ3,L\$G!";D$j$N%G%#%l%/%F%#%V(B(<directive - module="mod_access_compat">Deny</directive> $B$^$?$O(B <directive + <p><directive>Order</directive> ディレクティブは <directive + module="mod_access_compat">Allow</directive> ディレクティブと<directive + module="mod_access_compat">Deny</directive> と共に"3段階アクセス制御システム" + を制御します。第1段階目では <directive>Order</directive> ディレクティブで1番目に + 指定したディレクティブ(<directive module="mod_access_compat">Allow</directive> + または <directive module="mod_access_compat">Deny</directive>)を全て処理します。 + 第2段階目で、残りのディレクティブ(<directive + module="mod_access_compat">Deny</directive> または <directive module="mod_access_compat">Allow</directive>) - $B$rA4$F=hM}$7$^$9!#Bh(B3$BCJ3,L\$G!"Bh(B1$BCJ3,L\$HBh(B2$BCJ3,L\$G(B - $B%^%C%A$7$J$+$C$?%j%/%(%9%H$r=hM}$7$^$9!#(B</p> + を全て処理します。第3段階目で、第1段階目と第2段階目で + マッチしなかったリクエストを処理します。</p> - <p>$BA4$F$N(B <directive module="mod_access_compat">Allow</directive> $B$H(B <directive - module="mod_access_compat">Deny</directive> $B$,=hM}$5$l!"7k6I$N$H$3$m:G8e$K%^%C%A(B - $B$7$?>r7o$,M-8z$H$J$k$3$H$KCm0U$7$F$/$@$5$$!#$3$l$O:G=i$K%^%C%A$7$?>r7o$@$1$,M-8z(B - $B$H$J$k!"E57?E*$J%U%!%$%"%&%)!<%k$NF0:n$H$O0[$J$C$F$$$^$9!#(B - $B$^$?!"@_Dj%U%!%$%k$K=q$/=gHV$K$O0UL#$O$"$j$^$;$s!#(B<directive - module="mod_access_compat">Allow</directive> $B9T$OA4It0l$D$N%0%k!<%W$H$7$F07$o$l!"(B - <directive module="mod_access_compat">Deny</directive> $B9T$O$b$&0l$D$N%0%k!<%W$H$_$J$5$l$^$9!#(B - $B$^$?%G%U%)%k%H>uBV$OC1FH$G0l$D$N%0%k!<%W$H$_$J$5$l$^$9!#(B</p> + <p>全ての <directive module="mod_access_compat">Allow</directive> と <directive + module="mod_access_compat">Deny</directive> が処理され、結局のところ最後にマッチ + した条件が有効となることに注意してください。これは最初にマッチした条件だけが有効 + となる、典型的なファイアウォールの動作とは異なっています。 + また、設定ファイルに書く順番には意味はありません。<directive + module="mod_access_compat">Allow</directive> 行は全部一つのグループとして扱われ、 + <directive module="mod_access_compat">Deny</directive> 行はもう一つのグループとみなされます。 + またデフォルト状態は単独で一つのグループとみなされます。</p> - <p><em>Order</em> $B@_Dj$O0J2<$N0J2<$N$I$l$+$G$9!#(B</p> + <p><em>Order</em> 設定は以下の以下のどれかです。</p> <dl> <dt><code>Allow,Deny</code></dt> - <dd>$B$^$:(B <directive module="mod_access_compat">Allow</directive> - $B%G%#%l%/%F%#%V$,E,MQ$5$l$^$9!#$I$l$K$b%^%C%A$7$J$+$C$?>l9g!"$3$N;~E@$G(B - $B%j%/%(%9%H$O5qH]$5$l$^$9!#<!$K!"A4$F$N(B <directive module="mod_access_compat"> - Deny</directive> $B%G%#%l%/%F%#%V$,E,MQ$5$l$^$9!#$I$l$+0l$D$G$b%^%C%A$7$?>l9g$O!"(B - $B%j%/%(%9%H$O5qH]$5$l$^$9!#(B - $B:G8e$K!"(B <directive module="mod_access_compat">Allow</directive> $B$K$b(B <directive - module="mod_access_compat">Deny</directive> $B$K$b%^%C%A$7$J$+$C$?%j%/%(%9%H$O(B - $B%G%U%)%k%H@_Dj$,E,MQ$5$l$k$N$G5qH]$5$l$^$9!#(B</dd> + <dd>まず <directive module="mod_access_compat">Allow</directive> + ディレクティブが適用されます。どれにもマッチしなかった場合、この時点で + リクエストは拒否されます。次に、全ての <directive module="mod_access_compat"> + Deny</directive> ディレクティブが適用されます。どれか一つでもマッチした場合は、 + リクエストは拒否されます。 + 最後に、 <directive module="mod_access_compat">Allow</directive> にも <directive + module="mod_access_compat">Deny</directive> にもマッチしなかったリクエストは + デフォルト設定が適用されるので拒否されます。</dd> <dt><code>Deny,Allow</code></dt> - <dd>$B$^$:(B <directive module="mod_access_compat">Deny</directive> - $B%G%#%l%/%F%#%V$,E,MQ$5$l$^$9!#$I$l$+0l$D$G$b%^%C%A$7$?>l9g$O!"(B - <directive module="mod_access_compat">Allow</directive> $B$N$I$l$K$b(B - $B%^%C%A(B<strong>$B$7$J$1$l$P(B</strong>$B!"%"%/%;%9$O5qH]$5$l$^$9!#(B - $B$I$N(B <directive module="mod_access_compat">Allow</directive> $B$K$b(B <directive - module="mod_access_compat">Deny</directive> $B$K$b%^%C%A$7$J$$%j%/%(%9%H$O(B - $B5v2D$5$l$^$9!#(B</dd> + <dd>まず <directive module="mod_access_compat">Deny</directive> + ディレクティブが適用されます。どれか一つでもマッチした場合は、 + <directive module="mod_access_compat">Allow</directive> のどれにも + マッチ<strong>しなければ</strong>、アクセスは拒否されます。 + どの <directive module="mod_access_compat">Allow</directive> にも <directive + module="mod_access_compat">Deny</directive> にもマッチしないリクエストは + 許可されます。</dd> <dt><code>Mutual-failure</code></dt> - <dd>$B$3$l$O(B <directive>Order Allow,Deny</directive> $B$HA4$/F1$88z2L$r;}$A!"(B - $B$=$N$?$aHs?d>)$H$J$C$F$$$^$9!#(B + <dd>これは <directive>Order Allow,Deny</directive> と全く同じ効果を持ち、 + そのため非推奨となっています。 </dd> </dl> - <p>$B%-!<%o!<%I$N4V$KCV$1$k$N$O%3%s%^$@$1$G$9!#(B - $B4V$K(B<em>$B6uGr$,$"$C$F$O$$$1$^$;$s(B</em>$B!#(B</p> + <p>キーワードの間に置けるのはコンマだけです。 + 間に<em>空白があってはいけません</em>。</p> <table border="1"> <tr> - <th>$B%^%C%A(B</th> - <th>Allow,Deny $B;~$N7k2L(B</th> - <th>Deny,Allow $B;~$N7k2L(B</th> + <th>マッチ</th> + <th>Allow,Deny 時の結果</th> + <th>Deny,Allow 時の結果</th> </tr><tr> - <th>Allow $B$@$1$K%^%C%A(B</th> - <td>$B5v2D(B</td> - <td>$B5v2D(B</td> + <th>Allow だけにマッチ</th> + <td>許可</td> + <td>許可</td> </tr><tr> - <th>Deny $B$@$1$K%^%C%A(B</th> - <td>$B5qH](B</td> - <td>$B5qH](B</td> + <th>Deny だけにマッチ</th> + <td>拒否</td> + <td>拒否</td> </tr><tr> - <th>$B$I$A$i$K$b%^%C%A$7$J$$(B</th> - <td>2$BHVL\$N%G%#%l%/%F%#%V$,%G%U%)%k%H(B: $B5qH](B</td> - <td>2$BHVL\$N%G%#%l%/%F%#%V$,%G%U%)%k%H(B: $B5v2D(B</td> + <th>どちらにもマッチしない</th> + <td>2番目のディレクティブがデフォルト: 拒否</td> + <td>2番目のディレクティブがデフォルト: 許可</td> </tr><tr> - <th>Allow $B$H(B Deny $BN>J}$K%^%C%A(B</th> - <td>$B:G8e$K%^%C%A$7$?$[$&(B: $B5qH](B</td> - <td>$B:G8e$K%^%C%A$7$?$[$&(B: $B5v2D(B</td> + <th>Allow と Deny 両方にマッチ</th> + <td>最後にマッチしたほう: 拒否</td> + <td>最後にマッチしたほう: 許可</td> </tr> </table> - <p>$B0J2<$NNc$G$O!"(Bapache.org - $B%I%a%$%s$N$9$Y$F$N%[%9%H$O%"%/%;%9$r5v2D$5$l$^$9!#(B - $BB>$N$9$Y$F$N%[%9%H$O%"%/%;%9$r5qH]$5$l$^$9!#(B</p> + <p>以下の例では、apache.org + ドメインのすべてのホストはアクセスを許可されます。 + 他のすべてのホストはアクセスを拒否されます。</p> <example> Order Deny,Allow<br /> @@ -327,12 +327,12 @@ Allow from apache.org </example> - <p>$B<!$NNc$G$O!"(Bfoo.apache.org $B%5%V%I%a%$%s$K$"$k%[%9%H0J30$N!"(B - apache.org $B%I%a%$%s$N$9$Y$F$N%[%9%H$,%"%/%;%9$r5v2D$5$l$^$9!#(B + <p>次の例では、foo.apache.org サブドメインにあるホスト以外の、 + apache.org ドメインのすべてのホストがアクセスを許可されます。 apache.org - $B%I%a%$%s$G$J$$%[%9%H$O!"%G%U%)%k%H$N>uBV$,(B <directive - module="mod_access_compat">Deny</directive> $B$N$?$a!"(B - $B%5!<%P$X$N%"%/%;%9$r5qH]$5$l$^$9!#(B</p> + ドメインでないホストは、デフォルトの状態が <directive + module="mod_access_compat">Deny</directive> のため、 + サーバへのアクセスを拒否されます。</p> <example> Order Allow,Deny<br /> @@ -340,23 +340,23 @@ Deny from foo.apache.org </example> - <p>$B0lJ}!">e$NNc$N(B <directive>Order</directive> $B$,(B <code>Deny,Allow</code> - $B$KJQ$o$C$F$$$l$P!"$9$Y$N%[%9%H$K%"%/%;%9$,5v2D$5$l$^$9!#(B - $B$3$l$O!"@_Dj%U%!%$%kCf$N<B:]$N=gHV$K4X$o$i$:!"(B - <code>Allow from apache.org</code> $B$,:G8e$KI>2A$5$l$F!"(B - <code>Deny from foo.apache.org</code> $B$r>e=q$-$9$k$+$i$G$9!#(B + <p>一方、上の例の <directive>Order</directive> が <code>Deny,Allow</code> + に変わっていれば、すべのホストにアクセスが許可されます。 + これは、設定ファイル中の実際の順番に関わらず、 + <code>Allow from apache.org</code> が最後に評価されて、 + <code>Deny from foo.apache.org</code> を上書きするからです。 <code>apache.org</code> - $B%I%a%$%s$K$J$$%[%9%H$b!"%G%U%)%k%H$N>uBV$,(B <directive + ドメインにないホストも、デフォルトの状態が <directive module="mod_access_compat">Allow</directive> - $B$J$N$G!"%"%/%;%9$r5v2D$5$l$^$9!#(B + なので、アクセスを許可されます。 </p> <p><directive>Order</directive> - $B%G%#%l%/%F%#%V$O%G%U%)%k%H$N%"%/%;%9$N>uBV$K1F6A$rM?$($k$N$G!"(B - <directive module="mod_authz_host">Allow</directive> $B%G%#%l%/%F%#%V$H(B + ディレクティブはデフォルトのアクセスの状態に影響を与えるので、 + <directive module="mod_authz_host">Allow</directive> ディレクティブと <directive module="mod_authz_host">Deny</directive> - $B%G%#%l%/%F%#%V$,L5$/$F$b!"%5!<%P$N%"%/%;%9$K1F6A$rM?$($k$3$H$,$G$-$^$9!#(B - $B$?$H$($P!"(B</p> + ディレクティブが無くても、サーバのアクセスに影響を与えることができます。 + たとえば、</p> <example> <Directory /www><br /> @@ -366,60 +366,60 @@ </Directory> </example> - <p>$B$O%G%U%)%k%H$N%"%/%;%9>uBV$,(B - <directive module="mod_access_compat">Deny</directive> $B$K$J$k$?$a!"(B - <code>/www</code> $B%G%#%l%/%H%j$X$N$9$Y$F$N%"%/%;%9$r5qH]$7$^$9!#(B + <p>はデフォルトのアクセス状態が + <directive module="mod_access_compat">Deny</directive> になるため、 + <code>/www</code> ディレクトリへのすべてのアクセスを拒否します。 </p> <p><directive>Order</directive> - $B%G%#%l%/%F%#%V$O%5!<%P$N@_Dj=hM}$N3FCJ3,$G$@$1(B - $B%"%/%;%9%G%#%l%/%F%#%V$N=hM}$N=gHV$rJQ99$7$^$9!#$3$l$O!"$?$H$($P!"(B - <directive>Order</directive> $B%G%#%l%/%F%#%V$N@_Dj$K4X$o$i$:!"(B - <directive module="core" type="section">Location</directive> $B%;%/%7%g%s$N(B - <directive module="mod_access_compat">Allow</directive> $B%G%#%l%/%F%#%V$d(B - <directive module="mod_access_compat">Deny</directive> $B%G%#%l%/%F%#%V$O!"(B - <directive module="core" type="sectino">Directory</directive> $B%;%/%7%g%s$d(B - <code>.htaccess</code> $B%U%!%$%k$N(B <directive + ディレクティブはサーバの設定処理の各段階でだけ + アクセスディレクティブの処理の順番を変更します。これは、たとえば、 + <directive>Order</directive> ディレクティブの設定に関わらず、 + <directive module="core" type="section">Location</directive> セクションの + <directive module="mod_access_compat">Allow</directive> ディレクティブや + <directive module="mod_access_compat">Deny</directive> ディレクティブは、 + <directive module="core" type="sectino">Directory</directive> セクションや + <code>.htaccess</code> ファイルの <directive module="mod_access_compat">Allow</directive> - $B%G%#%l%/%F%#%V$d(B <directive module="mod_access_compat">Deny</directive> - $B%G%#%l%/%F%#%V$h$j$b>o$K8e$KI>2A$5$l$k$H$$$&$3$H$r0UL#$7$^$9!#(B - $B@_Dj%;%/%7%g%s$N%^!<%8$N>\:Y$K$D$$$F$O!"(B + ディレクティブや <directive module="mod_access_compat">Deny</directive> + ディレクティブよりも常に後に評価されるということを意味します。 + 設定セクションのマージの詳細については、 <a href="../sections.html">Directory,Location, Files - $B%;%/%7%g%s$NF0:nJ}K!(B</a> $B$r;2>H$7$F$/$@$5$$!#(B</p> + セクションの動作方法</a> を参照してください。</p> </usage> </directivesynopsis> <directivesynopsis> <name>Satisfy</name> -<description>$B%[%9%H%l%Y%k$N%"%/%;%9@)8f$H%f!<%6G'>Z$H$NAj8_:nMQ$r;XDj(B</description> +<description>ホストレベルのアクセス制御とユーザ認証との相互作用を指定</description> <syntax>Satisfy Any|All</syntax> <default>Satisfy All</default> <contextlist><context>directory</context><context>.htaccess</context> </contextlist> <override>AuthConfig</override> -<compatibility>$B%P!<%8%g%s(B 2.0.51 $B0J9_$G$O(B <directive module="core" type="section" - >Limit</directive> $B%G%#%l%/%F%#%V$H(B <directive module="core" - type="section">LimitExcept</directive> $B%G%#%l%/%F%#%V$N1F6A$r<u$1$k(B +<compatibility>バージョン 2.0.51 以降では <directive module="core" type="section" + >Limit</directive> ディレクティブと <directive module="core" + type="section">LimitExcept</directive> ディレクティブの影響を受ける </compatibility> <usage> - <p><directive module="mod_authz_host">Allow</directive> $B$H(B - <directive module="mod_authz_core">Require</directive> $B$NN>J}$,;H$o$l$F$$$k$H$-$N(B - $B%"%/%;%9%]%j%7!<$r@_Dj$7$^$9!#%Q%i%a!<%?$O(B <code>All</code> $B$+(B <code>Any</code> - $B$G$9!#$3$N%G%#%l%/%F%#%V$O$"$k>l=j$X$N%"%/%;%9$,%f!<%6L>(B/$B%Q%9%o!<%I(B - <em>$B$H(B</em>$B%/%i%$%"%s%H$N%[%9%H$N%"%I%l%9$G@)8B$5$l$F$$$k$H$-$K$N$_(B - $BLrN)$A$^$9!#%G%U%)%k%H$NF0:n(B (<code>All</code>) $B$O%/%i%$%"%s%H$,%"%I%l%9$K$h$k(B - $B%"%/%;%9@)8B$rK~$?$7!"(B<em>$B$+$D(B</em>$B@5$7$$%f!<%6L>$H%Q%9%o!<%I$rF~NO$9$k$3$H$r(B - $BMW5a$7$^$9!#(B<code>Any</code> $B$G$O!"%/%i%$%"%s%H$O%[%9%H$N@)8B$rK~$?$9$+!"(B - $B@5$7$$%f!<%6L>$H%Q%9%o!<%I$NF~NO$r$9$k$+$r$9$l$P%"%/%;%9$r5v2D$5$l$^$9!#(B - $B$3$l$O!"$"$k>l=j$r%Q%9%o!<%I$GJ]8n$9$k$1$l$I!"FCDj$N%"%I%l%9$+$i$N(B - $B%/%i%$%"%s%H$K$O%Q%9%o!<%I$NF~NO$rMW5a$;$:$K%"%/%;%9$r5v2D$9$k!"(B - $B$H$$$&$h$&$J$H$-$K;HMQ$G$-$^$9!#(B</p> - - <p>$BNc$($P!"F1$8%M%C%H%o!<%/>e$K$$$k?M$K$O%&%'%V%5%$%H$N$"$kItJ,$K$D$$$F(B - $BL5@)8B$N%"%/%;%9$r5v$7$?$$$1$l$I!"30$N%M%C%H%o!<%/$N?M$K$O(B - $B%Q%9%o!<%I$rDs6!$5$;$k$h$&$K$9$k$?$a$K$O!"<!$N$h$&$J@_Dj$r$9$k$3$H$,(B - $B$G$-$^$9(B:</p> + <p><directive module="mod_authz_host">Allow</directive> と + <directive module="mod_authz_core">Require</directive> の両方が使われているときの + アクセスポリシーを設定します。パラメータは <code>All</code> か <code>Any</code> + です。このディレクティブはある場所へのアクセスがユーザ名/パスワード + <em>と</em>クライアントのホストのアドレスで制限されているときにのみ + 役立ちます。デフォルトの動作 (<code>All</code>) はクライアントがアドレスによる + アクセス制限を満たし、<em>かつ</em>正しいユーザ名とパスワードを入力することを + 要求します。<code>Any</code> では、クライアントはホストの制限を満たすか、 + 正しいユーザ名とパスワードの入力をするかをすればアクセスを許可されます。 + これは、ある場所をパスワードで保護するけれど、特定のアドレスからの + クライアントにはパスワードの入力を要求せずにアクセスを許可する、 + というようなときに使用できます。</p> + + <p>例えば、同じネットワーク上にいる人にはウェブサイトのある部分について + 無制限のアクセスを許したいけれど、外のネットワークの人には + パスワードを提供させるようにするためには、次のような設定をすることが + できます:</p> <example> Require valid-user<br /> @@ -427,14 +427,14 @@ Satisfy Any </example> - <p>$B%P!<%8%g%s(B 2.0.51 $B$+$i$O(B + <p>バージョン 2.0.51 からは <directive module="core" - type="section">Limit</directive> $B%;%/%7%g%s$H(B + type="section">Limit</directive> セクションと <directive module="core" type="section" - >LimitExcept</directive> $B%;%/%7%g%s$r;HMQ$9$k$3$H$G(B - <directive>Satisfy</directive> $B%G%#%l%/%F%#%V$,(B - $BE,MQ$5$l$k%a%=%C%I$r@)8B$9$k$3$H$,(B - $B$G$-$k$h$&$K$J$j$^$7$?!#(B</p> + >LimitExcept</directive> セクションを使用することで + <directive>Satisfy</directive> ディレクティブが + 適用されるメソッドを制限することが + できるようになりました。</p> </usage> <seealso><directive module="mod_access_compat">Allow</directive></seealso> <seealso><directive module="mod_authz_core">Require</directive></seealso> diff --git a/docs/manual/mod/mod_actions.xml.ja b/docs/manual/mod/mod_actions.xml.ja index d017a18bfc..66ef117565 100644 --- a/docs/manual/mod/mod_actions.xml.ja +++ b/docs/manual/mod/mod_actions.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -24,57 +24,57 @@ <name>mod_actions</name> -<description>$B%a%G%#%"%?%$%W$d%j%/%(%9%H%a%=%C%I$K1~$8$F(B -CGI $B%9%/%j%W%H$r<B9T$9$k5!G=$rDs6!(B</description> +<description>メディアタイプやリクエストメソッドに応じて +CGI スクリプトを実行する機能を提供</description> <status>Base</status> <sourcefile>mod_actions.c</sourcefile> <identifier>actions_module</identifier> <summary> - <p>$B$3$N%b%8%e!<%k$K$OFs$D$N%G%#%l%/%F%#%V$,$"$j$^$9!#(B<directive + <p>このモジュールには二つのディレクティブがあります。<directive module="mod_actions">Action</directive> - $B%G%#%l%/%F%#%V$OFCDj$N(B MIME $B%?%$%W$N%U%!%$%k$r%j%/%(%9%H$5$l$?>l9g$K(B - CGI $B%9%/%j%W%H$,<B9T$5$l$k$h$&$K$7$^$9!#(B<directive + ディレクティブは特定の MIME タイプのファイルをリクエストされた場合に + CGI スクリプトが実行されるようにします。<directive module="mod_actions">Script</directive> - $B%G%#%l%/%F%#%V$O%j%/%(%9%H$GFCDj$N%a%=%C%I$,;HMQ$5$l$?$H$-$K(B CGI - $B%9%/%j%W%H$,<B9T$5$l$k$h$&$K$7$^$9!#(B - $B$3$l$O%U%!%$%k$r=hM}$9$k%9%/%j%W%H$N<B9T$r$:$C$H4JC1$K$7$^$9!#(B</p> + ディレクティブはリクエストで特定のメソッドが使用されたときに CGI + スクリプトが実行されるようにします。 + これはファイルを処理するスクリプトの実行をずっと簡単にします。</p> </summary> <seealso><module>mod_cgi</module></seealso> -<seealso><a href="../howto/cgi.html">CGI $B$K$h$kF0E*%3%s%F%s%D(B</a></seealso> -<seealso><a href="../handler.html">Apache $B$N%O%s%I%i$N;HMQ(B</a></seealso> +<seealso><a href="../howto/cgi.html">CGI による動的コンテンツ</a></seealso> +<seealso><a href="../handler.html">Apache のハンドラの使用</a></seealso> <directivesynopsis> <name>Action</name> -<description>$BFCDj$N%O%s%I%i$d%3%s%F%s%H%?%$%W$KBP$7$F(B CGI $B$r<B9T$9$k$h$&$K(B -$B@_Dj(B</description> +<description>特定のハンドラやコンテントタイプに対して CGI を実行するように +設定</description> <syntax>Action <var>action-type</var> <var>cgi-script</var> [virtual]</syntax> <contextlist> <context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context> </contextlist> <override>FileInfo</override> -<compatibility><code>virtual</code> $B=$>~;R$H%O%s%I%iEO$7$O(B -Apache 2.1 $B$GF3F~$5$l$^$7$?(B</compatibility> +<compatibility><code>virtual</code> 修飾子とハンドラ渡しは +Apache 2.1 で導入されました</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B <var>action-type</var> - $B$,%j%/%(%9%H$5$l$?$H$-$K(B <var>cgi-script</var> - $B$,<B9T$5$l$k$H$$$&F0:n$rDI2C$7$^$9!#(B<var>cgi-script</var> $B$O(B - <directive module="mod_alias">ScriptAlias</directive> $B$d(B - <directive module="mod_mime">AddHandler</directive> $B$K$h$C$F(B - CGI $B%9%/%j%W%H$K@_Dj$5$l$?%j%=!<%9$X$N(B URL-path $B$G$9!#(B - <var>Action-type</var> $B$K$O(B - <a href="../handler.html">handler</a> $B$+(B MIME - $B%3%s%F%s%H%?%$%W$r;XDj$G$-$^$9!#%j%/%(%9%H$5$l$?%I%-%e%a%s%H$N(B URL - $B$H%U%!%$%k$N%Q%9$OI8=`(B CGI $B4D6-JQ?t(B <code>PATH_INFO</code> $B$H(B - <code>PATH_TRANSLATED</code> $B$r;H$C$FEA$($i$l$^$9!#(B - $BFCDj$N%j%/%(%9%H$KBP$7$F;HMQ$5$l$k%O%s%I%i$X$O!"(B - <code>REDIRECT_HANDLER</code> $BJQ?t$r;H$C$FEO$;$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p>このディレクティブは <var>action-type</var> + がリクエストされたときに <var>cgi-script</var> + が実行されるという動作を追加します。<var>cgi-script</var> は + <directive module="mod_alias">ScriptAlias</directive> や + <directive module="mod_mime">AddHandler</directive> によって + CGI スクリプトに設定されたリソースへの URL-path です。 + <var>Action-type</var> には + <a href="../handler.html">handler</a> か MIME + コンテントタイプを指定できます。リクエストされたドキュメントの URL + とファイルのパスは標準 CGI 環境変数 <code>PATH_INFO</code> と + <code>PATH_TRANSLATED</code> を使って伝えられます。 + 特定のリクエストに対して使用されるハンドラへは、 + <code>REDIRECT_HANDLER</code> 変数を使って渡せます。</p> + + <example><title>例</title> # Requests for files of a particular MIME content type:<br /> Action image/gif /cgi-bin/images.cgi<br /> <br /> @@ -83,20 +83,20 @@ Apache 2.1 $B$GF3F~$5$l$^$7$?(B</compatibility> Action my-file-type /cgi-bin/program.cgi<br /> </example> - <p>$B:G=i$NNc$G$O!"(BMIME $B%3%s%F%s%H%?%$%W$,(B <code>image/gif</code> - $B$N%U%!%$%k$X$N%j%/%(%9%H$O!";XDj$7$?%9%/%j%W%H(B - <code>/cgi-bin/images.cgi</code> $B$G=hM}$5$l$^$9!#(B</p> + <p>最初の例では、MIME コンテントタイプが <code>image/gif</code> + のファイルへのリクエストは、指定したスクリプト + <code>/cgi-bin/images.cgi</code> で処理されます。</p> - <p>2 $BHVL\$NNc$G$O!"3HD%;R$,(B <code>.xyz</code> - $B$N%U%!%$%k$X$N%j%/%(%9%H$O!";XDj$7$?%9%/%j%W%H(B - <code>/cgi-bin/program.cgi</code> $B$G=hM}$5$l$^$9!#(B</p> + <p>2 番目の例では、拡張子が <code>.xyz</code> + のファイルへのリクエストは、指定したスクリプト + <code>/cgi-bin/program.cgi</code> で処理されます。</p> - <p>$B%*%W%7%g%s$N(B <code>virtual</code> $B=$>~;R$r;HMQ$9$k$H!"(B - $B%j%/%(%9%H$5$l$?%U%!%$%k$,<B:]$KB8:_$9$k$+$I$&$+$r8!::$7$J$$$h$&$K$G$-$^$9!#(B - $B$3$l$ONc$($P!"(B<directive>Action</directive> $B%G%#%l%/%F%#%V$r%P!<%A%c%k$J(B - Location $B$K;HMQ$7$?$$!"$H$$$C$?>l9g$KJXMx$G$9!#(B</p> + <p>オプションの <code>virtual</code> 修飾子を使用すると、 + リクエストされたファイルが実際に存在するかどうかを検査しないようにできます。 + これは例えば、<directive>Action</directive> ディレクティブをバーチャルな + Location に使用したい、といった場合に便利です。</p> - <example><title>$BNc(B</title> + <example><title>例</title> <Location /news><br /> <indent> SetHandler news-handler<br /> @@ -111,41 +111,41 @@ Apache 2.1 $B$GF3F~$5$l$^$7$?(B</compatibility> <directivesynopsis> <name>Script</name> -<description>$BFCDj$N%j%/%(%9%H%a%=%C%I$KBP$7$F(B CGI $B%9%/%j%W%H$r(B -$B<B9T$9$k$h$&$K@_Dj(B</description> +<description>特定のリクエストメソッドに対して CGI スクリプトを +実行するように設定</description> <syntax>Script <var>method</var> <var>cgi-script</var></syntax> <contextlist> <context>server config</context><context>virtual host</context> <context>directory</context></contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B <var>method</var> - $B$H$$$&%a%=%C%I$r;H$C$F%j%/%(%9%H$,9T$J$o$l$?$H$-$K(B - <var>cgi-script</var> $B$r<B9T$9$k$H$$$&F0:n$rDI2C$7$^$9!#(B - <var>cgi-script</var> $B$O(B - <directive module="mod_alias">ScriptAlias</directive> $B$d(B - <directive module="mod_mime">AddHandler</directive> $B$K$h$C$F(B - CGI $B%9%/%j%W%H$K@_Dj$5$l$?%j%=!<%9$X$N(B URL-path $B$G$9!#(B - $B%j%/%(%9%H$5$l$?%I%-%e%a%s%H$N(B URL $B$H%U%!%$%k$N%Q%9$OI8=`(B CGI - $B4D6-JQ?t(B <code>PATH_INFO</code> $B$H(B <code>PATH_TRANSLATED</code> - $B$r;H$C$FEA$($i$l$^$9!#(B</p> + <p>このディレクティブは <var>method</var> + というメソッドを使ってリクエストが行なわれたときに + <var>cgi-script</var> を実行するという動作を追加します。 + <var>cgi-script</var> は + <directive module="mod_alias">ScriptAlias</directive> や + <directive module="mod_mime">AddHandler</directive> によって + CGI スクリプトに設定されたリソースへの URL-path です。 + リクエストされたドキュメントの URL とファイルのパスは標準 CGI + 環境変数 <code>PATH_INFO</code> と <code>PATH_TRANSLATED</code> + を使って伝えられます。</p> <note> - $BG$0U$N%a%=%C%IL>$r;HMQ$9$k$3$H$,$G$-$^$9!#(B - <strong>$B%a%=%C%IL>$OBgJ8;z>.J8;z$r6hJL$7$^$9(B</strong>$B!#$G$9$+$i!"(B - <code>Script PUT</code> $B$H(B <code>Script put</code> - $B$O$^$C$?$/0c$C$?8z2L$K$J$j$^$9!#(B + 任意のメソッド名を使用することができます。 + <strong>メソッド名は大文字小文字を区別します</strong>。ですから、 + <code>Script PUT</code> と <code>Script put</code> + はまったく違った効果になります。 </note> - <p><directive>Script</directive> $B%3%^%s%I$O%G%U%)%k%H$NF0:n$r(B - $BDI2C$9$k$@$1$G$"$k$3$H$K(B - $BCm0U$7$F$/$@$5$$!#$b$7(B CGI $B%9%/%j%W%H$,8F$P$l$?$j!"%j%/%(%9%H$5$l$?(B - $B%a%=%C%I$rFbIt$G07$&$3$H$N$G$-$kB>$N%j%=!<%9$,$"$l$P!"$=$l$,9T$J$o$l$^$9!#(B - <code>GET</code> $B%a%=%C%I$N(B <directive>Script</directive> $B$OLd9g$;(B - $B0z?t$,$"$k>l9g$K$N$_(B - (<em>$B$?$H$($P(B</em>$B!"(Bfoo.html?hi) $B8F$P$l$k$H$$$&$3$H$K$bCm0U$7$F$/$@$5$$!#(B - $B$=$&$G$J$$>l9g$O!"%j%/%(%9%H$ODL>oDL$j=hM}$5$l$^$9!#(B</p> + <p><directive>Script</directive> コマンドはデフォルトの動作を + 追加するだけであることに + 注意してください。もし CGI スクリプトが呼ばれたり、リクエストされた + メソッドを内部で扱うことのできる他のリソースがあれば、それが行なわれます。 + <code>GET</code> メソッドの <directive>Script</directive> は問合せ + 引数がある場合にのみ + (<em>たとえば</em>、foo.html?hi) 呼ばれるということにも注意してください。 + そうでない場合は、リクエストは通常通り処理されます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> # For <ISINDEX>-style searching<br /> Script GET /cgi-bin/search<br /> <br /> diff --git a/docs/manual/mod/mod_alias.xml.ja b/docs/manual/mod/mod_alias.xml.ja index 469b5e9b78..93a78a5f0e 100644 --- a/docs/manual/mod/mod_alias.xml.ja +++ b/docs/manual/mod/mod_alias.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:554716 (outdated) --> @@ -23,75 +23,75 @@ <modulesynopsis metafile="mod_alias.xml.meta"> <name>mod_alias</name> -<description>$B%[%9%H%U%!%$%k%7%9%F%`>e$N$$$m$$$m$J0c$&>l=j$r(B - $B%I%-%e%a%s%H%D%j!<$K%^%C%W$9$k5!G=$H!"(B - URL $B$N%j%@%$%l%/%H$r9T$J$&5!G=$rDs6!$9$k(B</description> +<description>ホストファイルシステム上のいろいろな違う場所を + ドキュメントツリーにマップする機能と、 + URL のリダイレクトを行なう機能を提供する</description> <status>Base</status> <sourcefile>mod_alias.c</sourcefile> <identifier>alias_module</identifier> <summary> - <p>$B$3$N%b%8%e!<%k$N%G%#%l%/%F%#%V$O%5!<%P$K%j%/%(%9%H$,E~Ce$7$?$H$-$K(B - URL $B$NA`:n$d@)8f$r$9$k$3$H$r2DG=$K$7$^$9!#(B<directive + <p>このモジュールのディレクティブはサーバにリクエストが到着したときに + URL の操作や制御をすることを可能にします。<directive module="mod_alias">Alias</directive> - $B%G%#%l%/%F%#%V$H(B <directive module="mod_alias">ScriptAlias</directive> - $B%G%#%l%/%F%#%V$O(B - URL $B$H%U%!%$%k%7%9%F%`$N%Q%9$r%^%C%W$9$k$?$a$K;HMQ$5$l$^$9!#$3$l$O(B + ディレクティブと <directive module="mod_alias">ScriptAlias</directive> + ディレクティブは + URL とファイルシステムのパスをマップするために使用されます。これは <directive module="core">DocumentRoot</directive> - $B$N2<$K$J$$%I%-%e%a%s%H$r%&%'%V$N%I%-%e%a%s%H%D%j!<$N0lIt$H$7$F(B - $BAw$i$l$k$h$&$K$7$^$9!#(B<directive module="mod_alias">ScriptAlias</directive> - $B%G%#%l%/%F%#%V$K$O%^%C%W@h$N%G%#%l%/%H%j$,(B CGI - $B%9%/%j%W%H$N$_$G$"$k$3$H$r<($9$H$$$&DI2C$N8z2L$,$"$j$^$9!#(B + の下にないドキュメントをウェブのドキュメントツリーの一部として + 送られるようにします。<directive module="mod_alias">ScriptAlias</directive> + ディレクティブにはマップ先のディレクトリが CGI + スクリプトのみであることを示すという追加の効果があります。 </p> - <p><directive module="mod_alias">Redirect</directive> $B%G%#%l%/%F%#%V$O(B - $B%/%i%$%"%s%H$K0c$C$?(B - URL $B$K?7$7$$%j%/%(%9%H$rAw$k$h$&$K;X<($7$^$9!#$3$l$O!"(B - $B%j%=!<%9$,?7$7$$>l=j$K0\F0$7$?$H$-$K$h$/;HMQ$5$l$^$9!#(B</p> + <p><directive module="mod_alias">Redirect</directive> ディレクティブは + クライアントに違った + URL に新しいリクエストを送るように指示します。これは、 + リソースが新しい場所に移動したときによく使用されます。</p> - <p><module>mod_alias</module> $B$O4JC1$J(B URL $BA`:n8~$1$K@_7W$5$l$F$$$^$9!#(B - $B$h$jJ#;($JA`:n!"%/%(%j!<%9%H%j%s%0$NA`:n$K$O!"(B<module>mod_rewrite</module> - $B$GDs6!$5$l$k%D!<%k$r;HMQ$7$F$/$@$5$$!#(B</p> + <p><module>mod_alias</module> は簡単な URL 操作向けに設計されています。 + より複雑な操作、クエリーストリングの操作には、<module>mod_rewrite</module> + で提供されるツールを使用してください。</p> </summary> <seealso><module>mod_rewrite</module></seealso> <seealso><a -href="../urlmapping.html">URL $B$+$i%U%!%$%k%7%9%F%`>e$N0LCV$X$N%^%C%T%s%0(B</a></seealso> +href="../urlmapping.html">URL からファイルシステム上の位置へのマッピング</a></seealso> -<section id="order"><title>$B=hM}$N=gHV(B</title> +<section id="order"><title>処理の順番</title> -<p>$BMM!9$J%3%s%F%-%9%HCf$G$N(B Alias $B$d(B Redirect $B$OB>$N%G%#%l%/%F%#%V$H(B -$BF1$8$h$&$KI8=`$N(B <a href="../sections.html#mergin">$B%^!<%85,B'(B</a> $B$K(B -$B=>$C$F=hM}$5$l$^$9!#$?$@$7!"(B($BNc$($P(B <directive type="section" module="core" ->VirtualHost</directive> $B%;%/%7%g%s$NCf$N$h$&$K(B) $BJ#?t$N(B Alias $B$d(B Redirect $B$,(B -$BF1$8%3%s%F%-%9%HCf$K8=$l$?>l9g$O7h$^$C$?=gHV$G=hM}$5$l$^$9!#(B</p> +<p>様々なコンテキスト中での Alias や Redirect は他のディレクティブと +同じように標準の <a href="../sections.html#mergin">マージ規則</a> に +従って処理されます。ただし、(例えば <directive type="section" module="core" +>VirtualHost</directive> セクションの中のように) 複数の Alias や Redirect が +同じコンテキスト中に現れた場合は決まった順番で処理されます。</p> -<p>$B$^$:!"(BAlias $B$NA0$K$9$Y$F$N(B Redirect $B$,=hM}$5$l$^$9!#$G$9$+$i!"(B<directive -module="mod_alias">Redirect</directive> $B$+(B <directive -module="mod_alias">RedirectMatch</directive> $B$K%^%C%A$9$k%j%/%(%9%H$K$O(B -Alias $B$O7h$7$FE,MQ$5$l$^$;$s!#<!$K!"(BAlias $B$H(B Redirect $B$,@_Dj%U%!%$%kCf$N(B -$B=gHV$KE,MQ$5$l!":G=i$K%^%C%A$7$?$b$N$,M%@h$5$l$^$9!#(B</p> +<p>まず、Alias の前にすべての Redirect が処理されます。ですから、<directive +module="mod_alias">Redirect</directive> か <directive +module="mod_alias">RedirectMatch</directive> にマッチするリクエストには +Alias は決して適用されません。次に、Alias と Redirect が設定ファイル中の +順番に適用され、最初にマッチしたものが優先されます。</p> -<p>$B$G$9$+$i!"Fs$D0J>e$N%G%#%l%/%F%#%V$,F1$8%Q%9$KE,MQ$5$l$k$H$-$O!"(B -$B$9$Y$F$N%G%#%l%/%F%#%V$N8z2L$rF@$k$?$a$K$O$h$j>\$7$$%Q%9$r@h$K=q$/(B -$BI,MW$,$"$j$^$9!#Nc$($P!"<!$N@_Dj$O4|BTDL$j$NF0:n$r$7$^$9(B:</p> +<p>ですから、二つ以上のディレクティブが同じパスに適用されるときは、 +すべてのディレクティブの効果を得るためにはより詳しいパスを先に書く +必要があります。例えば、次の設定は期待通りの動作をします:</p> <example> Alias /foo/bar /baz<br /> Alias /foo /gaq </example> -<p>$B$7$+$7!">e5-$NFs$D$N%G%#%l%/%F%#%V$N=gHV$,5U$K$J$k$H!"(B -<code>/foo</code> <directive module="mod_alias">Alias</directive> $B$,(B -$B>o$K(B <code>/foo/bar</code> <directive -module="mod_alias">Alias</directive> $B$h$j@h$K%^%C%A$7$^$9$N$G!"8e<T$O(B -$B7h$7$FE,MQ$5$l$k$3$H$O$"$j$^$;$s!#(B</p> +<p>しかし、上記の二つのディレクティブの順番が逆になると、 +<code>/foo</code> <directive module="mod_alias">Alias</directive> が +常に <code>/foo/bar</code> <directive +module="mod_alias">Alias</directive> より先にマッチしますので、後者は +決して適用されることはありません。</p> </section> <directivesynopsis> <name>Alias</name> -<description>URL $B$r%U%!%$%k%7%9%F%`$N0LCV$K%^%C%W$9$k(B</description> +<description>URL をファイルシステムの位置にマップする</description> <syntax>Alias <var>URL-path</var> <var>file-path</var>|<var>directory-path</var></syntax> <contextlist><context>server config</context> @@ -99,47 +99,47 @@ module="mod_alias">Alias</directive> $B$h$j@h$K%^%C%A$7$^$9$N$G!"8e<T$O(B </contextlist> <usage> - <p><directive>Alias</directive> $B%G%#%l%/%F%#%V$O%I%-%e%a%s%H$r(B - $B%m!<%+%k%U%!%$%k%7%9%F%`$N(B + <p><directive>Alias</directive> ディレクティブはドキュメントを + ローカルファイルシステムの <directive module="core">DocumentRoot</directive> - $B0J30$N>l=j$KJ]4I$9$k$3$H$r2DG=$K$7$^$9!#(B - URL $B$N(B (% $B$,I|9f$5$l$?(B) $B%Q%9$,(B <var>url-path</var> $B$G;O$^$k$b$N$O(B + 以外の場所に保管することを可能にします。 + URL の (% が復号された) パスが <var>url-path</var> で始まるものは <var>directory-filename</var> - $B$G;O$^$k%m!<%+%k%U%!%$%k$K%^%C%W$5$l$^$9!#(B</p> + で始まるローカルファイルにマップされます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> Alias /image /ftp/pub/image </example> - <p>http://myserver/image/foo.gif $B$X$N%j%/%(%9%H$KBP$7$F!"%5!<%P$O(B - $B%U%!%$%k(B /ftp/pub/image/foo.gif $B$rJV$7$^$9!#(B</p> + <p>http://myserver/image/foo.gif へのリクエストに対して、サーバは + ファイル /ftp/pub/image/foo.gif を返します。</p> - <p>$B$b$7(B <var>url-path</var> $B$N:G8e$K(B / - $B$r=q$$$?$J$i!"%5!<%P$,%(%$%j%"%9$rE83+$9$k$?$a$K$O!":G8e$N(B / - $B$,I,MW$K$J$k$3$H$KCm0U$7$F$/$@$5$$!#$9$J$o$A!"(B<code>Alias /icons/ - /usr/local/apache/icons/</code> $B$H$$$&$b$N$r;HMQ$7$F$$$k>l9g$O!"(B - <code>/icons</code> $B$H$$$&(B url $B$O%(%$%j%"%9$5$l$^$;$s!#(B</p> + <p>もし <var>url-path</var> の最後に / + を書いたなら、サーバがエイリアスを展開するためには、最後の / + が必要になることに注意してください。すなわち、<code>Alias /icons/ + /usr/local/apache/icons/</code> というものを使用している場合は、 + <code>/icons</code> という url はエイリアスされません。</p> - <p>$B%(%$%j%"%9$N(B<em>$B9T$-@h(B</em>$B$r4^$s$G$$$k(B <directive + <p>エイリアスの<em>行き先</em>を含んでいる <directive type="section" module="core">Directory</directive> - $B%;%/%7%g%s$rDI2C$9$kI,MW$,$"$k$+$b$7$l$J$$$3$H$KCm0U$7$F$/$@$5$$!#(B - $B%(%$%j%"%9$NE83+$O(B <directive + セクションを追加する必要があるかもしれないことに注意してください。 + エイリアスの展開は <directive type="section" module="core">Directory</directive> - $B%;%/%7%g%s$rD4$Y$kA0$K9T$J$o$l$^$9$N$G!"(B - $B%(%$%j%"%9$N9T$-@h$N(B <directive - type="section" module="core">Directory</directive> $B%;%/%7%g%s$N$_(B - $B8z2L$,$"$j$^$9!#(B - ($B$7$+$7!"(B<directive + セクションを調べる前に行なわれますので、 + エイリアスの行き先の <directive + type="section" module="core">Directory</directive> セクションのみ + 効果があります。 + (しかし、<directive type="section" module="core">Location</directive> - $B%;%/%7%g%s$O%(%$%j%"%9$,=hM}$5$l$kA0$K<B9T$5$l$^$9$N$G!"(B - $B$3$A$i$OE,MQ$5$l$^$9!#(B)</p> + セクションはエイリアスが処理される前に実行されますので、 + こちらは適用されます。)</p> - <p>$BFC$K!"(B<code>Alias</code> $B$r(B + <p>特に、<code>Alias</code> を <directive module="core">DocumentRoot</directive> - $B%G%#%l%/%H%j$N30B&$KG[CV$7$?>l9g$O!"9T$-@h$N%G%#%l%/%H%j$KBP$9$k(B - $B%"%/%;%98"8B$rL@<(E*$K@)8B$7$J$1$l$P$J$i$J$$$G$7$g$&!#(B</p> + ディレクトリの外側に配置した場合は、行き先のディレクトリに対する + アクセス権限を明示的に制限しなければならないでしょう。</p> - <example><title>$BNc(B</title> + <example><title>例</title> Alias /image /ftp/pub/image<br /> <Directory /ftp/pub/image><br /> <indent> @@ -154,7 +154,7 @@ module="mod_alias">Alias</directive> $B$h$j@h$K%^%C%A$7$^$9$N$G!"8e<T$O(B <directivesynopsis> <name>AliasMatch</name> -<description>$B@55,I=8=$r;H$C$F(B URL $B$r%U%!%$%k%7%9%F%`$N0LCV$K%^%C%W$9$k(B</description> +<description>正規表現を使って URL をファイルシステムの位置にマップする</description> <syntax>AliasMatch <var>regex</var> <var>file-path</var>|<var>directory-path</var></syntax> <contextlist><context>server config</context> @@ -162,13 +162,13 @@ module="mod_alias">Alias</directive> $B$h$j@h$K%^%C%A$7$^$9$N$G!"8e<T$O(B </contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B <directive module="mod_alias">Alias</directive> - $B$H$[$H$s$IF1$8$G$9$,!"4JC1$J@hF,$+$i$N%^%C%A$r9T$J$&$N$G$O$J$/!"(B - $BI8=`@55,I=8=$rMxMQ$7$^$9!#$3$3$G;XDj$5$l$?@55,I=8=$H(B URL $B$N%Q%9(B - $B$,9g$&$+$I$&$+$rD4$Y!"9g$&>l9g$O3g8L$G3g$i$l$?%^%C%A$r(B - $BM?$($i$l$?J8;zNs$GCV$-49$(!"$=$l$r%U%!%$%kL>$H$7$F;HMQ$7$^$9!#$?$H$($P!"(B - <code>/icons</code> $B%G%#%l%/%H%j$r;H$&(B - $B$?$a$K$O0J2<$N$h$&$J$b$N$,;HMQ$G$-$^$9(B:</p> + <p>このディレクティブは <directive module="mod_alias">Alias</directive> + とほとんど同じですが、簡単な先頭からのマッチを行なうのではなく、 + 標準正規表現を利用します。ここで指定された正規表現と URL のパス + が合うかどうかを調べ、合う場合は括弧で括られたマッチを + 与えられた文字列で置き換え、それをファイル名として使用します。たとえば、 + <code>/icons</code> ディレクトリを使う + ためには以下のようなものが使用できます:</p> <example> AliasMatch ^/icons(.*) /usr/local/apache/icons$1 @@ -178,8 +178,8 @@ module="mod_alias">Alias</directive> $B$h$j@h$K%^%C%A$7$^$9$N$G!"8e<T$O(B <directivesynopsis> <name>Redirect</name> -<description>$B%/%i%$%"%s%H$,0c$&(B URL $B$r<hF@$9$k$h$&$K30It$X$N%j%@%$%l%/%H$r(B -$BAw$k(B</description> +<description>クライアントが違う URL を取得するように外部へのリダイレクトを +送る</description> <syntax>Redirect [<var>status</var>] <var>URL-path</var> <var>URL</var></syntax> <contextlist><context>server config</context> @@ -188,67 +188,67 @@ module="mod_alias">Alias</directive> $B$h$j@h$K%^%C%A$7$^$9$N$G!"8e<T$O(B <override>FileInfo</override> <usage> - <p>Redirect $B%G%#%l%/%F%#%V$O8E$$(B URL $B$r?7$7$$$b$N$X%^%C%W$7$^$9!#(B - $B?7$7$$(B URL $B$,%/%i%$%"%s%H$KJV$5$l$^$9!#$=$7$F!"(B - $B%/%i%$%"%s%H$O?7$7$$%"%I%l%9$r$b$&0l2s<hF@$7$h$&$H$7$^$9!#(B - <var>URL-path</var> (% $B$,I|9f$5$l$?(B) $B%Q%9$G;O$^$k%I%-%e%a%s%H$X$N(B - $B$9$Y$F$N%j%/%(%9%H$O(B <var>URL</var> $B$G;O$^$k?7$7$$(B - (% $B$,Id9f2=$5$l$?(B) URL $B$X$N%j%@%$%l%/%H%(%i!<$,JV$5$l$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p>Redirect ディレクティブは古い URL を新しいものへマップします。 + 新しい URL がクライアントに返されます。そして、 + クライアントは新しいアドレスをもう一回取得しようとします。 + <var>URL-path</var> (% が復号された) パスで始まるドキュメントへの + すべてのリクエストは <var>URL</var> で始まる新しい + (% が符号化された) URL へのリダイレクトエラーが返されます。</p> + + <example><title>例</title> Redirect /service http://foo2.bar.com/service </example> - <p>$B%/%i%$%"%s%H$O(B http://myserver/service/foo.txt - $B$X$N%j%/%(%9%H$r9T$J$&$H!"Be$o$j$K(B http://foo2.bar.com/service/foo.txt - $B$r%"%/%;%9$9$k$h$&$K9p$2$i$l$^$9!#(B</p> + <p>クライアントは http://myserver/service/foo.txt + へのリクエストを行なうと、代わりに http://foo2.bar.com/service/foo.txt + をアクセスするように告げられます。</p> -<note><title>$BCm0U(B</title><p>$B@_Dj%U%!%$%kCf$N=gHV$K4X$o$i$:!"(B -Redirect $B7O$N%G%#%l%/%F%#%V$O(B Alias -$B%G%#%l%/%F%#%V$H(B ScriptAlias $B%G%#%l%/%F%#%V$h$j$bM%@h$5$l$^$9!#(B -$B$^$?!"(B.htaccess $B%U%!%$%k$d(B <directive +<note><title>注意</title><p>設定ファイル中の順番に関わらず、 +Redirect 系のディレクティブは Alias +ディレクティブと ScriptAlias ディレクティブよりも優先されます。 +また、.htaccess ファイルや <directive type="section" module="core">Directory</directive> -$B%;%/%7%g%s$NCf$G;H$o$l$F$$$?$H$7$F$b!"(B<var>URL-path</var> -$B$OAjBP%Q%9$G$O$J$/!"40A4$J(B URL $B$G$J$1$l$P$J$j$^$;$s!#(B</p></note> +セクションの中で使われていたとしても、<var>URL-path</var> +は相対パスではなく、完全な URL でなければなりません。</p></note> - <p>$B$b$7(B <var>status</var> $B0z?t$,M?$($i$l$F$$$J$1$l$P!"%j%@%$%l%/%H$O(B - "temporary" (HTTP $B%9%F!<%?%9(B 302) $B$K$J$j$^$9!#$3$l$O%/%i%$%"%s%H$K(B - $B%j%=!<%9$,0l;~E*$K0\F0$7$?$H$$$&$3$H$r<($7$^$9!#(B<var>Status</var> - $B0z?t$O(B $BB>$N(B HTTP $B$N%9%F!<%?%9%3!<%I$rJV$9$?$a$K;HMQ$9$k$3$H$,$G$-$^$9(B:</p> + <p>もし <var>status</var> 引数が与えられていなければ、リダイレクトは + "temporary" (HTTP ステータス 302) になります。これはクライアントに + リソースが一時的に移動したということを示します。<var>Status</var> + 引数は 他の HTTP のステータスコードを返すために使用することができます:</p> <dl> <dt>permanent</dt> - <dd>$B1J5W$K%j%@%$%l%/%H$r$9$k%9%F!<%?%9(B (301) $B$rJV$7$^$9!#(B - $B$3$l$O%j%=!<%9$,1J5W$K0\F0$7$?$H$$$&$3$H$r0UL#$7$^$9!#(B</dd> + <dd>永久にリダイレクトをするステータス (301) を返します。 + これはリソースが永久に移動したということを意味します。</dd> <dt>temp</dt> - <dd>$B0l;~E*$J%j%@%$%l%/%H%9%F!<%?%9(B (302) - $B$rJV$7$^$9!#$3$l$,%G%U%)%k%H$G$9!#(B</dd> + <dd>一時的なリダイレクトステータス (302) + を返します。これがデフォルトです。</dd> <dt>seeother</dt> - <dd>"See Other" $B%9%F!<%?%9(B (303) $B$rJV$7$^$9!#(B - $B$3$l$O%j%=!<%9$,B>$N$b$N$GCV$-49$($i$l$?$3$H$r0UL#$7$^$9!#(B</dd> + <dd>"See Other" ステータス (303) を返します。 + これはリソースが他のもので置き換えられたことを意味します。</dd> <dt>gone</dt> - <dd>"Gone" $B%9%F!<%?%9(B (410) $B$rJV$7$^$9!#$3$l$O%j%=!<%9$,1J5W$K(B - $B:o=|$5$l$?$3$H$r0UL#$7$^$9!#$3$N%9%F!<%?%9$,;HMQ$5$l$?>l9g!"(B - <var>url</var> $B0z?t$O>JN,$5$l$J$1$l$P$J$j$^$;$s!#(B</dd> + <dd>"Gone" ステータス (410) を返します。これはリソースが永久に + 削除されたことを意味します。このステータスが使用された場合、 + <var>url</var> 引数は省略されなければなりません。</dd> </dl> - <p><var>Status</var> $B$NCM$K%9%F!<%?%9%3!<%I$r?tCM$GM?$($k$3$H$G(B - $BB>$N%9%F!<%?%9%3!<%I$bJV$9$3$H$,$G$-$^$9!#%9%F!<%?%9$,(B 300 $B$H(B 399 - $B$N4V$K$"$k>l9g!"(B<var>url</var> $B0z?t$OB8:_$7$F$$$J$1$l$P$$$1$^$;$s!#(B - $B$=$NB>$N>l9g$O>JN,$5$l$F$$$J$1$l$P$J$j$^$;$s!#$?$@$7!"(B - $B%9%F!<%?%9$O(B Apache $B$N%3!<%I$,CN$C$F$$$k$b$N$G$"$kI,MW$,$"$j$^$9(B - (http_protocol.c $B$N4X?t(B <code>send_error_response</code> - $B$r8+$F$/$@$5$$(B)$B!#(B</p> - <p>$BNc(B:</p> + <p><var>Status</var> の値にステータスコードを数値で与えることで + 他のステータスコードも返すことができます。ステータスが 300 と 399 + の間にある場合、<var>url</var> 引数は存在していなければいけません。 + その他の場合は省略されていなければなりません。ただし、 + ステータスは Apache のコードが知っているものである必要があります + (http_protocol.c の関数 <code>send_error_response</code> + を見てください)。</p> + <p>例:</p> - <example><title>$BNc(B</title> + <example><title>例</title> Redirect permanent /one http://example.com/two<br /> Redirect 303 /three http://example.com/other </example> @@ -258,8 +258,8 @@ type="section" module="core">Directory</directive> <directivesynopsis> <name>RedirectMatch</name> -<description>$B8=:_$N(B URL $B$X$N@55,I=8=$N%^%C%A$K$h$j(B -$B30It$X$N%j%@%$%l%/%H$rAw$k(B</description> +<description>現在の URL への正規表現のマッチにより +外部へのリダイレクトを送る</description> <syntax>RedirectMatch [<var>status</var>] <var>regex</var> <var>URL</var></syntax> <contextlist><context>server config</context> @@ -268,13 +268,13 @@ type="section" module="core">Directory</directive> <override>FileInfo</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B <directive module="mod_alias">Redirect</directive> - $B$H$[$H$s$IF1$8$G$9$,!"4JC1$J@hF,$+$i$N%^%C%A$r9T$J$&$N$G$O$J$/!"(B - $BI8=`@55,I=8=$rMxMQ$7$^$9!#$3$3$G;XDj$5$l$?@55,I=8=$H(B URL-path - $B$,9g$&$+$I$&$+$rD4$Y!"9g$&>l9g$O3g8L$G3g$i$l$?%^%C%A$r(B - $BM?$($i$l$?J8;zNs$GCV$-49$(!"$=$l$r%U%!%$%kL>$H$7$F;HMQ$7$^$9!#(B - $B$?$H$($P!"$9$Y$F$N(B GIF $B%U%!%$%k$rJL%5!<%P$NF1MM$JL>A0$N(B JPEG - $B%U%!%$%k$K%j%@%$%l%/%H$9$k$K$O!"0J2<$N$h$&$J$b$N$r;H$$$^$9(B: + <p>このディレクティブは <directive module="mod_alias">Redirect</directive> + とほとんど同じですが、簡単な先頭からのマッチを行なうのではなく、 + 標準正規表現を利用します。ここで指定された正規表現と URL-path + が合うかどうかを調べ、合う場合は括弧で括られたマッチを + 与えられた文字列で置き換え、それをファイル名として使用します。 + たとえば、すべての GIF ファイルを別サーバの同様な名前の JPEG + ファイルにリダイレクトするには、以下のようなものを使います: </p> <example> @@ -285,8 +285,8 @@ type="section" module="core">Directory</directive> <directivesynopsis> <name>RedirectTemp</name> -<description>$B%/%i%$%"%s%H$,0c$&(B URL $B$r<hF@$9$k$h$&$K30It$X$N0l;~E*$J(B -$B%j%@%$%l%/%H$rAw$k(B</description> +<description>クライアントが違う URL を取得するように外部への一時的な +リダイレクトを送る</description> <syntax>RedirectTemp <var>URL-path</var> <var>URL</var></syntax> <contextlist><context>server config</context> <context>virtual host</context> @@ -294,16 +294,16 @@ type="section" module="core">Directory</directive> <override>FileInfo</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%/%i%$%"%s%H$K(B Redirect - $B$,0l;~E*$J$b$N$G$"$k(B ($B%9%F!<%?%9(B 302) $B$3$H$rCN$i$;$^$9!#(B - <code>Redirect temp</code> $B$H$^$C$?$/F1$8$G$9!#(B</p> + <p>このディレクティブはクライアントに Redirect + が一時的なものである (ステータス 302) ことを知らせます。 + <code>Redirect temp</code> とまったく同じです。</p> </usage> </directivesynopsis> <directivesynopsis> <name>RedirectPermanent</name> -<description>$B%/%i%$%"%s%H$,0c$&(B URL $B$r<hF@$9$k$h$&$K30It$X$N1J5WE*$J(B -$B%j%@%$%l%/%H$rAw$k(B</description> +<description>クライアントが違う URL を取得するように外部への永久的な +リダイレクトを送る</description> <syntax>RedirectPermanent <var>URL-path</var> <var>URL</var></syntax> <contextlist><context>server config</context> <context>virtual host</context> @@ -311,16 +311,16 @@ type="section" module="core">Directory</directive> <override>FileInfo</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%/%i%$%"%s%H$K(B Redirect $B$,1J5WE*$J$b$N(B - ($B%9%F!<%?%9(B 301) $B$G$"$k$3$H$rCN$i$;$^$9!#(B - <code>Redirect permanent</code> $B$H$^$C$?$/F1$8$G$9!#(B</p> + <p>このディレクティブはクライアントに Redirect が永久的なもの + (ステータス 301) であることを知らせます。 + <code>Redirect permanent</code> とまったく同じです。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ScriptAlias</name> -<description>URL $B$r%U%!%$%k%7%9%F%`$N0LCV$X%^%C%W$7!"%^%C%W@h$r(B -CGI $B%9%/%j%W%H$K;XDj(B</description> +<description>URL をファイルシステムの位置へマップし、マップ先を +CGI スクリプトに指定</description> <syntax>ScriptAlias <var>URL-path</var> <var>file-path</var>|<var>directory-path</var></syntax> <contextlist><context>server config</context> @@ -328,30 +328,30 @@ CGI $B%9%/%j%W%H$K;XDj(B</description> </contextlist> <usage> - <p><directive>ScriptAlias</directive> $B%G%#%l%/%F%#%V$O!"BP>]%G%#%l%/%H%j$K(B - <module>mod_cgi</module> $B$N(B cgi-script - $B%O%s%I%i$G=hM}$5$l$k(B CGI - $B%9%/%j%W%H$,$"$k$3$H$r<($90J30$O(B + <p><directive>ScriptAlias</directive> ディレクティブは、対象ディレクトリに + <module>mod_cgi</module> の cgi-script + ハンドラで処理される CGI + スクリプトがあることを示す以外は <directive module="mod_alias">Alias</directive> - $B%G%#%l%/%F%#%V$HF1$8?6$kIq$$$r$7$^$9!#(B - URL $B$N(B (% $B$,I|9f$5$l$?(B) $B%Q%9$,(B <var>URL-path</var> $B$G;O$^$k$b$N$O(B - $B%m!<%+%k$N%U%!%$%k%7%9%F%`$N(B - $B%U%k%Q%9$G$"$kFsHVL\$N0z?t$K%^%C%W$5$l$^$9!#(B</p> + ディレクティブと同じ振る舞いをします。 + URL の (% が復号された) パスが <var>URL-path</var> で始まるものは + ローカルのファイルシステムの + フルパスである二番目の引数にマップされます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> ScriptAlias /cgi-bin/ /web/cgi-bin/ </example> <p><code>http://myserver/cgi-bin/foo</code> - $B$X$N%j%/%(%9%H$KBP$7$F%5!<%P$O%9%/%j%W%H(B - <code>/web/cgi-bin/foo</code> $B$r<B9T$7$^$9!#(B</p> + へのリクエストに対してサーバはスクリプト + <code>/web/cgi-bin/foo</code> を実行します。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ScriptAliasMatch</name> -<description>URL $B$r@55,I=8=$r;H$C$F%U%!%$%k%7%9%F%`$N0LCV$X%^%C%W$7!"%^%C%W@h$r(B -CGI $B%9%/%j%W%H$K;XDj(B</description> +<description>URL を正規表現を使ってファイルシステムの位置へマップし、マップ先を +CGI スクリプトに指定</description> <syntax>ScriptAliasMatch <var>regex</var> <var>file-path</var>|<var>directory-path</var></syntax> <contextlist><context>server config</context> @@ -359,13 +359,13 @@ CGI $B%9%/%j%W%H$K;XDj(B</description> </contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B <directive module="mod_alias">ScriptAlias</directive> - $B$H$[$H$s$IF1$8$G$9$,!"4JC1$J@hF,$+$i$N%^%C%A$r9T$J$&$N$G$O$J$/!"(B - $BI8=`@55,I=8=$rMxMQ$7$^$9!#$3$3$G;XDj$5$l$?@55,I=8=$H(B URL-path - $B$,9g$&$+$I$&$+$rD4$Y!"9g$&>l9g$O3g8L$G3g$i$l$?%^%C%A$r(B - $BM?$($i$l$?J8;zNs$GCV$-49$(!"$=$l$r%U%!%$%kL>$H$7$F;HMQ$7$^$9!#(B - $B$?$H$($P!"I8=`$N(B <code>/cgi-bin</code> - $B$r;HMQ$9$k$h$&$K$9$k$?$a$K$O!"0J2<$N$h$&$J$b$N$r;H$$$^$9(B: + <p>このディレクティブは <directive module="mod_alias">ScriptAlias</directive> + とほとんど同じですが、簡単な先頭からのマッチを行なうのではなく、 + 標準正規表現を利用します。ここで指定された正規表現と URL-path + が合うかどうかを調べ、合う場合は括弧で括られたマッチを + 与えられた文字列で置き換え、それをファイル名として使用します。 + たとえば、標準の <code>/cgi-bin</code> + を使用するようにするためには、以下のようなものを使います: </p> <example> diff --git a/docs/manual/mod/mod_asis.xml.ja b/docs/manual/mod/mod_asis.xml.ja index 0df25cbddf..87052688bb 100644 --- a/docs/manual/mod/mod_asis.xml.ja +++ b/docs/manual/mod/mod_asis.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -23,43 +23,43 @@ <modulesynopsis metafile="mod_asis.xml.meta"> <name>mod_asis</name> -<description>$B<+J,MQ$N(B HTTP $B%X%C%@$N=q$+$l$F$$$k%U%!%$%k$rAw?.$9$k(B</description> +<description>自分用の HTTP ヘッダの書かれているファイルを送信する</description> <status>Base</status> <sourcefile>mod_asis.c</sourcefile> <identifier>asis_module</identifier> <summary> - <p>$B$3$N%b%8%e!<%k$O%O%s%I%i(B <code>send-as-is</code> - $B$rDs6!$7$^$9!#$3$N%O%s%I%i$ODL>o$N(B HTTP - $B%X%C%@$r$[$H$s$IDI2C$9$k$3$H$J$/%I%-%e%a%s%H$rAw?.$7$^$9!#(B</p> + <p>このモジュールはハンドラ <code>send-as-is</code> + を提供します。このハンドラは通常の HTTP + ヘッダをほとんど追加することなくドキュメントを送信します。</p> - <p>$B$3$l$O%5!<%P$+$i$I$s$J<oN`$N%G!<%?$rAw$k$H$-$K$b;HMQ$G$-$^$9!#(B - Cgi $B%9%/%j%W%H$d(B nph $B%9%/%j%W%H$,L5$/$F$b%j%@%$%l%/%H$dB>$NFCJL$J(B - HTTP $B1~Ez$rAw$k$3$H$,$G$-$^$9!#(B</p> + <p>これはサーバからどんな種類のデータを送るときにも使用できます。 + Cgi スクリプトや nph スクリプトが無くてもリダイレクトや他の特別な + HTTP 応答を送ることができます。</p> - <p>$BNr;KE*$JM}M3$K$h$j!"$3$N%b%8%e!<%k$O(B mime $B%?%$%W(B - <code>httpd/send-as-is</code> $B$N%U%!%$%k$b=hM}$7$^$9!#(B</p> + <p>歴史的な理由により、このモジュールは mime タイプ + <code>httpd/send-as-is</code> のファイルも処理します。</p> </summary> <seealso><module>mod_headers</module></seealso> <seealso><module>mod_cern_meta</module></seealso> -<seealso><a href="../handler.html">Apache $B$N%O%s%I%i$N;HMQ(B</a></seealso> +<seealso><a href="../handler.html">Apache のハンドラの使用</a></seealso> -<section id="usage"><title>$B;HMQK!(B</title> +<section id="usage"><title>使用法</title> - <p>$B%5!<%P@_Dj%U%!%$%k$G!"%U%!%$%k$H(B <code>send-as-is</code> - $B%O%s%I%i$rNc$($P0J2<$N$h$&$K4XO"IU$1$F$/$@$5$$!#(B</p> + <p>サーバ設定ファイルで、ファイルと <code>send-as-is</code> + ハンドラを例えば以下のように関連付けてください。</p> <example>AddHandler send-as-is asis</example> - <p>$B3HD%;R$,(B <code>.asis</code> $B$N$9$Y$F$N%U%!%$%k$NFbMF$O(B Apache - $B$+$i%/%i%$%"%s%H$X$[$H$s$IJQ99L5$/Aw$i$l$^$9!#%/%i%$%"%s%H$K$O(B - HTTP $B%X%C%@$,I,MW$G$9$N$G!"%U%!%$%k$K=q$/$3$H$rK:$l$J$$$G$/$@$5$$!#(B - Status: $B%X%C%@$bI,MW$G$9!#%G!<%?$O(B 3 $B7e$N(B HTTP - $B1~Ez%3!<%I$H!"$=$N8e$K%F%-%9%H%a%C%;!<%8$,B3$$$?$b$N$G$J$1$l$P$J$j$^$;$s!#(B</p> + <p>拡張子が <code>.asis</code> のすべてのファイルの内容は Apache + からクライアントへほとんど変更無く送られます。クライアントには + HTTP ヘッダが必要ですので、ファイルに書くことを忘れないでください。 + Status: ヘッダも必要です。データは 3 桁の HTTP + 応答コードと、その後にテキストメッセージが続いたものでなければなりません。</p> - <p>$B$3$l$O%/%i%$%"%s%H$K%U%!%$%k$,0\F0$7$?$3$H$rCN$i$;$k$?$a$K(B - <em>as is</em> ($B$=$N$^$^(B) $B$GAw$i$l$k%U%!%$%k$NFbMF$NNc$G$9!#(B + <p>これはクライアントにファイルが移動したことを知らせるために + <em>as is</em> (そのまま) で送られるファイルの内容の例です。 </p> @@ -81,12 +81,12 @@ </html> </example> - <note><title>$BCm0U(B</title> - <p>$BCm0U(B: $B%5!<%P$O%/%i%$%"%s%H$KJV$5$l$k%G!<%?$K>o$K(B <code>Date:</code> - $B$H(B <code>Server:</code> $B%X%C%@$rDI2C$7$^$9$N$G!"(B - $B$=$l$i$,%U%!%$%k$K=q$+$l$F$$$F$O$$$1$^$;$s!#(B - $B%5!<%P$O(B <code>Last-Modified</code> $B%X%C%@$rDI2C(B<em>$B$7$^$;$s(B</em>$B!#(B - $B$*$=$i$/$O$=$&$9$Y$-$G$7$g$&$1$l$I!#(B</p> + <note><title>注意</title> + <p>注意: サーバはクライアントに返されるデータに常に <code>Date:</code> + と <code>Server:</code> ヘッダを追加しますので、 + それらがファイルに書かれていてはいけません。 + サーバは <code>Last-Modified</code> ヘッダを追加<em>しません</em>。 + おそらくはそうすべきでしょうけれど。</p> </note> </section> diff --git a/docs/manual/mod/mod_auth_basic.xml.ja b/docs/manual/mod/mod_auth_basic.xml.ja index e285a1703a..1d6a0f75e1 100644 --- a/docs/manual/mod/mod_auth_basic.xml.ja +++ b/docs/manual/mod/mod_auth_basic.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -23,24 +23,24 @@ <modulesynopsis metafile="mod_auth_basic.xml.meta"> <name>mod_auth_basic</name> -<description>$B4pK\G'>Z(B</description> +<description>基本認証</description> <status>Base</status> <sourcefile>mod_auth_basic.c</sourcefile> <identifier>auth_basic_module</identifier> -<compatibility>Apache 2.1 $B0J9_(B</compatibility> +<compatibility>Apache 2.1 以降</compatibility> <summary> - <p>$BM?$($i$l$?%W%m%P%$%@(B ($BLuCm(B: $BG'>Z$G$N>H2q$r9T$&Ld$$9g$o$;@h(B) - $B$G%f!<%6$r8!:w$7!"(BHTTP $B4pK\G'>Z$G%"%/%;%9@)8B$G$-$k$h$&$K$J$j$^$9!#(B - HTTP $B%@%$%8%'%9%HG'>Z$K$D$$$F$O(B <module>mod_auth_digest</module> - $B$GDs6!$5$l$^$9!#(B</p> + <p>与えられたプロバイダ (訳注: 認証での照会を行う問い合わせ先) + でユーザを検索し、HTTP 基本認証でアクセス制限できるようになります。 + HTTP ダイジェスト認証については <module>mod_auth_digest</module> + で提供されます。</p> </summary> <seealso><directive module="core">AuthName</directive></seealso> <seealso><directive module="core">AuthType</directive></seealso> <directivesynopsis> <name>AuthBasicProvider</name> -<description>$B$3$N0LCV$KBP$9$kG'>Z%W%m%P%$%@$r@_Dj$7$^$9!#(B</description> +<description>この位置に対する認証プロバイダを設定します。</description> <syntax>AuthBasicProvider On|Off|<var>provider-name</var> [<var>provider-name</var>] ...</syntax> <default>AuthBasicProvider On</default> @@ -48,13 +48,13 @@ <override>AuthConfig</override> <usage> - <p><directive>AuthBasicProvider</directive> $B%G%#%l%/%F%#%V$G!"(B - $B$3$N0LCV$KBP$9$k%f!<%6G'>Z$KMQ$$$i$l$kG'>Z%W%m%P%$%@$r@_Dj$7$^$9!#(B - <code>On</code> $B$K@_Dj$9$k$H%G%U%)%k%H$NG'>Z%W%m%P%$%@(B - (<code>file</code>) $B$,;HMQ$5$l$^$9!#(B<code>file</code> - $B%W%m%P%$%@$O(B <module>mod_authn_file</module> - $B%b%8%e!<%k$G<BAu$5$l$F$$$^$9$N$G!"(B - $B$3$N%b%8%e!<%k$,%5!<%P$KF~$C$F$$$k$3$H$r3NG'$7$F$/$@$5$$!#(B</p> + <p><directive>AuthBasicProvider</directive> ディレクティブで、 + この位置に対するユーザ認証に用いられる認証プロバイダを設定します。 + <code>On</code> に設定するとデフォルトの認証プロバイダ + (<code>file</code>) が使用されます。<code>file</code> + プロバイダは <module>mod_authn_file</module> + モジュールで実装されていますので、 + このモジュールがサーバに入っていることを確認してください。</p> <example><title>Example</title> <Location /secure><br /> @@ -67,19 +67,19 @@ </Location> </example> - <p>$BG'>Z%W%m%P%$%@$K$D$$$F$O(B - <module>mod_authn_dbm</module> $B$H(B <module>mod_authn_file</module> - $B$r$4Mw2<$5$$!#(B</p> + <p>認証プロバイダについては + <module>mod_authn_dbm</module> と <module>mod_authn_file</module> + をご覧下さい。</p> - <p><code>Off</code> $B$O%W%m%P%$%@%j%9%H$r%/%j%"$7$F!"%G%U%)%k%H$N(B - $B>uBV$KLa$7$^$9!#(B</p> + <p><code>Off</code> はプロバイダリストをクリアして、デフォルトの + 状態に戻します。</p> </usage> </directivesynopsis> <directivesynopsis> <name>AuthBasicAuthoritative</name> -<description>$BG'>Z$H>5G'$r!"$h$jDc$$%l%Y%k$N%b%8%e!<%k$K0\9T$5$;$k$+$r(B -$B@_Dj$7$^$9!#(B</description> +<description>認証と承認を、より低いレベルのモジュールに移行させるかを +設定します。</description> <syntax>AuthBasicAuthoritative On|Off</syntax> <default>AuthBasicAuthoritative On</default> <contextlist><context>directory</context><context>.htaccess</context></contextlist> @@ -87,26 +87,26 @@ <usage> <p><directive>AuthBasicAuthoritative</directive> - $B%G%#%l%/%F%#%V$GL@<(E*$K(B <code>Off</code>$B$K@_Dj$9$k$H!"(B - $BM?$($i$l$?G'>Z%f!<%6(B ID $B$KBP$7$F(B<strong>$B%f!<%6(B ID $B$,$J$$(B</strong> - $B$^$?$O(B<strong>$B%k!<%k$,$J$$(B</strong>$B>l9g$K!"(B - $BG'>Z$H>5G'$NN>J}$N%W%m%;%9$,!"(B - $B$h$jDc$$%l%Y%k$N%b%8%e!<%k(B (<code>modules.c</code> $B%U%!%$%k$GDj5A(B) $B$K0\9T$9$k$h$&$K$G$-$^$9!#(B - $B%f!<%6(B ID $B$,$"$k!"$+$D$^$?$O!"%k!<%k$,;XDj$5$l$F$$$k>l9g$O!"(B - $BDL>o$N%Q%9%o!<%I$H%"%/%;%9%A%'%C%/$,E,MQ$5$l$F!"(B - $BG'>Z$K<:GT$9$k$H(B "Authentication Required" $B1~Ez$,JV$5$l$^$9!#(B</p> - - <p>$B$G$9$+$i!"Fs$D0J>e$N%b%8%e!<%k$N%G!<%?%Y!<%9$GF10l$N(B - $B%f!<%6(B ID $B$,8=$o$l$?$j!"(B - $B$^$?$O!"@5$7$$(B <directive module="core">Require</directive> - $B%G%#%l%/%F%#%V$,Fs$D0J>e$N%b%8%e!<%k$G8=$o$l$?$j$7$?>l9g$O!"(B - $B0l$DL\$N%b%8%e!<%k$,G'Dj$r9T$C$F!"(B<directive>AuthAuthoritative</directive> - $B@_Dj$K4X$o$i$:!"%"%/%;%9$O0\9T$7$^$;$s!#(B</p> - - <p>$B%G%U%)%k%H$G$O!"@)8f$O0\9T$7$^$;$s!#$=$7$F!"L$CN$N%f!<%6(B ID $B$d(B - $B%k!<%k$,$"$C$F$b(B "Authentication Required" $B1~Ez$,JV$5$l$^$9!#(B - $B$G$9$+$i!"$3$N%G%#%l%/%F%#%V$r@_Dj$7$J$$$3$H$G%7%9%F%`$N0BA4$r0];}$G$-$F!"$^$?!"(B - NCSA $B=`5r$N5sF0$r6/@)$G$-$^$9!#(B</p> + ディレクティブで明示的に <code>Off</code>に設定すると、 + 与えられた認証ユーザ ID に対して<strong>ユーザ ID がない</strong> + または<strong>ルールがない</strong>場合に、 + 認証と承認の両方のプロセスが、 + より低いレベルのモジュール (<code>modules.c</code> ファイルで定義) に移行するようにできます。 + ユーザ ID がある、かつまたは、ルールが指定されている場合は、 + 通常のパスワードとアクセスチェックが適用されて、 + 認証に失敗すると "Authentication Required" 応答が返されます。</p> + + <p>ですから、二つ以上のモジュールのデータベースで同一の + ユーザ ID が現われたり、 + または、正しい <directive module="core">Require</directive> + ディレクティブが二つ以上のモジュールで現われたりした場合は、 + 一つ目のモジュールが認定を行って、<directive>AuthAuthoritative</directive> + 設定に関わらず、アクセスは移行しません。</p> + + <p>デフォルトでは、制御は移行しません。そして、未知のユーザ ID や + ルールがあっても "Authentication Required" 応答が返されます。 + ですから、このディレクティブを設定しないことでシステムの安全を維持できて、また、 + NCSA 準拠の挙動を強制できます。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_authn_anon.xml.ja b/docs/manual/mod/mod_authn_anon.xml.ja index c457920d58..6e50f6ca9a 100644 --- a/docs/manual/mod/mod_authn_anon.xml.ja +++ b/docs/manual/mod/mod_authn_anon.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 659902 --> @@ -23,64 +23,64 @@ <modulesynopsis metafile="mod_authn_anon.xml.meta"> <name>mod_authn_anon</name> -<description>$BG'>Z$,I,MW$JNN0h$X$N(B "anonymous" $B%f!<%6$N%"%/%;%9$r5v2D$9$k(B +<description>認証が必要な領域への "anonymous" ユーザのアクセスを許可する </description> <status>Extension</status> <sourcefile>mod_authn_anon.c</sourcefile> <identifier>authn_anon_module</identifier> -<compatibility>Apache 2.1 $B0J9_(B</compatibility> +<compatibility>Apache 2.1 以降</compatibility> <summary> - <p>$B$3$N%b%8%e!<%k$O(B <module>mod_auth_basic</module> $B$N$h$&$J(B - $BG'>Z%U%m%s%H%(%s%I$H$7$F!"(Banonymous-ftp $B%5%$%H$N$h$&$J!"!VKbK!$N!W%f!<%6(B ID - 'anonymous' $B$HEE;R%a!<%k%"%I%l%9$r%Q%9%o!<%I$K$7$?%f!<%6G'>Z$r(B - $B9T$J$&5!G=$rDs6!$7$^$9!#$3$NEE;R%a!<%k%"%I%l%9$O%m%0<}=8$9$k$3$H$,(B - $B$G$-$^$9!#(B</p> - - <p>$BB>$N(B ($B%G!<%?%Y!<%9$K$h$k(B) $B%"%/%;%9@)8fJ}K!$HAH$_9g$o$;$k$3$H$G!"(B - $B!VL$EPO?!W%f!<%6$KBP$7$F%5%$%H$r8x3+$7$D$D!"8zN($h$/%f!<%6DI@W$7$?$j!"(B - $B%f!<%6$N%W%m%U%!%$%k$K1~$8$?%+%9%?%^%$%:$r$7$?$j$G$-$^$9!#(B - $B$3$N$h$&$JG'>Z$K4p$E$$$?%f!<%6DI@W$NMxE@$N0l$D$O!"(B - $B%^%8%C%/%/%C%-!<$K4p$E$/%f!<%6DI@WJ}K!$d!"(B - $BDAL/$J(B URL $B$N@\F,<-$d@\Hx<-$rMxMQ$7$?%f!<%6DI@WJ}K!$H$O0[$J$j!"(B - $B40A4$K%V%i%&%6Hs0MB8$G$"$j!"%f!<%64V$G(B URL $B$r6&M-$9$k$3$H$,$G$-$k$H$$$&(B - $BE@$G$9!#(B</p> - - <p><module>mod_auth_basic</module> $B$r;HMQ$7$F$$$k>l9g$O!"$3$N%b%8%e!<%k$O(B - <directive module="mod_auth_basic">AuthBasicProvider</directive> $B$K(B - <code>anon</code> $B$H$$$&CM$r@_Dj$9$k$3$H$G5/F0$5$l$^$9!#(B</p> + <p>このモジュールは <module>mod_auth_basic</module> のような + 認証フロントエンドとして、anonymous-ftp サイトのような、「魔法の」ユーザ ID + 'anonymous' と電子メールアドレスをパスワードにしたユーザ認証を + 行なう機能を提供します。この電子メールアドレスはログ収集することが + できます。</p> + + <p>他の (データベースによる) アクセス制御方法と組み合わせることで、 + 「未登録」ユーザに対してサイトを公開しつつ、効率よくユーザ追跡したり、 + ユーザのプロファイルに応じたカスタマイズをしたりできます。 + このような認証に基づいたユーザ追跡の利点の一つは、 + マジッククッキーに基づくユーザ追跡方法や、 + 珍妙な URL の接頭辞や接尾辞を利用したユーザ追跡方法とは異なり、 + 完全にブラウザ非依存であり、ユーザ間で URL を共有することができるという + 点です。</p> + + <p><module>mod_auth_basic</module> を使用している場合は、このモジュールは + <directive module="mod_auth_basic">AuthBasicProvider</directive> に + <code>anon</code> という値を設定することで起動されます。</p> </summary> -<section id="example"><title>$BNc(B</title> - <p>$B0J2<$NNc$O!VIaDL!W$N(B htpasswd $B%U%!%$%k$K4p$E$$$?G'>Z$HAH$_9g$o$5$l$F(B - $B$*$j!"0J2<$NMW7o$r8+$?$9%f!<%6$r!V%2%9%H!W$H$7$F5v2D$7$^$9(B:</p> +<section id="example"><title>例</title> + <p>以下の例は「普通」の htpasswd ファイルに基づいた認証と組み合わされて + おり、以下の要件を見たすユーザを「ゲスト」として許可します:</p> <ul> - <li>$B%f!<%6$O(B userID $B$rF~NO$7$J$1$l$P$J$j$^$;$s!#(B + <li>ユーザは userID を入力しなければなりません。 (<directive module="mod_authn_anon" >Anonymous_NoUserID</directive>)</li> - <li>$B%f!<%6$O%Q%9%o!<%I$rF~NO$7$J$1$l$P$J$j$^$;$s!#(B + <li>ユーザはパスワードを入力しなければなりません。 (<directive module="mod_authn_anon" >Anonymous_MustGiveEmail</directive>)</li> - <li>$BF~NO$5$l$?%Q%9%o!<%I$OM-8z$JEE;R%a!<%k%"%I%l%9$G$J$1$l$P(B - $B$J$j$^$;$s!#(B<em>$B$9$J$o$A(B</em>$B!">/$/$H$b0l$D$N(B '@' $B$H(B '.' $B$,(B - $B4^$^$l$F$$$kI,MW$,$"$j$^$9!#(B + <li>入力されたパスワードは有効な電子メールアドレスでなければ + なりません。<em>すなわち</em>、少くとも一つの '@' と '.' が + 含まれている必要があります。 (<directive module="mod_authn_anon" >Anonymous_VerifyEmail</directive>)</li> - <li>userID $B$O(B <code>anonymous guest www test - welcome</code> $B$N$I$l$+$G$J$1$l$P$J$j$^$;$s!#(B - $B%f!<%6L>$NHf3S$OBgJ8;z>.J8;z$r6hJL(B<strong>$B$7$^$;$s!#(B</strong></li> + <li>userID は <code>anonymous guest www test + welcome</code> のどれかでなければなりません。 + ユーザ名の比較は大文字小文字を区別<strong>しません。</strong></li> - <li>$B%Q%9%o!<%IMs$KF~NO$5$l$?EE;R%a!<%k%"%I%l%9$O%(%i!<%m%0%U%!%$%k$K(B - $B%m%.%s%0$5$l$^$9!#(B + <li>パスワード欄に入力された電子メールアドレスはエラーログファイルに + ロギングされます。 (<directive module="mod_authn_anon" >Anonymous_LogEmail</directive>)</li> </ul> - <example><title>$BNc(B</title> + <example><title>例</title> <Directory /foo> <indent> AuthName "Use 'anonymous' & Email address for guest entry"<br /> @@ -105,7 +105,7 @@ <directivesynopsis> <name>Anonymous</name> -<description>$B%Q%9%o!<%I$N8!::L5$7$G%"%/%;%9$r5v2D$9$k(B userID $B$r;XDj$9$k(B +<description>パスワードの検査無しでアクセスを許可する userID を指定する </description> <syntax>Anonymous <var>user</var> [<var>user</var>] ...</syntax> <contextlist><context>directory</context><context>.htaccess</context> @@ -113,33 +113,33 @@ <override>AuthConfig</override> <usage> - <p>$B%Q%9%o!<%I$N8!::$r$7$J$$$G%"%/%;%9$r5v2D$9$k!VKbK!$N!W(B userID $B$r(B - $B@_Dj$7$^$9!#(BuserID $BCf$K6uGr$r;H$($k$h$&$K$9$k$?$a!"(B - $B%(%9%1!<%WJ8;z(B \ $B$K$h$kJ}K!$H!"0zMQId(B ' $B$H(B " $B$K$h$k%/%*!<%F%#%s%0(B - $B$r;H$&$3$H$,$G$-$^$9!#(B</p> + <p>パスワードの検査をしないでアクセスを許可する「魔法の」 userID を + 設定します。userID 中に空白を使えるようにするため、 + エスケープ文字 \ による方法と、引用符 ' と " によるクオーティング + を使うことができます。</p> - <p>$B%f!<%6L>$NHf3S$O(B<strong>$BBgJ8;z>.J8;z$r6hJL$7$J$$(B</strong>$B$3$H$K(B - $BCm0U$7$F$/$@$5$$!#(B<br /> - $BKbK!$N%f!<%6L>(B '<code>anonymous</code>' $B$,5v2D$5$l$F$$$k(B userID $B$K(B - $B4^$`$h$&$K$9$k$3$H$O6/$/?d>)$5$l$F$$$^$9!#(B</p> + <p>ユーザ名の比較は<strong>大文字小文字を区別しない</strong>ことに + 注意してください。<br /> + 魔法のユーザ名 '<code>anonymous</code>' が許可されている userID に + 含むようにすることは強く推奨されています。</p> - <example><title>$BNc(B:</title> + <example><title>例:</title> Anonymous anonymous "Not Registered" "I don't know" </example> - <p>$B$3$l$O!"(BuserID "anonymous", - "AnonyMous", "Not Registered", "I Don't Know" $B$N$I$l$+$r;H$C$F$b(B - $B%Q%9%o!<%IL5$7$G%f!<%6$,%5%$%H$KF~$l$k$h$&$K$7$^$9!#(B</p> + <p>これは、userID "anonymous", + "AnonyMous", "Not Registered", "I Don't Know" のどれかを使っても + パスワード無しでユーザがサイトに入れるようにします。</p> - <p>Apache 2.1 $B$G$O(B userID $B$K(B "<code>*</code>" $B$r;XDj$9$k$3$H$,$G$-$^$9!#(B - $B$3$N>l9g!"(B<em>$B$9$Y$F$N(B</em>userID $B$r5v2D$7$^$9!#(B</p> + <p>Apache 2.1 では userID に "<code>*</code>" を指定することができます。 + この場合、<em>すべての</em>userID を許可します。</p> </usage> </directivesynopsis> <directivesynopsis> <name>Anonymous_LogEmail</name> -<description>$BF~NO$5$l$?%Q%9%o!<%I$,%(%i!<%m%0$K%m%.%s%0$5$l$k$+$I$&$+$r(B -$B@_Dj$9$k(B</description> +<description>入力されたパスワードがエラーログにロギングされるかどうかを +設定する</description> <syntax>Anonymous_LogEmail On|Off</syntax> <default>Anonymous_LogEmail On</default> <contextlist><context>directory</context><context>.htaccess</context> @@ -147,15 +147,15 @@ <override>AuthConfig</override> <usage> - <p>$B%G%U%)%k%H$N(B <code>On</code> $B$K@_Dj$5$l$?>l9g$O!"(B - $BF~NO$5$l$?(B ($B$^$C$H$&$JEE;R%a!<%k%"%I%l%9$G$"$k$3$H$,(B - $B4|BT$5$l$k(B) $B!V%Q%9%o!<%I!W$,%(%i!<%m%0$K%m%.%s%0$5$l$^$9!#(B</p> + <p>デフォルトの <code>On</code> に設定された場合は、 + 入力された (まっとうな電子メールアドレスであることが + 期待される) 「パスワード」がエラーログにロギングされます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>Anonymous_MustGiveEmail</name> -<description>$B6u%Q%9%o!<%I$r5v2D$9$k$+$I$&$+$r;XDj$9$k(B</description> +<description>空パスワードを許可するかどうかを指定する</description> <syntax>Anonymous_MustGiveEmail On|Off</syntax> <default>Anonymous_MustGiveEmail On</default> <contextlist><context>directory</context><context>.htaccess</context> @@ -163,14 +163,14 @@ <override>AuthConfig</override> <usage> - <p>$B%f!<%6$,%Q%9%o!<%I$H$7$FEE;R%a!<%k%"%I%l%9$r;XDj$9$kI,MW$,$"$k$+$I$&$+$r(B - $B@_Dj$7$^$9!#$3$l$O6u%Q%9%o!<%I$r6X;_$7$^$9!#(B</p> + <p>ユーザがパスワードとして電子メールアドレスを指定する必要があるかどうかを + 設定します。これは空パスワードを禁止します。</p> </usage> </directivesynopsis> <directivesynopsis> <name>Anonymous_NoUserID</name> -<description>$B6u(B userID $B$r5v2D$9$k$+$r;XDj$9$k(B</description> +<description>空 userID を許可するかを指定する</description> <syntax>Anonymous_NoUserID On|Off</syntax> <default>Anonymous_NoUserID Off</default> <contextlist><context>directory</context><context>.htaccess</context> @@ -178,17 +178,17 @@ <override>AuthConfig</override> <usage> - <p><code>On</code> $B$K@_Dj$9$k$H!"%f!<%6$O(B userID ($B$H$*$=$i$/$O(B - $B%Q%9%o!<%IMs$b(B) $B6u$K$9$k$3$H$,$G$-$^$9!#$3$l$OC1$K%j%?!<%s%-!<$r(B - $BC!$$$?$j(B OK $B%\%?%s$rD>@\%/%j%C%/$7$?$j$9$k(B MS-Explorer $B%f!<%6$K$O(B - $BHs>o$KJXMx$G$9!#$=$N$h$&$JA`:n$O$4$/$4$/<+A3$J$b$N$G$7$g$&!#(B</p> + <p><code>On</code> に設定すると、ユーザは userID (とおそらくは + パスワード欄も) 空にすることができます。これは単にリターンキーを + 叩いたり OK ボタンを直接クリックしたりする MS-Explorer ユーザには + 非常に便利です。そのような操作はごくごく自然なものでしょう。</p> </usage> </directivesynopsis> <directivesynopsis> <name>Anonymous_VerifyEmail</name> -<description>$B%Q%9%o!<%IMs$,@5$7$$7A<0$NEE;R%a!<%k%"%I%l%9$G$"$k$3$H$r(B -$BD4$Y$k$+$I$&$+$r@_Dj$9$k(B</description> +<description>パスワード欄が正しい形式の電子メールアドレスであることを +調べるかどうかを設定する</description> <syntax>Anonymous_VerifyEmail On|Off</syntax> <default>Anonymous_VerifyEmail Off</default> <contextlist><context>directory</context><context>.htaccess</context> @@ -196,11 +196,11 @@ <override>AuthConfig</override> <usage> - <p><code>On</code> $B$K@_Dj$5$l$F$$$k>l9g!"%f!<%6$,M-8z$JEE;R%a!<%k(B - $B%"%I%l%9$rF~NO$9$k$3$H$r?d>)$9$k$?$a!"F~NO$5$l$?!V%Q%9%o!<%I!W$O(B - $B>/$J$/$H$b0l$D$N(B '@' $B$H(B '.' $B$r4^$s$G$$$k$+$I$&$+$rD4$Y$^$9(B - ($B>e$N(B <directive - module="mod_authn_anon">Anonymous_LogEmail</directive> $B;2>H(B)$B!#(B</p> + <p><code>On</code> に設定されている場合、ユーザが有効な電子メール + アドレスを入力することを推奨するため、入力された「パスワード」は + 少なくとも一つの '@' と '.' を含んでいるかどうかを調べます + (上の <directive + module="mod_authn_anon">Anonymous_LogEmail</directive> 参照)。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_authn_dbm.xml.ja b/docs/manual/mod/mod_authn_dbm.xml.ja index af50b3cb2f..d4c8619bc7 100644 --- a/docs/manual/mod/mod_authn_dbm.xml.ja +++ b/docs/manual/mod/mod_authn_dbm.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:574882 (outdated) --> @@ -23,24 +23,24 @@ <modulesynopsis metafile="mod_authn_dbm.xml.meta"> <name>mod_authn_dbm</name> -<description>DBM $B%U%!%$%k$rMQ$$$?%f!<%6G'>Z(B</description> +<description>DBM ファイルを用いたユーザ認証</description> <status>Extension</status> <sourcefile>mod_authn_dbm.c</sourcefile> <identifier>authn_dbm_module</identifier> -<compatibility>Apache 2.1 $B0J9_(B</compatibility> +<compatibility>Apache 2.1 以降</compatibility> <summary> - <p>$BK\%b%8%e!<%k$O(B <module>mod_auth_digest</module> $B$d(B - <module>mod_auth_basic</module> $B$H$$$C$?G'>Z%U%m%s%H%(%s%I$KBP$7$F!"(B - <dfn>dbm</dfn> $B%Q%9%o!<%I%U%!%$%kFb$+$i$N%f!<%68!:w$K$h$k(B - $B%f!<%6G'>Z5!G=$rDs6!$7$^$9!#;w$?$h$&$J5!G=$O(B <module>mod_authn_file</module> - $B$G$bDs6!$5$l$F$$$^$9!#(B</p> - - <p><module>mod_auth_basic</module> $B$d(B <module>mod_auth_digest</module> - $B$r;HMQ$9$k:]$K$O!"$3$N%b%8%e!<%k$O(B - <directive module="mod_auth_basic">AuthBasicProvider</directive> $B$d(B + <p>本モジュールは <module>mod_auth_digest</module> や + <module>mod_auth_basic</module> といった認証フロントエンドに対して、 + <dfn>dbm</dfn> パスワードファイル内からのユーザ検索による + ユーザ認証機能を提供します。似たような機能は <module>mod_authn_file</module> + でも提供されています。</p> + + <p><module>mod_auth_basic</module> や <module>mod_auth_digest</module> + を使用する際には、このモジュールは + <directive module="mod_auth_basic">AuthBasicProvider</directive> や <directive module="mod_auth_digest">AuthDigestPrivider</directive> - $B$G(B <code>dbm</code> $B$H;XDj$9$k$3$H$G5/F0$5$l$^$9!#(B</p> + で <code>dbm</code> と指定することで起動されます。</p> </summary> <seealso><directive module="core">AuthName</directive></seealso> @@ -54,51 +54,51 @@ <directivesynopsis> <name>AuthDBMUserFile</name> -<description>$BG'>ZMQ$N%f!<%6$H%Q%9%o!<%I$N%j%9%H$rJ];}$7$F$$$k(B -$B%G!<%?%Y!<%9%U%!%$%kL>$r@_Dj$9$k(B</description> +<description>認証用のユーザとパスワードのリストを保持している +データベースファイル名を設定する</description> <syntax>AuthDBMUserFile <var>file-path</var></syntax> <contextlist><context>directory</context><context>.htaccess</context> </contextlist> <override>AuthConfig</override> <usage> - <p><directive>AuthDBMUserFile</directive> $B%G%#%l%/%F%#%V$O(B - $BG'>ZMQ$N%f!<%6$H%Q%9%o!<%I$N%j%9%H$rJ];}$7$F$$$k(B DBM $B%U%!%$%k$N(B - $BL>A0$r@_Dj$7$^$9!#(B<var>File-path</var> $B$O%f!<%6%U%!%$%k$X$N(B - $B@dBP%Q%9$G$9!#(B</p> - - <p>$B%f!<%6%U%!%$%k$N%-!<$O%f!<%6L>$G$9!#%f!<%6$KBP$7$FJV$5$l$kCM$O(B - $B0E9f2=$5$l$?%Q%9%o!<%I$G!"$=$N8e$K!"%3%m%s$KB3$$$FG$0U$N%G!<%?$,(B - $BB3$$$F$$$k$3$H$b$"$j$^$9!#%3%m%s$H$=$N8e$N%G!<%?$O%5!<%P$O(B - $BL5;k$7$^$9!#(B</p> - - <note type="warning"><title>$B%;%-%e%j%F%#(B</title> - <p><directive>AuthDBMUserFile </directive> $B$O!"(B - $B%&%'%V%5!<%P$N%I%-%e%a%s%H%D%j!<$N30B&$KJ]4I$9$k$h$&$K$7$F$/$@$5$$!#(B - $BJ]8n$7$h$&$H$7$F$$$k%G%#%l%/%H%j0J2<$K$O(B - <strong>$BCV$+$J$$$G2<$5$$(B</strong>$B!#(B - $B$=$&$7$J$$$H%/%i%$%"%s%H$,(B <directive>AuthUserFile</directive> $B$r(B - $B%@%&%s%m!<%I$G$-$F$7$^$$$^$9!#(B</p> + <p><directive>AuthDBMUserFile</directive> ディレクティブは + 認証用のユーザとパスワードのリストを保持している DBM ファイルの + 名前を設定します。<var>File-path</var> はユーザファイルへの + 絶対パスです。</p> + + <p>ユーザファイルのキーはユーザ名です。ユーザに対して返される値は + 暗号化されたパスワードで、その後に、コロンに続いて任意のデータが + 続いていることもあります。コロンとその後のデータはサーバは + 無視します。</p> + + <note type="warning"><title>セキュリティ</title> + <p><directive>AuthDBMUserFile </directive> は、 + ウェブサーバのドキュメントツリーの外側に保管するようにしてください。 + 保護しようとしているディレクトリ以下には + <strong>置かないで下さい</strong>。 + そうしないとクライアントが <directive>AuthUserFile</directive> を + ダウンロードできてしまいます。</p> </note> - <p>$B=EMW$J8_49@-$K4X$9$kCm0U(B: apache module $B$N(B <code>dbmopen</code> $B$N<BAu$O(B - $BJ8;zNs$,(B NULL $B$G=*$o$C$F$$$k$3$H$K0MB8$9$k$N$G$O$J$/!"(BDBM $B%G!<%?%9%H%i%/%A%c(B - $B$N%O%C%7%eCM$NJ8;zNs$ND9$5$rFI$_<h$j$^$9!#(BNetscape $B%&%'%V%5!<%P$J$I!"(B - $B%"%W%j%1!<%7%g%s$NCf$K$OJ8;zNs$,(B NULL $B$G=*$o$C$F$$$k$3$H$K0MB8$7$F$$$k(B - $B$b$N$,$"$j$^$9!#$G$9$+$i!"0[$J$k%"%W%j%1!<%7%g%s4V$G$N(B DBM $B%U%!%$%k$N(B - $B;HMQ$KLdBj$,$"$k>l9g$O!"$3$l$,860x$K$J$C$F$$$k2DG=@-$,$"$j$^$9!#(B</p> - - <p>Apache $B$K$O(B <program>dbmmanage</program> $B$H$$$&(B - perl $B%9%/%j%W%H$,4^$^$l$F$$$^$9!#$3$N%W%m%0%i%`$r;H$C$F$3$N(B - $B%b%8%e!<%k$,;HMQ$9$k(B DBM $B%U%)!<%^%C%H$N%Q%9%o!<%I%U%!%$%k$r:n@.$7$?$j(B - $B99?7$7$?$j$9$k$3$H$,$G$-$^$9!#(B</p> + <p>重要な互換性に関する注意: apache module の <code>dbmopen</code> の実装は + 文字列が NULL で終わっていることに依存するのではなく、DBM データストラクチャ + のハッシュ値の文字列の長さを読み取ります。Netscape ウェブサーバなど、 + アプリケーションの中には文字列が NULL で終わっていることに依存している + ものがあります。ですから、異なるアプリケーション間での DBM ファイルの + 使用に問題がある場合は、これが原因になっている可能性があります。</p> + + <p>Apache には <program>dbmmanage</program> という + perl スクリプトが含まれています。このプログラムを使ってこの + モジュールが使用する DBM フォーマットのパスワードファイルを作成したり + 更新したりすることができます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>AuthDBMType</name> -<description>$B%Q%9%o!<%I$rJ]B8$9$k$?$a$KI,MW$J%G!<%?%Y!<%9%U%!%$%k$N<oN`$r(B -$B@_Dj$9$k(B</description> +<description>パスワードを保存するために必要なデータベースファイルの種類を +設定する</description> <syntax>AuthDBMType default|SDBM|GDBM|NDBM|DB</syntax> <default>AuthDBMType default</default> <contextlist><context>directory</context><context>.htaccess</context> @@ -106,13 +106,13 @@ <override>AuthConfig</override> <usage> - <p>$B%Q%9%o!<%I$rJ]B8$9$k$?$a$K;HMQ$9$k%G!<%?%Y!<%9%U%!%$%k$N<oN`$r(B - $B@_Dj$7$^$9!#%G%U%)%k%H$N%G!<%?%Y!<%9$N<oN`$O%3%s%Q%$%k;~$K7h$^$j$^$9!#(B - $BB>$N<oN`$N%G!<%?%Y!<%9$,;HMQ2DG=$+$I$&$+$b(B <a href="../install.html#dbm" - >$B%3%s%Q%$%k;~$N@_Dj(B</a>$B$K0MB8$7$^$9!#(B</p> + <p>パスワードを保存するために使用するデータベースファイルの種類を + 設定します。デフォルトのデータベースの種類はコンパイル時に決まります。 + 他の種類のデータベースが使用可能かどうかも <a href="../install.html#dbm" + >コンパイル時の設定</a>に依存します。</p> - <p>$B%Q%9%o!<%I%U%!%$%k$r:n@.$9$k$N$K;HMQ$9$k%W%m%0%i%`$,F1$8<oN`$N%G!<%?%Y!<%9$r(B - $B;HMQ$9$k$h$&$K@_Dj$9$k$3$H$OHs>o$K=EMW$G$9!#(B</p> + <p>パスワードファイルを作成するのに使用するプログラムが同じ種類のデータベースを + 使用するように設定することは非常に重要です。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_authn_default.xml.ja b/docs/manual/mod/mod_authn_default.xml.ja index 322e80813f..0c38b78cfe 100644 --- a/docs/manual/mod/mod_authn_default.xml.ja +++ b/docs/manual/mod/mod_authn_default.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,22 +23,22 @@ <modulesynopsis metafile="mod_authn_default.xml.meta"> <name>mod_authn_default</name> -<description>$BG'>Z%U%)!<%k%P%C%/%b%8%e!<%k(B</description> +<description>認証フォールバックモジュール</description> <status>Base</status> <sourcefile>mod_authn_default.c</sourcefile> <identifier>authn_default_module</identifier> -<compatibility>Apache 2.1 $B0J9_(B</compatibility> +<compatibility>Apache 2.1 以降</compatibility> <summary> - <p><module>mod_auth_basic</module> $B$N$h$&$JG'>Z%b%8%e!<%k$r(B - $B@_Dj$7$J$+$C$?>l9g$O!"K\%b%8%e!<%k$,%U%)!<%k%P%C%/$H$J$j$^$9!#(B - $B%f!<%6$+$iDs<($5$l$?$I$s$J>Z=q$bC1$K5qH]$7$^$9!#(B</p> + <p><module>mod_auth_basic</module> のような認証モジュールを + 設定しなかった場合は、本モジュールがフォールバックとなります。 + ユーザから提示されたどんな証書も単に拒否します。</p> </summary> <directivesynopsis> <name>AuthDefaultAuthoritative</name> -<description>$B<!$NDc<!%l%Y%k$NG'>Z%b%8%e!<%k$K@)8f$rEO$9$+$I$&$+$r(B -$B@_Dj$7$^$9(B</description> +<description>次の低次レベルの認証モジュールに制御を渡すかどうかを +設定します</description> <syntax>AuthDefaultAuthoritative On|Off</syntax> <default>AuthDefaultAuthoritative On</default> <contextlist><context>directory</context><context>.htaccess</context> @@ -46,18 +46,18 @@ <override>AuthConfig</override> <usage> - <p><directive>AuthDefaultAuthoritative</directive> $B%G%#%l%/%F%#%V$r(B - $BL@<(E*$K(B <code>Off</code> $B$K@_Dj$9$k$H!"(B - $BG'>Z$r<!$N(B (<code>modules.c</code> $B%U%!%$%k$GDj5A$5$l$F$$$k(B) - $BDc<!%l%Y%k$N%b%8%e!<%k$KEO$7$^$9!#(B + <p><directive>AuthDefaultAuthoritative</directive> ディレクティブを + 明示的に <code>Off</code> に設定すると、 + 認証を次の (<code>modules.c</code> ファイルで定義されている) + 低次レベルのモジュールに渡します。 </p> - <note><title>$BCm0U(B</title> - <p><module>mod_authn_default</module> $B<+BN$,(B<em>$B$H$F$bDc$$(B</em> - $B%l%Y%k$H$7$FDj5A$5$l$F$$$^$9$N$G!"DL>o$O$3$l$h$j$bDc<!$N(B - $B%b%8%e!<%k$OB8:_$7$^$;$s!#$G$9$+$i(B - <directive>AuthDefaultAuthoritative</directive> $B$O%G%U%)%k%H(B - (<code>On</code>) $B$N$^$^$K$7$?$[$&$,NI$$$G$7$g$&!#(B</p> + <note><title>注意</title> + <p><module>mod_authn_default</module> 自体が<em>とても低い</em> + レベルとして定義されていますので、通常はこれよりも低次の + モジュールは存在しません。ですから + <directive>AuthDefaultAuthoritative</directive> はデフォルト + (<code>On</code>) のままにしたほうが良いでしょう。</p> </note> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_authn_file.xml.ja b/docs/manual/mod/mod_authn_file.xml.ja index 0df477bae0..aeae9f1340 100644 --- a/docs/manual/mod/mod_authn_file.xml.ja +++ b/docs/manual/mod/mod_authn_file.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,24 +23,24 @@ <modulesynopsis metafile="mod_authn_file.xml.meta"> <name>mod_authn_file</name> -<description>$B%F%-%9%H%U%!%$%k$rMQ$$$?%f!<%6G'>Z(B</description> +<description>テキストファイルを用いたユーザ認証</description> <status>Base</status> <sourcefile>mod_authn_file.c</sourcefile> <identifier>authn_file_module</identifier> -<compatibility>Apache 2.1 $B0J9_(B</compatibility> +<compatibility>Apache 2.1 以降</compatibility> <summary> - <p>$BK\%b%8%e!<%k$O(B <module>mod_auth_digest</module> $B$d(B - <module>mod_auth_basic</module> $B$H$$$C$?G'>Z%U%m%s%H%(%s%I$KBP$7$F!"(B - $B%W%l%$%s%F%-%9%H$N%Q%9%o!<%I%U%!%$%kFb$+$i%f!<%6$r8!:w$9$k$3$H$G!"(B - $B%f!<%6G'>Z5!G=$rDs6!$7$^$9!#;w$?$h$&$J5!G=$O(B <module>mod_authn_dbm</module> - $B$G$bDs6!$5$l$F$$$^$9!#(B</p> - - <p><module>mod_auth_basic</module> $B$d(B <module>mod_auth_digest</module> - $B$r;HMQ$9$k:]$K$O!"(B - <directive module="mod_auth_basic">AuthBasicProvider</directive> $B$d(B + <p>本モジュールは <module>mod_auth_digest</module> や + <module>mod_auth_basic</module> といった認証フロントエンドに対して、 + プレインテキストのパスワードファイル内からユーザを検索することで、 + ユーザ認証機能を提供します。似たような機能は <module>mod_authn_dbm</module> + でも提供されています。</p> + + <p><module>mod_auth_basic</module> や <module>mod_auth_digest</module> + を使用する際には、 + <directive module="mod_auth_basic">AuthBasicProvider</directive> や <directive module="mod_auth_digest">AuthDigestPrivider</directive> - $B$G(B <code>file</code> $B$H;XDj$9$k$3$H$G$3$N%b%8%e!<%k$O5/F0$5$l$^$9!#(B</p> + で <code>file</code> と指定することでこのモジュールは起動されます。</p> </summary> <seealso> <directive module="mod_auth_basic">AuthBasicProvider</directive> @@ -53,71 +53,71 @@ <directivesynopsis> <name>AuthUserFile</name> -<description>$BG'>Z$K;HMQ$9$k%f!<%6$H%Q%9%o!<%I$N0lMw$,3JG<$5$l$F$$$k!"(B -$B%F%-%9%H%U%!%$%k$NL>A0$r@_Dj$9$k(B</description> +<description>認証に使用するユーザとパスワードの一覧が格納されている、 +テキストファイルの名前を設定する</description> <syntax>AuthUserFile <var>file-path</var></syntax> <contextlist><context>directory</context><context>.htaccess</context> </contextlist> <override>AuthConfig</override> <usage> - <p><directive>AuthUserFile</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%f!<%6G'>Z$N$?$a$N%f!<%6$H%Q%9%o!<%I$N0lMw$r3JG<$7$?(B - $B%F%-%9%H%U%!%$%k$NL>A0$r@_Dj$7$^$9!#(B<var>file-path</var> - $B$O%f!<%6%U%!%$%k$X$N%Q%9$G$9!#(B - $B$b$7@dBP%Q%9$G$J$1$l$P!"(B + <p><directive>AuthUserFile</directive> ディレクティブは、 + ユーザ認証のためのユーザとパスワードの一覧を格納した + テキストファイルの名前を設定します。<var>file-path</var> + はユーザファイルへのパスです。 + もし絶対パスでなければ、 <directive module="core">ServerRoot</directive> - $B$+$i$NAjBP%Q%9$H$7$F07$o$l$^$9!#(B</p> + からの相対パスとして扱われます。</p> - <p>$B%f!<%6%U%!%$%k$N3F9T$K$O!"%f!<%6L>!"%3%m%s!"(B - $B0E9f2=$7$?%Q%9%o!<%I$r5-=R$7$^$9!#(B - $BF10l%f!<%6(B ID $B$,J#?t2sEPO?$5$l$?;~$O!"(B + <p>ユーザファイルの各行には、ユーザ名、コロン、 + 暗号化したパスワードを記述します。 + 同一ユーザ ID が複数回登録された時は、 <module>mod_authn_file</module> - $B$O:G=i$K8+$D$+$C$?%Q%9%o!<%I$r;HMQ$7$FG'>Z$7$^$9!#(B</p> + は最初に見つかったパスワードを使用して認証します。</p> - <p>$B%P%$%J%jG[I[$N0lIt$H$7$F%$%s%9%H!<%k$5$l$k$+!"(B - $B$"$k$$$O(B <code>src/support</code> $B$K$"$k(B + <p>バイナリ配布の一部としてインストールされるか、 + あるいは <code>src/support</code> にある <program>htpasswd</program> - $B%f!<%F%#%j%F%#$G!"$3$N(B <em>HTTP $B4pK\G'>Z(B</em> - $BMQ%Q%9%o!<%I%U%!%$%k$r%a%$%s%F%J%s%9$7$^$9!#(B - $B>\:Y$O(B <a href="../programs/htpasswd.html">man - $B%Z!<%8(B</a>$B$r$4MwD:$/$H$7$F!"4JC1$K$O(B:</p> + ユーティリティで、この <em>HTTP 基本認証</em> + 用パスワードファイルをメインテナンスします。 + 詳細は <a href="../programs/htpasswd.html">man + ページ</a>をご覧頂くとして、簡単には:</p> - <p>$B=i4|(B ID <code>username</code> $B$G!"(B<code>Filename</code> - $B$H$$$&%Q%9%o!<%I%U%!%$%k$r@8@.$7$^$9!#(B - $B<!$N%3%^%s%I$rH/9T$9$k$H%Q%9%o!<%I$,MW5a$5$l$^$9(B:</p> + <p>初期 ID <code>username</code> で、<code>Filename</code> + というパスワードファイルを生成します。 + 次のコマンドを発行するとパスワードが要求されます:</p> <example> htpasswd -c Filename username </example> - <p>$B%Q%9%o!<%I%U%!%$%k(B <code>Filename</code> $B$K!"(B<code>username2</code> - $B$rDI2C$7$?$j=$@5$7$?$j$7$^$9(B:</p> + <p>パスワードファイル <code>Filename</code> に、<code>username2</code> + を追加したり修正したりします:</p> <example> htpasswd Filename username2 </example> - <p>($BLuCm(B: $BHs>o$KB?$/$N%f!<%6$rEPO?$9$k$HBg$-$J%U%!%$%k$K$J$j$^$9$,(B) - $BBg$-$J%F%-%9%H%U%!%$%k$r8!:w$9$k$N$O(B<em>$BHs>o$K8zN($,0-$$(B</em> - $B$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#$=$N$h$&$JI,MW$N$"$k;~$O!"(B + <p>(訳注: 非常に多くのユーザを登録すると大きなファイルになりますが) + 大きなテキストファイルを検索するのは<em>非常に効率が悪い</em> + ということに注意してください。そのような必要のある時は、 <directive module="mod_authn_dbm">AuthDBMUserFile</directive> - $B$rBe$o$j$K;H$C$F$/$@$5$$!#(B</p> + を代わりに使ってください。</p> - <p><em>HTTP $B%@%$%8%'%9%HG'>Z(B</em>$B$r;HMQ$9$k>l9g$O!"(B + <p><em>HTTP ダイジェスト認証</em>を使用する場合は、 <a href="../programs/htpasswd.html">htpasswd</a> - $B%W%m%0%i%`$G$OIT==J,$G$9!#$=$NBe$o$j$K(B + プログラムでは不十分です。その代わりに <program>htdigest</program> - $B$r;HMQ$7$F$/$@$5$$!#%@%$%8%'%9%HG'>ZMQ$N%G!<%?$H(B - $B4pK\G'>ZMQ$N%G!<%?$rF10l%U%!%$%k$K:.$<$FJ]B8$G$-$J$$!"(B - $B$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + を使用してください。ダイジェスト認証用のデータと + 基本認証用のデータを同一ファイルに混ぜて保存できない、 + ということに注意してください。</p> - <note type="warning"><title>$B%;%-%e%j%F%#(B</title> + <note type="warning"><title>セキュリティ</title> <p><directive>AuthUserFile </directive> - $B$O!"%&%'%V%5!<%P$N%I%-%e%a%s%H%D%j!<$N30B&$KJ]4I$9$k$h$&$K$7$F$/$@$5$$!#(B - $BJ]8n$7$h$&$H$7$F$$$k%G%#%l%/%H%j0J2<$K$O!"(B<strong>$BCV$+$J$$$G2<$5$$(B</strong>$B!#(B - $B$=$&$7$J$$$H(B <directive>AuthUserFile</directive> $B$O(B - $B%@%&%s%m!<%I$G$-$F$7$^$$$^$9!#(B</p> + は、ウェブサーバのドキュメントツリーの外側に保管するようにしてください。 + 保護しようとしているディレクトリ以下には、<strong>置かないで下さい</strong>。 + そうしないと <directive>AuthUserFile</directive> は + ダウンロードできてしまいます。</p> </note> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_authz_default.xml.ja b/docs/manual/mod/mod_authz_default.xml.ja index 3e6b71b3b3..2916a261be 100644 --- a/docs/manual/mod/mod_authz_default.xml.ja +++ b/docs/manual/mod/mod_authz_default.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,22 +23,22 @@ <modulesynopsis metafile="mod_authz_default.xml.meta"> <name>mod_authz_default</name> -<description>$B>5G'%U%)!<%k%P%C%/%b%8%e!<%k(B</description> +<description>承認フォールバックモジュール</description> <status>Base</status> <sourcefile>mod_authz_default.c</sourcefile> <identifier>authz_default_module</identifier> -<compatibility>Apache 2.1 $B0J9_(B</compatibility> +<compatibility>Apache 2.1 以降</compatibility> <summary> - <p>$B$3$N%b%8%e!<%k$O(B <module>mod_authz_user</module> $B$d(B - <module>mod_authz_groupfile</module> $B$H$$$C$?>5G'%b%8%e!<%k$r(B - $B@_Dj$7$J$+$C$?>l9g$N%U%)!<%k%P%C%/%b%8%e!<%k$H$7$F@_7W$5$l$F$$$^$9!#(B - $B$I$N$h$&$J>5G'%j%/%(%9%H$bC1$K5qH]$7$^$9!#(B</p> + <p>このモジュールは <module>mod_authz_user</module> や + <module>mod_authz_groupfile</module> といった承認モジュールを + 設定しなかった場合のフォールバックモジュールとして設計されています。 + どのような承認リクエストも単に拒否します。</p> </summary> <directivesynopsis> <name>AuthzDefaultAuthoritative</name> -<description>$B>5G'$,Dc0L$N%b%8%e!<%k$KEO$5$l$k$+$I$&$+$r@_Dj$9$k(B</description> +<description>承認が低位のモジュールに渡されるかどうかを設定する</description> <syntax>AuthzDefaultAuthoritative On|Off</syntax> <default>AuthzDefaultAuthoritative On</default> <contextlist><context>directory</context><context>.htaccess</context> @@ -46,17 +46,17 @@ <override>AuthConfig</override> <usage> - <p><directive>AuthzDefaultAuthoritative</directive> $B%G%#%l%/%F%#%V$r(B - $BL@<(E*$K(B <code>Off</code> $B$K@_Dj$9$k$H(B - $BG'>Z$r<!$N(B (<code>modules.c</code> $B%U%!%$%k$GDj5A$5$l$F$$$k(B) - $BDc0L$N%b%8%e!<%k$KEO$9$3$H$r5v2D$7$^$9!#(B</p> + <p><directive>AuthzDefaultAuthoritative</directive> ディレクティブを + 明示的に <code>Off</code> に設定すると + 認証を次の (<code>modules.c</code> ファイルで定義されている) + 低位のモジュールに渡すことを許可します。</p> - <note><title>$BCm0U(B</title> - <p><module>mod_authz_default</module> $B<+BN$,(B<em>$B$H$F$bDc$$(B</em> - $B%l%Y%k$H$7$FDj5A$5$l$F$$$^$9$N$G!"DL>o$O$3$l$h$j$bDc<!$N(B - $B%b%8%e!<%k$OB8:_$7$^$;$s!#$G$9$+$i(B - <directive>AuthDefaultAuthoritative</directive> $B$O%G%U%)%k%H(B - (<code>On</code>) $B$N$^$^$K$7$?$[$&$,NI$$$G$7$g$&!#(B</p> + <note><title>注意</title> + <p><module>mod_authz_default</module> 自体が<em>とても低い</em> + レベルとして定義されていますので、通常はこれよりも低次の + モジュールは存在しません。ですから + <directive>AuthDefaultAuthoritative</directive> はデフォルト + (<code>On</code>) のままにしたほうが良いでしょう。</p> </note> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_authz_groupfile.xml.ja b/docs/manual/mod/mod_authz_groupfile.xml.ja index fa8afdfe7a..f8c6448bce 100644 --- a/docs/manual/mod/mod_authz_groupfile.xml.ja +++ b/docs/manual/mod/mod_authz_groupfile.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:574882 (outdated) --> @@ -23,17 +23,17 @@ <modulesynopsis metafile="mod_authz_groupfile.xml.meta"> <name>mod_authz_groupfile</name> -<description>$B%W%l!<%s%F%-%9%H%U%!%$%k$rMQ$$$?%0%k!<%W>5G'(B</description> +<description>プレーンテキストファイルを用いたグループ承認</description> <status>Base</status> <sourcefile>mod_authz_groupfile.c</sourcefile> <identifier>authz_groupfile_module</identifier> -<compatibility>Apache 2.1 $B0J9_(B</compatibility> +<compatibility>Apache 2.1 以降</compatibility> <summary> - <p>$B$3$N%b%8%e!<%k$OG'>Z$5$l$?%f!<%6$,%0%k!<%W$N%a%s%P!<$+(B - $BH]$+$K$h$C$F%&%'%V%5%$%H$N0lIt$X$N%"%/%;%9$r5v2D$9$k$+5qH]$9$k$+$N(B - $B>5G'5!G=$rDs6!$7$^$9!#F1MM$N5!G=$O(B <module>mod_authz_dbm</module> - $B$K$h$C$F$bDs6!$5$l$F$$$^$9!#(B</p> + <p>このモジュールは認証されたユーザがグループのメンバーか + 否かによってウェブサイトの一部へのアクセスを許可するか拒否するかの + 承認機能を提供します。同様の機能は <module>mod_authz_dbm</module> + によっても提供されています。</p> </summary> <seealso><directive module="core">Require</directive></seealso> @@ -41,48 +41,48 @@ <directivesynopsis> <name>AuthGroupFile</name> -<description>$B>ZG'$K;HMQ$9$k%f!<%6%0%k!<%W$N0lMw$,3JG<$5$l$F$$$k!"(B -$B%F%-%9%H%U%!%$%k$NL>A0$r@_Dj$9$k(B</description> +<description>証認に使用するユーザグループの一覧が格納されている、 +テキストファイルの名前を設定する</description> <syntax>AuthGroupFile <var>file-path</var></syntax> <contextlist><context>directory</context><context>.htaccess</context> </contextlist> <override>AuthConfig</override> <usage> - <p><directive>AuthGroupFile</directive> $B%G%#%l%/%F%#%V$O!"(B - $B>ZG'$K;HMQ$9$k%f!<%6%0%k!<%W$N0lMw$,3JG<$5$l$F$$$k!"(B - $B%F%-%9%H%U%!%$%k$NL>A0$r@_Dj$7$^$9!#(B - <var>file-path</var> $B$O%0%k!<%W%U%!%$%k$X$N%Q%9$G$9!#(B - $B@dBP%Q%9$G$J$1$l$P!"(B + <p><directive>AuthGroupFile</directive> ディレクティブは、 + 証認に使用するユーザグループの一覧が格納されている、 + テキストファイルの名前を設定します。 + <var>file-path</var> はグループファイルへのパスです。 + 絶対パスでなければ、 <directive module="core">ServerRoot</directive> - $B$+$i$NAjBP%Q%9$H$7$F07$o$l$^$9!#(B</p> + からの相対パスとして扱われます。</p> - <p>$B%0%k!<%W%U%!%$%k3F9T$O!"%0%k!<%WL>!"%3%m%s!"$=$7$F(B - $B%9%Z!<%96h@Z$j$G$=$N%a%s%P!<$N%f!<%6L>$r5-=R$7$^$9!#(B</p> + <p>グループファイル各行は、グループ名、コロン、そして + スペース区切りでそのメンバーのユーザ名を記述します。</p> - <example><title>$BNc(B:</title> + <example><title>例:</title> mygroup: bob joe anne </example> - <p>$BBg$-$J%U%!%$%k$rC5:w$9$k$N$O!"(B<em>$BHs>o$K(B</em>$B8zN($,0-$$$H$$$&E@$K(B - $BCm0U$7$F$/$@$5$$!#$=$N$h$&$J>l9g$O!"(B + <p>大きなファイルを探索するのは、<em>非常に</em>効率が悪いという点に + 注意してください。そのような場合は、 <directive module="mod_authz_dbm">AuthDBMGroupFile</directive> - $B$NJ}$,$:$C$HNI$$@-G=$rH/4x$7$^$9!#(B</p> - - <note type="warning"><title>$B%;%-%e%j%F%#(B</title> - <p><directive>AuthGroupFile</directive> $B$O!"(B - $B%&%'%V%5!<%P$N%I%-%e%a%s%H%D%j!<$N30B&$K(B - $BJ]4I$9$k$h$&$K$7$F$/$@$5$$!#(B - $BJ]8n$7$h$&$H$7$F$$$k%G%#%l%/%H%j0J2<$K$O!"(B<em>$BCV$+$J$$$G2<$5$$(B</em>$B!#(B - $B$=$&$7$J$$$H%/%i%$%"%s%H$,(B <directive>AuthGroupFile</directive> $B$r(B - $B%@%&%s%m!<%I$G$-$F$7$^$&2DG=@-$,$"$j$^$9!#(B</p> + の方がずっと良い性能を発揮します。</p> + + <note type="warning"><title>セキュリティ</title> + <p><directive>AuthGroupFile</directive> は、 + ウェブサーバのドキュメントツリーの外側に + 保管するようにしてください。 + 保護しようとしているディレクトリ以下には、<em>置かないで下さい</em>。 + そうしないとクライアントが <directive>AuthGroupFile</directive> を + ダウンロードできてしまう可能性があります。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>AuthzGroupFileAuthoritative</name> -<description>$B>5G'$,2<0L$N%b%8%e!<%k$KEO$5$l$k$+$I$&$+$r@_Dj$9$k(B</description> +<description>承認が下位のモジュールに渡されるかどうかを設定する</description> <syntax>AuthzGroupFileAuthoritative On|Off</syntax> <default>AuthzGroupFileAuthoritative On</default> <contextlist><context>directory</context><context>.htaccess</context> @@ -90,24 +90,24 @@ <override>AuthConfig</override> <usage> - <p><directive>AuthzGroupFileAuthoritative</directive> $B%G%#%l%/%F%#%V$r(B - $BL@<(E*$K(B <code>Off</code> $B$K@_Dj$9$k$H(B userID $B$KBP1~$9$k(B - <strong>$B%0%k!<%W$,$J$$>l9g$K(B</strong>$B!"(B - (<code>module.c</code> $B$GDj5A$5$l$F$$$k(B) $B2<0L$N%b%8%e!<%k$K%0%k!<%W>5G'$r(B - $BEO$9$3$H$r5v2D$7$^$9!#(B</p> - - - <p>$B%G%U%)%k%H$G$O@)8f$OEO$5$l$:!"L$CN$N%0%k!<%W$N>l9g$O(B Authentication - Required $B1~Ez$,JV$5$l$^$9!#$G$9$+$i!"$3$l$r@_Dj$7$J$$$H(B - $B%7%9%F%`$r0BA4$KJ]$D$3$H$,$G$-!"(BNCSA $B8_49$N?6$kIq$$$r$5$;$k$3$H$K$J$j$^$9!#(B</p> - - <note type="warning"><title>$B%;%-%e%j%F%#(B</title> - <p>$B%f!<%6$N(B <code>.htaccess</code> $B%U%!%$%k$GB>$N>5G'<jCJ$X$N(B - $B0Q>y$,$G$-$k$h$&$K$9$k$3$H$N0UL#$9$k$H$3$m$O==J,$K9MN8$7$F$*$$$F$/$@$5$$!#(B - $B$=$7$F$=$l$,!"K\Ev$KK>$`5sF0$G$"$k$3$H$r3N$+$a$F$/$@$5$$!#(B - $BDL>o$O0l$D$N(B <code>.htpasswd</code> $B%U%!%$%k$r0BA4$K$9$kJ}$,(B - $B$h$jB?$/$N%"%/%;%9%$%s%?%U%'!<%9$r;}$D$+$b$7$l$J$$%G!<%?%Y!<%9$r(B - $B0BA4$K$9$k$h$j$b4JC1$G$9!#(B</p> + <p><directive>AuthzGroupFileAuthoritative</directive> ディレクティブを + 明示的に <code>Off</code> に設定すると userID に対応する + <strong>グループがない場合に</strong>、 + (<code>module.c</code> で定義されている) 下位のモジュールにグループ承認を + 渡すことを許可します。</p> + + + <p>デフォルトでは制御は渡されず、未知のグループの場合は Authentication + Required 応答が返されます。ですから、これを設定しないと + システムを安全に保つことができ、NCSA 互換の振る舞いをさせることになります。</p> + + <note type="warning"><title>セキュリティ</title> + <p>ユーザの <code>.htaccess</code> ファイルで他の承認手段への + 委譲ができるようにすることの意味するところは十分に考慮しておいてください。 + そしてそれが、本当に望む挙動であることを確かめてください。 + 通常は一つの <code>.htpasswd</code> ファイルを安全にする方が + より多くのアクセスインタフェースを持つかもしれないデータベースを + 安全にするよりも簡単です。</p> </note> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_authz_owner.xml.ja b/docs/manual/mod/mod_authz_owner.xml.ja index 6f1c5a206e..edbb751584 100644 --- a/docs/manual/mod/mod_authz_owner.xml.ja +++ b/docs/manual/mod/mod_authz_owner.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:574882 (outdated) --> @@ -23,70 +23,70 @@ <modulesynopsis metafile="mod_authz_owner.xml.meta"> <name>mod_authz_owner</name> -<description>$B%U%!%$%k$N=jM-<T$K4p$E$$$?>5G'(B</description> +<description>ファイルの所有者に基づいた承認</description> <status>Extension</status> <sourcefile>mod_authz_owner.c</sourcefile> <identifier>authz_owner_module</identifier> -<compatibility>Apache 2.1 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>Apache 2.1 以降で使用可能</compatibility> <summary> - <p>$B$3$N%b%8%e!<%k$O%j%/%(%9%H$5$l$?%U%!%$%k$N%U%!%$%k%7%9%F%`$N(B - $B=jM-<T$d%0%k!<%W$r(B HTTP $BG'>Z$K;H$o$l$?%f!<%6(B ID ($B%&%'%V%f!<%6(B ID) $B$H(B - $BHf3S$9$k$3$H$G%"%/%;%9$r>5G'$7$^$9!#Ds6!$5$l$?%f!<%6L>$H%Q%9%o!<%I$O(B - <module>mod_auth_basic</module> $B$d(B - <module>mod_auth_digest</module> $B$N$h$&$JG'>Z%b%8%e!<%k$G4{$K(B - $BE,@Z$K8!>Z$5$l$F$$$kI,MW$,$"$j$^$9!#(B<module>mod_authz_owner</module> - $B$O0J2<$N$h$&$K!"(B<directive module="core" - >Require</directive> $B%G%#%l%/%F%#%V$N(B <code>file-owner</code> $B$H(B - <code>file-group</code> $B$H$$$&Fs$D$N0z?t$rG'<1$7$^$9(B:</p> + <p>このモジュールはリクエストされたファイルのファイルシステムの + 所有者やグループを HTTP 認証に使われたユーザ ID (ウェブユーザ ID) と + 比較することでアクセスを承認します。提供されたユーザ名とパスワードは + <module>mod_auth_basic</module> や + <module>mod_auth_digest</module> のような認証モジュールで既に + 適切に検証されている必要があります。<module>mod_authz_owner</module> + は以下のように、<directive module="core" + >Require</directive> ディレクティブの <code>file-owner</code> と + <code>file-group</code> という二つの引数を認識します:</p> <dl> <dt><code>file-owner</code></dt> - <dd>$BDs6!$5$l$?%&%'%V%f!<%6L>$O%j%/%(%9%H$5$l$?%U%!%$%k$N=jM-<T$N(B - $B%7%9%F%`$K$*$1$kL>A0$H0lCW$9$kI,MW$,$"$j$^$9!#$D$^$j!"%*%Z%l!<%F%#%s%0(B - $B%7%9%F%`$,%U%!%$%k$O(B <code>jones</code> $B$K$h$j=jM-$5$l$F$$$k(B - $B$H8@$C$?$H$-$O!"%&%'%V$+$i$N%"%/%;%9$K;H$o$l$k%f!<%6L>$b(B - <code>jones</code> $B$G$J$1$l$P$J$j$^$;$s!#(B</dd> + <dd>提供されたウェブユーザ名はリクエストされたファイルの所有者の + システムにおける名前と一致する必要があります。つまり、オペレーティング + システムがファイルは <code>jones</code> により所有されている + と言ったときは、ウェブからのアクセスに使われるユーザ名も + <code>jones</code> でなければなりません。</dd> <dt><code>file-group</code></dt> - <dd>$B%U%!%$%k$r=jM-$9$k%7%9%F%`$N%0%k!<%W$NL>A0$,!"Nc$($P(B - <module>mod_authz_groupfile</module> $B$d(B <module>mod_authz_dbm</module> - $B$K$h$jDs6!$5$l$k%0%k!<%W%G!<%?%Y!<%9$KB8:_$7$F$$$F!"(B - $B%&%'%V%f!<%6L>$,$=$N%0%k!<%W$KB0$7$F$$$J$1$l$P$J$j$^$;$s!#(B - $BNc$($P!"%*%Z%l!<%F%#%s%0%7%9%F%`$,%U%!%$%k$O(B ($B%7%9%F%`$N(B) $B%0%k!<%W(B - <code>accounts</code> $B$K$h$j=jM-$5$l$F$$$k$H8@$C$?$H$-$O!"(B - <code>accounts</code> $B$,%0%k!<%W%G!<%?%Y!<%9$KB8:_$7$F!"(B - $B%j%/%(%9%H$K;HMQ$5$l$?%&%'%V%f!<%6L>$,$=$N%0%k!<%W$KB0$7$F$$$k(B - $BI,MW$,$"$j$^$9!#(B</dd> + <dd>ファイルを所有するシステムのグループの名前が、例えば + <module>mod_authz_groupfile</module> や <module>mod_authz_dbm</module> + により提供されるグループデータベースに存在していて、 + ウェブユーザ名がそのグループに属していなければなりません。 + 例えば、オペレーティングシステムがファイルは (システムの) グループ + <code>accounts</code> により所有されていると言ったときは、 + <code>accounts</code> がグループデータベースに存在して、 + リクエストに使用されたウェブユーザ名がそのグループに属している + 必要があります。</dd> </dl> - <note><title>$BCm(B</title> - <p>$B%U%!%$%k%7%9%F%`$K<B:]$K$OB8:_$7$J$$%j%=!<%9(B - (<em>$B$D$^$j(B</em> $B%P!<%A%c%k$J%j%=!<%9(B) $B$N>5G'$K(B - <module>mod_authz_owner</module> $B$,;HMQ$5$l$?$H$-$O!"(B - $B%"%/%;%9$O5qH]$5$l$^$9!#(B</p> + <note><title>注</title> + <p>ファイルシステムに実際には存在しないリソース + (<em>つまり</em> バーチャルなリソース) の承認に + <module>mod_authz_owner</module> が使用されたときは、 + アクセスは拒否されます。</p> - <p>$BFC$K!"(B<a - href="../content-negotiation.html#multiviews">$B%3%s%F%s%H(B - $B%M%4%7%(!<%7%g%s$5$l$?(B"MultiViews"</a> $B$N%j%=!<%9$O(B - $B7h$7$F>5G'$7$^$;$s!#(B</p> + <p>特に、<a + href="../content-negotiation.html#multiviews">コンテント + ネゴシエーションされた"MultiViews"</a> のリソースは + 決して承認しません。</p> </note> </summary> <seealso><directive module="core">Require</directive></seealso> <seealso><directive module="core">Satisfy</directive></seealso> -<section id="examples"><title>$B@_DjNc(B</title> +<section id="examples"><title>設定例</title> <section id="examples.file-owner"><title>Require file-owner</title> - <p>$BJ#?t%f!<%6$N%7%9%F%`$G(B Apache $B%&%'%V%5!<%P$,<B9T$5$l$F$$$F!"(B - <code>~/public_html/private</code> $B$K3F%f!<%6$,%U%!%$%k$rCV$$$F$$$k$H$7$^$9!#(B + <p>複数ユーザのシステムで Apache ウェブサーバが実行されていて、 + <code>~/public_html/private</code> に各ユーザがファイルを置いているとします。 <directive module="mod_authn_dbm">AuthDBMUserFile</directive> - $B%G!<%?%Y!<%9$,0l$D$@$1$"$j!"$9$Y$F$N%&%'%V%f!<%6L>$,Ns5s$5$l$F$*$j!"(B - $B$3$N%f!<%6L>$,%5!<%P$G<B:]$K%U%!%$%k$r=jM-$7$F$$$k%f!<%6L>$H0lCW$7$F$$$k>l9g!"(B - $B<!$N@a$N$h$&$J@_Dj$G!"%f!<%6$,<+J,<+?H$N%U%!%$%k$K%"%/%;%9$G$-$k$h$&$K$J$j$^$9!#(B - <code>/home/smith/public_html/private</code> $B$NCf$N%U%!%$%k$O!"=jM-<T$,(B - <code>smith</code> $B$NBe$o$j$K(B <code>jones</code> $B$K$J$C$F$$$J$$8B$j!"(B - <code>jones</code> $B$K$O%"%/%;%9$O5v2D$5$l$^$;$s!#(B</p> + データベースが一つだけあり、すべてのウェブユーザ名が列挙されており、 + このユーザ名がサーバで実際にファイルを所有しているユーザ名と一致している場合、 + 次の節のような設定で、ユーザが自分自身のファイルにアクセスできるようになります。 + <code>/home/smith/public_html/private</code> の中のファイルは、所有者が + <code>smith</code> の代わりに <code>jones</code> になっていない限り、 + <code>jones</code> にはアクセスは許可されません。</p> <example> <Directory /home/*/public_html/private><br /> @@ -103,16 +103,16 @@ </section> <section id="examples.file-group"><title>Require file-group</title> - <p>$B>e5-$N$h$&$J%7%9%F%`$G!"?t?M$N%f!<%6$,%W%m%8%'%/%H$N%U%!%$%k$r(B - <code>~/public_html/project-foo</code> $B$G6&M-$7$F$$$k$H$7$^$9!#(B - $B%U%!%$%k$O%7%9%F%`$N%0%k!<%W(B <code>foo</code> $B$K=jM-$5$l$F$$$F!"(B + <p>上記のようなシステムで、数人のユーザがプロジェクトのファイルを + <code>~/public_html/project-foo</code> で共有しているとします。 + ファイルはシステムのグループ <code>foo</code> に所有されていて、 <directive module="mod_authz_dbm">AuthDBMGroupFile</directive> - $B%G!<%?%Y!<%9$,0l$D$@$1$"$j!"$=$3$K$9$Y$F$N%&%'%V%f!<%6L>$H(B - $B%0%k!<%W$N%a%s%P$,Ns5s$5$l$F$$$k!"(B<em>$B$D$^$j(B</em>$B!"$=$l$i$N(B - $B%f!<%6$O>/$J$/$H$b(B <code>foo</code> $B$H$$$&%0%k!<%W$KB0$7$F$$$k!"$H$7$^$9!#(B - <code>jones</code> $B$H(B<code>smith</code> $B$NFs?M6&$,%0%k!<%W(B - <code>foo</code> $B$N%a%s%P$G$"$k>l9g!"$I$A$i$N?M$bN>J}$N(B - <code>project-foo</code> $B$K%"%/%;%9$,5v2D$5$l$^$9!#(B</p> + データベースが一つだけあり、そこにすべてのウェブユーザ名と + グループのメンバが列挙されている、<em>つまり</em>、それらの + ユーザは少なくとも <code>foo</code> というグループに属している、とします。 + <code>jones</code> と<code>smith</code> の二人共がグループ + <code>foo</code> のメンバである場合、どちらの人も両方の + <code>project-foo</code> にアクセスが許可されます。</p> <example> <Directory /home/*/public_html/project-foo><br /> @@ -135,7 +135,7 @@ <directivesynopsis> <name>AuthzOwnerAuthoritative</name> -<description>$B>5G'$,2<0L>5G'%b%8%e!<%k$KEO$5$l$k$+$I$&$+$r@_Dj$9$k(B</description> +<description>承認が下位承認モジュールに渡されるかどうかを設定する</description> <syntax>AuthzOwnerAuthoritative On|Off</syntax> <default>AuthzOwnerAuthoritative On</default> <contextlist><context>directory</context><context>.htaccess</context> @@ -143,26 +143,26 @@ <override>AuthConfig</override> <usage> - <p><directive>AuthzOwnerAuthoritative</directive> $B%G%#%l%/%F%#%V$r(B - $BL@<(E*$K(B <code>Off</code> $B$K@_Dj$9$k$H!"0J2<$N>l9g$KG'>Z$,(B - (<code>modules.c</code> $B$GDj5A$5$l$F$$$k(B) $B2<0L$N%b%8%e!<%k$K(B - $BEO$5$l$k$h$&$K$7$^$9(B:</p> + <p><directive>AuthzOwnerAuthoritative</directive> ディレクティブを + 明示的に <code>Off</code> に設定すると、以下の場合に認証が + (<code>modules.c</code> で定義されている) 下位のモジュールに + 渡されるようにします:</p> <ul> - <li><code>file-owner</code> $B$N>l9g$O!"Ds6!$5$l$?%&%'%V%f!<%6L>$K(B - $B%U%!%$%k%7%9%F%`$N=jM-<T$,0lCW$7$J$$$+!"=jM-<T$,$o$+$i$J$$>l9g!#(B</li> + <li><code>file-owner</code> の場合は、提供されたウェブユーザ名に + ファイルシステムの所有者が一致しないか、所有者がわからない場合。</li> - <li><code>file-group</code> $B$N>l9g$O!"Ds6!$5$l$?%&%'%V%f!<%6L>$,(B - $B%U%!%$%k%7%9%F%`%0%k!<%W$KB8:_$7$J$$$+!"$o$+$i$J$$>l9g!#(B</li> + <li><code>file-group</code> の場合は、提供されたウェブユーザ名が + ファイルシステムグループに存在しないか、わからない場合。</li> </ul> - <p>$BCM$r(B <code>Off</code> $B$K@_Dj$9$k$H!"(B<code>file-owner</code> $B$H(B - <code>file-group</code> $B$rAH$_9g$o$;$k$3$H$b$G$-$k$h$&$K$J$j!"(B - $B$=$N>l9g$O$I$A$i$+(B ($BN>J}$G$b(B) $B$K%^%C%A$7$?>l9g$K%"%/%;%9$r5v2D$5$l$^$9!#(B</p> + <p>値を <code>Off</code> に設定すると、<code>file-owner</code> と + <code>file-group</code> を組み合わせることもできるようになり、 + その場合はどちらか (両方でも) にマッチした場合にアクセスを許可されます。</p> - <p>$B%G%U%)%k%H$G$O@)8f$OEO$5$l$:!"L$CN$N%0%k!<%W$N>l9g$O(B Authentication - Required $B1~Ez$,JV$5$l$^$9!#$G$9$+$i!"(B<code>Off</code> $B$K@_Dj$7$J$$$3$H$G(B - $B%7%9%F%`$r0BA4$KJ]$D$3$H$,$G$-!"(BNCSA $B8_49$N?6$kIq$$$r$5$;$k$3$H$K$J$j$^$9!#(B</p> + <p>デフォルトでは制御は渡されず、未知のグループの場合は Authentication + Required 応答が返されます。ですから、<code>Off</code> に設定しないことで + システムを安全に保つことができ、NCSA 互換の振る舞いをさせることになります。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_authz_user.xml.ja b/docs/manual/mod/mod_authz_user.xml.ja index 97bd114019..cde7733339 100644 --- a/docs/manual/mod/mod_authz_user.xml.ja +++ b/docs/manual/mod/mod_authz_user.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:635137 (outdated) --> @@ -23,27 +23,27 @@ <modulesynopsis metafile="mod_authz_user.xml.meta"> <name>mod_authz_user</name> -<description>$B%f!<%6>5G'(B</description> +<description>ユーザ承認</description> <status>Base</status> <sourcefile>mod_authz_user.c</sourcefile> <identifier>authz_user_module</identifier> -<compatibility>Apache 2.1 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>Apache 2.1 以降で使用可能</compatibility> <summary> - <p>$B$3$N%b%8%e!<%k$O!"G'>Z$5$l$?%f!<%6$K%&%'%V%5%$%H$N0lIt$X$N(B - $B%"%/%;%9$r5v2D$7$?$j5qH]$7$?$j$9$k$?$a$N>5G'5!G=$rDs6!$7$^$9!#(B - <module>mod_authz_user</module> $B$OG'>Z$5$l$?%f!<%6$,(B - <code>Require user</code> $B%G%#%l%/%F%#%V$K=q$+$l$F$$$l$P(B - $B%"%/%;%9$rG'$a$^$9!#G'>Z$K@.8y$7$?%f!<%6$9$Y$F$K%"%/%;%9$r(B - $B5v2D$9$k$K$O!"Be$o$j$K(B <code>require valid-user</code> $B$r(B - $B;H$&$3$H$,$G$-$^$9!#(B</p> + <p>このモジュールは、認証されたユーザにウェブサイトの一部への + アクセスを許可したり拒否したりするための承認機能を提供します。 + <module>mod_authz_user</module> は認証されたユーザが + <code>Require user</code> ディレクティブに書かれていれば + アクセスを認めます。認証に成功したユーザすべてにアクセスを + 許可するには、代わりに <code>require valid-user</code> を + 使うことができます。</p> </summary> <seealso><directive module="core">Require</directive></seealso> <seealso><directive module="core">Satisfy</directive></seealso> <directivesynopsis> <name>AuthzUserAuthoritative</name> -<description>$B>5G'$,2<0L$N%b%8%e!<%k$KEO$5$l$k$+$I$&$+$r@_Dj$9$k(B</description> +<description>承認が下位のモジュールに渡されるかどうかを設定する</description> <syntax>AuthzUserAuthoritative On|Off</syntax> <default>AuthzUserAuthoritative On</default> <contextlist><context>directory</context><context>.htaccess</context> @@ -51,15 +51,15 @@ <override>AuthConfig</override> <usage> - <p><directive>AuthzUserAuthoritative</directive> $B%G%#%l%/%F%#%V$r(B - $BL@<(E*$K(B <code>Off</code> $B$K@_Dj$9$k$H(B userID $B$KBP1~$9$k(B - <strong>$B%0%k!<%W$,$J$$>l9g$K(B</strong>$B!"(B - (<code>module.c</code> $B$GDj5A$5$l$F$$$k(B) $B2<0L$N%b%8%e!<%k$K%0%k!<%W>5G'$r(B - $BEO$9$3$H$r5v2D$7$^$9!#(B</p> + <p><directive>AuthzUserAuthoritative</directive> ディレクティブを + 明示的に <code>Off</code> に設定すると userID に対応する + <strong>グループがない場合に</strong>、 + (<code>module.c</code> で定義されている) 下位のモジュールにグループ承認を + 渡すことを許可します。</p> - <p>$B%G%U%)%k%H$G$O@)8f$OEO$5$l$:!"L$CN$N%0%k!<%W$N>l9g$O(B Authentication - Required $B1~Ez$,JV$5$l$^$9!#$G$9$+$i!"$3$l$r@_Dj$7$J$$$H(B - $B%7%9%F%`$r0BA4$KJ]$D$3$H$,$G$-!"(BNCSA $B8_49$N?6$kIq$$$r$5$;$k$3$H$K$J$j$^$9!#(B</p> + <p>デフォルトでは制御は渡されず、未知のグループの場合は Authentication + Required 応答が返されます。ですから、これを設定しないと + システムを安全に保つことができ、NCSA 互換の振る舞いをさせることになります。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_autoindex.xml.ja b/docs/manual/mod/mod_autoindex.xml.ja index 393207e454..b66bc2fc31 100644 --- a/docs/manual/mod/mod_autoindex.xml.ja +++ b/docs/manual/mod/mod_autoindex.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:648945 (outdated) --> @@ -23,135 +23,135 @@ <modulesynopsis metafile="mod_autoindex.xml.meta"> <name>mod_autoindex</name> -<description>Unix $B$N(B <code>ls</code> $B%3%^%s%I$d(B - Win32 $B$N(B <code>dir</code> $B%7%'%k%3%^%s%I$K;w$?(B - $B%G%#%l%/%H%j%$%s%G%C%/%9$r@8@.$9$k(B</description> +<description>Unix の <code>ls</code> コマンドや + Win32 の <code>dir</code> シェルコマンドに似た + ディレクトリインデックスを生成する</description> <status>Base</status> <sourcefile>mod_autoindex.c</sourcefile> <identifier>autoindex_module</identifier> <summary> - <p>$B%G%#%l%/%H%j$N%$%s%G%C%/%9$OFs$D$N>pJs8;$N$&$A$N(B - $B0l$D$+$i@8@.$G$-$^$9(B:</p> + <p>ディレクトリのインデックスは二つの情報源のうちの + 一つから生成できます:</p> <ul> - <li>$BIaDL$O(B <code>index.html</code> $B$H8F$P$l$k(B - $B%f!<%6$K$h$C$F=q$+$l$?%U%!%$%k!#(B + <li>普通は <code>index.html</code> と呼ばれる + ユーザによって書かれたファイル。 <directive module="mod_dir">DirectoryIndex</directive> - $B%G%#%l%/%F%#%V$G$3$N%U%!%$%kL>$r@_Dj$7$^$9!#(B - $B$3$l$O(B <module>mod_dir</module> $B$G@)8f$5$l$^$9!#(B</li> + ディレクティブでこのファイル名を設定します。 + これは <module>mod_dir</module> で制御されます。</li> - <li>$B$b$7$/$O!"%5!<%P$K$h$C$F@8@.$5$l$?0lMw!#(B - $B$=$NB>$N%G%#%l%/%F%#%V$G$3$N0lMw$N=q<0$r@)8f$7$^$9!#(B + <li>もしくは、サーバによって生成された一覧。 + その他のディレクティブでこの一覧の書式を制御します。 <directive module="mod_autoindex">AddIcon</directive>, <directive - module="mod_autoindex">AddIconByEncoding</directive> $B$H(B + module="mod_autoindex">AddIconByEncoding</directive> と <directive module="mod_autoindex">AddIconByType</directive> - $B$r;H$&$3$H$G!"MM!9$J%U%!%$%k%?%$%W$KBP$7$F%"%$%3%s0lMw$r(B - $B%;%C%H$7$^$9!#$D$^$j!"%j%9%H$5$l$?%U%!%$%kKh$K!"(B - $B%U%!%$%k$K%^%C%A$7$?0lHV:G=i$N%"%$%3%s$,I=<($5$l$^$9!#(B - $B$3$l$i$O(B <module>mod_autoindex</module> $B$G@)8f$5$l$^$9!#(B</li> + を使うことで、様々なファイルタイプに対してアイコン一覧を + セットします。つまり、リストされたファイル毎に、 + ファイルにマッチした一番最初のアイコンが表示されます。 + これらは <module>mod_autoindex</module> で制御されます。</li> </ul> - <p>$BK>$`$J$i$P!"<+F0%$%s%G%C%/%9@8@.$r40A4$K=|5n(B ($B$"$k$$$OCV49(B) - $B$G$-$k$h$&$K!"$3$NFs$D$N5!G=$OJ,N%$5$l$F$$$^$9!#(B</p> + <p>望むならば、自動インデックス生成を完全に除去 (あるいは置換) + できるように、この二つの機能は分離されています。</p> - <p>$B<+F0%$%s%G%C%/%9@8@.$O(B <code>Options +Indexes</code> - $B$r;H$&$3$H$GM-8z$K$J$j$^$9!#>\:Y$K$D$$$F$O!"(B + <p>自動インデックス生成は <code>Options +Indexes</code> + を使うことで有効になります。詳細については、 <directive module="core">Options</directive> - $B%G%#%l%/%F%#%V$r$4Mw2<$5$$!#(B</p> + ディレクティブをご覧下さい。</p> - <p>$B$b$7(B <code><a href="#indexoptions.fancyindexing" - >FancyIndexing</a></code>$B%*%W%7%g%s$,(B + <p>もし <code><a href="#indexoptions.fancyindexing" + >FancyIndexing</a></code>オプションが <directive module="autoindex">IndexOptions</directive> - $B%G%#%l%/%F%#%V$KM?$($i$l$F$$$k$J$i$P!"(B - $BNs$N@hF,$OI=<($N=gHV$r@)8f$9$k%j%s%/$K$J$j$^$9!#(B - $B@hF,$N%j%s%/$rA*Br$9$k$H!"0lMw$O:F@8@.$5$l$F(B - $B$=$NNs$NCM$G%=!<%H$5$l$^$9!#(B - $BF1$8@hF,$rB3$1$FA*Br$9$k$H!"8r8_$K>:=g$H9_=g$H$K$J$j$^$9!#(B - $B$3$l$i$NNs$N@hF,$N%j%s%/$O!"(B + ディレクティブに与えられているならば、 + 列の先頭は表示の順番を制御するリンクになります。 + 先頭のリンクを選択すると、一覧は再生成されて + その列の値でソートされます。 + 同じ先頭を続けて選択すると、交互に昇順と降順とになります。 + これらの列の先頭のリンクは、 <directive module="mod_autoindex">IndexOptions</directive> - $B%G%#%l%/%F%#%V$N(B + ディレクティブの <code>SuppressColumnSorting</code> - $B%*%W%7%g%s$G>C$9$3$H$,$G$-$^$9!#(B</p> - - <p>"Size" $B$G%=!<%H$7$?>l9g$O!"MQ$$$i$l$k$N$O(B - <em>$B<B:]$N(B</em>$B%U%!%$%k$N%5%$%:$G$"$C$F!"(B - $BI=<($NCM$G$O$J$$$3$H$KCm0U$7$F$/$@$5$$(B - - $B$?$H$(N>J}$H$b$,(B "1K" $B$HI=<($5$l$F$$$?$H$7$F$b!"(B - 1010 $B%P%$%H$N%U%!%$%k$OI,$:(B 1011 - $B%P%$%H$N%U%!%$%k$h$j$bA0(B ($B>:=g$N>l9g(B) $B$KI=<($5$l$^$9!#(B</p> + オプションで消すことができます。</p> + + <p>"Size" でソートした場合は、用いられるのは + <em>実際の</em>ファイルのサイズであって、 + 表示の値ではないことに注意してください - + たとえ両方ともが "1K" と表示されていたとしても、 + 1010 バイトのファイルは必ず 1011 + バイトのファイルよりも前 (昇順の場合) に表示されます。</p> </summary> <section id="query"> - <title>Autoindex $B%j%/%(%9%H%/%(%j!<0z?t(B</title> + <title>Autoindex リクエストクエリー引数</title> - <p>Apache 2.0.23 $B$G!"(B - $B%3%i%`%=!<%H$N$?$a$K%/%(%j!<0z?t$r:FJT@.$7$F!"(B - $B?7$7$$%/%(%j!<%*%W%7%g%s$N%0%k!<%W$rF3F~$7$^$7$?!#(B - $B=PNO$KBP$9$k%/%i%$%"%s%H$N$9$Y$F$N@)8f$r8zN(E*$KKu>C(B - $B$G$-$k$h$&$K!"(B + <p>Apache 2.0.23 で、 + コラムソートのためにクエリー引数を再編成して、 + 新しいクエリーオプションのグループを導入しました。 + 出力に対するクライアントのすべての制御を効率的に抹消 + できるように、 <code><a href="#indexoptions.ignoreclient">IndexOptions - IgnoreClient</a></code> $B$,F3F~$5$l$^$7$?!#(B</p> + IgnoreClient</a></code> が導入されました。</p> - <p>$B%3%i%`%=!<%H$N%X%C%@$=$l<+BN$,!"(B - $B2<5-$N%=!<%H%/%(%j!<%*%W%7%g%s$rIU2C$9$k(B - $B<+J,<+?H$r;2>H$9$k%j%s%/$G$9!#(B - $B2<5-$N%*%W%7%g%s$N$I$l$G$b!"(B - $B%G%#%l%/%H%j%j%=!<%9$X$N%j%/%(%9%H$K2C$($k$3$H$,$G$-$^$9!#(B</p> + <p>コラムソートのヘッダそれ自体が、 + 下記のソートクエリーオプションを付加する + 自分自身を参照するリンクです。 + 下記のオプションのどれでも、 + ディレクトリリソースへのリクエストに加えることができます。</p> <ul> - <li><code>C=N</code> $B$O!"%U%!%$%kL>$G%=!<%H$7$^$9!#(B</li> + <li><code>C=N</code> は、ファイル名でソートします。</li> - <li><code>C=M</code> $B$O!"99?7F|;~!"(B - $B%G%#%l%/%H%j!"%U%!%$%kL>$N=g$G%=!<%H$7$^$9!#(B</li> + <li><code>C=M</code> は、更新日時、 + ディレクトリ、ファイル名の順でソートします。</li> - <li><code>C=S</code> $B$O!"%5%$%:!"(B - $B%G%#%l%/%H%j!"%U%!%$%kL>$N=g$G%=!<%H$7$^$9!#(B</li> + <li><code>C=S</code> は、サイズ、 + ディレクトリ、ファイル名の順でソートします。</li> - <li class="separate"><code>C=D</code> $B$O!"@bL@!"(B - $B%G%#%l%/%H%j!"%U%!%$%kL>$N=g$G%=!<%H$7$^$9!#(B</li> + <li class="separate"><code>C=D</code> は、説明、 + ディレクトリ、ファイル名の順でソートします。</li> - <li><code>O=A</code> $B$O!">:=g$GI=$r%=!<%H$7$^$9!#(B</li> + <li><code>O=A</code> は、昇順で表をソートします。</li> - <li class="separate"><code>O=D</code> $B$O!"9_=g$GI=$r%=!<%H$7$^$9!#(B</li> + <li class="separate"><code>O=D</code> は、降順で表をソートします。</li> - <li><code>F=0</code> $B$O!"C1=c$JI=$N=q<0$K$7$^$9!#(B - (FancyIndex $B$G$O$"$j$^$;$s!#(B)</li> + <li><code>F=0</code> は、単純な表の書式にします。 + (FancyIndex ではありません。)</li> - <li><code>F=1</code> $B$O!"(BFancyIndex - $BI=<($NI=$N=q<0$K$7$^$9!#(B</li> + <li><code>F=1</code> は、FancyIndex + 表示の表の書式にします。</li> - <li><code>F=2</code> $B$O!"I=$r(B HTML - $B$N%F!<%V%k$r;H$C$?(B FancyIndex $B$N=q<0$K$7$^$9!#(B</li> + <li><code>F=2</code> は、表を HTML + のテーブルを使った FancyIndex の書式にします。</li> <li><code>V=0</code> - $B$O!"%P!<%8%g%s$K$h$k%=!<%H$rL58z$K$7$^$9!#(B</li> + は、バージョンによるソートを無効にします。</li> <li class="separate"><code>V=1</code> - $B$O!"%P!<%8%g%s$K$h$k%=!<%H$rM-8z$K$7$^$9!#(B</li> + は、バージョンによるソートを有効にします。</li> <li><code>P=<var>pattern</var></code> - $B$O!"M?$($i$l$?(B <var>pattern</var> - $B$KE,9g$7$?%U%!%$%k$N$_$rI=<($7$^$9!#(B</li> + は、与えられた <var>pattern</var> + に適合したファイルのみを表示します。</li> </ul> - <p>"P ($B%Q%?!<%s$N(B P)" $B%/%(%j!<0z?t$O!"(B - $BDL>o$N(B <directive module="mod_autoindex">IndexIgnore</directive> - $B%G%#%l%/%F%#%V$,=hM}$5$l$?(B<em>$B8e(B</em>$B$K8!::$5$l!"(B - $B%U%!%$%kL>A4$F$,!"B>$N(B autoindex - $B%j%9%H=hM}$HF1MM$NH=Dj4p=`2<$KCV$+$lB3$1$k(B - $B$3$H$KCm0U$7$F$/$@$5$$!#(B - <module>mod_autoindex</module> $B$N%/%(%j!<0z?t%Q!<%5(B ($B2r@O(B) $B$O!"(B - $BG'<1ITG=$J%*%W%7%g%s$K$V$D$+$k$HB(:B$KDd;_$7$^$9!#(B - $B%/%(%j!<0z?t$O>e$NI=$K=>$C$F(B - $B@5$7$$7A<0$K$J$C$F$$$J$1$l$P$J$j$^$;$s!#(B</p> - - <p>$B2<$NC1=c$JNc$O!"$3$l$i$N%/%(%j!<%*%W%7%g%s$r(B - $BI=$7$^$9!#$3$l$r$=$N$^$^@Z$j<h$C$F(B HEADER.html - $B%U%!%$%k$KJ]B8$9$k$3$H$b$G$-$^$9!#(B - mod_autoindex $B$,(B X=Go $BF~NO$K$V$D$+$kA0$K(B - $B0z?t$,A4$F2r<a$5$l$k$h$&$K!"(B - $BL$CN$N0z?t(B "X" $B$O%j%9%H$N:G8e$KCV$+$l$F$$$^$9!#(B</p> + <p>"P (パターンの P)" クエリー引数は、 + 通常の <directive module="mod_autoindex">IndexIgnore</directive> + ディレクティブが処理された<em>後</em>に検査され、 + ファイル名全てが、他の autoindex + リスト処理と同様の判定基準下に置かれ続ける + ことに注意してください。 + <module>mod_autoindex</module> のクエリー引数パーサ (解析) は、 + 認識不能なオプションにぶつかると即座に停止します。 + クエリー引数は上の表に従って + 正しい形式になっていなければなりません。</p> + + <p>下の単純な例は、これらのクエリーオプションを + 表します。これをそのまま切り取って HEADER.html + ファイルに保存することもできます。 + mod_autoindex が X=Go 入力にぶつかる前に + 引数が全て解釈されるように、 + 未知の引数 "X" はリストの最後に置かれています。</p> <example> <form action="" method="get"><br /> @@ -193,8 +193,8 @@ <directivesynopsis> <name>AddAlt</name> -<description>$B%"%$%3%s$NBe$o$j$K(B -$BI=<($5$l$k!"%U%!%$%kL>$GA*Br$5$l$?BeBX%F%-%9%H(B</description> +<description>アイコンの代わりに +表示される、ファイル名で選択された代替テキスト</description> <syntax>AddAlt <var>string</var> <var>file</var> [<var>file</var>] ...</syntax> <contextlist><context>server config</context> <context>virtual host</context> @@ -203,19 +203,19 @@ <override>Indexes</override> <usage> - <p><directive>AddAlt</directive> $B$O!"(B<code><a + <p><directive>AddAlt</directive> は、<code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> - $B$K$*$$$F!"%"%$%3%s$NBe$o$j$KI=<($9$kBeBX%F%-%9%H$rDs6!$7$^$9!#(B - <var>file</var> $B$O!"@bL@$9$k%U%!%$%k$N%U%!%$%k3HD%;R!"(B - $B%U%!%$%kL>$N0lIt!"%o%$%k%I%+!<%II=8=!"40A4$J%U%!%$%kL>$N(B - $B$I$l$+$K$J$j$^$9!#(B - <var>string</var> $B$K6uGr$,$"$k>l9g$O0zMQId(B (<code>"</code> - $B$+(B <code>'</code>) $B$G0O$`I,MW$,$"$j$^$9!#(B - $B$3$NJ8;zNs$O!"%/%i%$%"%s%H$,2hA|$rI=<($G$-$J$$>l9g$d(B - $B2hA|$N%m!<%I$rL58z$K$7$F$$$k>l9g$d(B - $B%"%$%3%s$N<hF@$K<:GT$7$?$H$-$KI=<($5$l$^$9!#(B</p> - - <example><title>$BNc(B</title> + において、アイコンの代わりに表示する代替テキストを提供します。 + <var>file</var> は、説明するファイルのファイル拡張子、 + ファイル名の一部、ワイルドカード表現、完全なファイル名の + どれかになります。 + <var>string</var> に空白がある場合は引用符 (<code>"</code> + か <code>'</code>) で囲む必要があります。 + この文字列は、クライアントが画像を表示できない場合や + 画像のロードを無効にしている場合や + アイコンの取得に失敗したときに表示されます。</p> + + <example><title>例</title> AddAlt "PDF file" *.pdf<br /> AddAlt Compressed *.gz *.zip *.Z </example> @@ -224,8 +224,8 @@ <directivesynopsis> <name>AddAltByEncoding</name> -<description>$B%"%$%3%s$NBe$o$j$KI=<($5$l$k!"(BMIME $BId9f2=J}K!$GA*Br$5$l$?(B -$BBeBX%F%-%9%H(B</description> +<description>アイコンの代わりに表示される、MIME 符号化方法で選択された +代替テキスト</description> <syntax>AddAltByEncoding <var>string</var> <var>MIME-encoding</var> [<var>MIME-encoding</var>] ...</syntax> <contextlist><context>server config</context> @@ -235,19 +235,19 @@ <override>Indexes</override> <usage> - <p><directive>AddAltByEncoding</directive> $B$O!"(B + <p><directive>AddAltByEncoding</directive> は、 <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> - $B$K$*$$$F!"%"%$%3%s$NBe$o$j$KI=<($9$kBeBXJ8;zNs$rDs6!$7$^$9!#(B - <var>MIME-encoding</var> $B$OM-8z$JId9f2=!"Nc$($P(B + において、アイコンの代わりに表示する代替文字列を提供します。 + <var>MIME-encoding</var> は有効な符号化、例えば <code>x-compress</code> - $B$G$9!#(B - <var>string</var> $B$K6uGr$,$"$k$H$-$O!"0zMQId(B (<code>"</code> $B$+(B - <code>'</code>) $B$G0O$`I,MW$,$"$j$^$9!#(B - $B$3$NJ8;zNs$O!"%/%i%$%"%s%H$,2hA|$rI=<($G$-$J$$>l9g$d(B - $B2hA|$N%m!<%I$rL58z$K$7$F$$$k>l9g$d(B - $B%"%$%3%s$N<hF@$K<:GT$7$?$H$-$KI=<($5$l$^$9!#(B</p> - - <example><title>$BNc(B</title> + です。 + <var>string</var> に空白があるときは、引用符 (<code>"</code> か + <code>'</code>) で囲む必要があります。 + この文字列は、クライアントが画像を表示できない場合や + 画像のロードを無効にしている場合や + アイコンの取得に失敗したときに表示されます。</p> + + <example><title>例</title> AddAltByEncoding gzip x-gzip </example> </usage> @@ -255,8 +255,8 @@ <directivesynopsis> <name>AddAltByType</name> -<description>$B%"%$%3%s$NBe$o$j$K(B -$BI=<($5$l$k!"(BMIME $B%?%$%W$GA*Br$5$l$?BeBX%F%-%9%H(B</description> +<description>アイコンの代わりに +表示される、MIME タイプで選択された代替テキスト</description> <syntax>AddAltByType <var>string</var> <var>MIME-type</var> [<var>MIME-type</var>] ...</syntax> <contextlist><context>server config</context> @@ -266,19 +266,19 @@ <override>Indexes</override> <usage> - <p><directive>AddAltByType</directive> $B$O!"(B + <p><directive>AddAltByType</directive> は、 <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> - $B$K$*$$$F!"%"%$%3%s$NBe$o$j$KI=<($9$kBeBXJ8;zNs$r@_Dj$7$^$9!#(B - <var>MIME-type</var> $B$OM-8z$J%?%$%W!"Nc$($P(B + において、アイコンの代わりに表示する代替文字列を設定します。 + <var>MIME-type</var> は有効なタイプ、例えば <code>text/html</code> - $B$G$9!#(B - <var>string</var> $B$K6uGr$,$"$k$H$-$O!"0zMQId(B (<code>"</code> $B$+(B - <code>'</code>) $B$G0O$`I,MW$,$"$j$^$9!#(B - $B$3$NJ8;zNs$O!"%/%i%$%"%s%H$,2hA|$rI=<($G$-$J$$>l9g$d(B - $B2hA|$N%m!<%I$rL58z$K$7$F$$$k>l9g$d(B - $B%"%$%3%s$N<hF@$K<:GT$7$?$H$-$KI=<($5$l$^$9!#(B</p> - - <example><title>$BNc(B</title> + です。 + <var>string</var> に空白があるときは、引用符 (<code>"</code> か + <code>'</code>) で囲む必要があります。 + この文字列は、クライアントが画像を表示できない場合や + 画像のロードを無効にしている場合や + アイコンの取得に失敗したときに表示されます。</p> + + <example><title>例</title> AddAltByType 'plain text' text/plain </example> </usage> @@ -286,7 +286,7 @@ <directivesynopsis> <name>AddDescription</name> -<description>$B%U%!%$%k$KBP$7$FI=<($9$k@bL@(B</description> +<description>ファイルに対して表示する説明</description> <syntax>AddDescription <var>string</var> <var>file</var> [<var>file</var>] ...</syntax> <contextlist><context>server config</context> <context>virtual host</context> @@ -296,50 +296,50 @@ <usage> <p><code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> - $B$K$*$$$F!"%U%!%$%k$KBP$7$FI=<($9$k@bL@$r@_Dj$7$^$9!#(B - <var>file</var> $B$O@bL@$9$k%U%!%$%k$N%U%!%$%k3HD%;R!"(B - $B%U%!%$%kL>$N0lIt!"%o%$%k%I%+!<%II=8=!"40A4$J%U%!%$%kL>$N(B - $B$I$l$+$K$J$j$^$9!#(B - <var>string</var> $B$OFs=E0zMQId(B (<code>"</code>) $B$G0O$^$l$^$9!#(B</p> + において、ファイルに対して表示する説明を設定します。 + <var>file</var> は説明するファイルのファイル拡張子、 + ファイル名の一部、ワイルドカード表現、完全なファイル名の + どれかになります。 + <var>string</var> は二重引用符 (<code>"</code>) で囲まれます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> AddDescription "The planet Mars" /web/pics/mars.gif </example> - <p>$BDL>o$N%G%U%)%k%H$N@bL@NN0h$O(B 23 $B%P%$%H$NI}$G$9!#(B + <p>通常のデフォルトの説明領域は 23 バイトの幅です。 <code><a href="#indexoptions.suppressicon" >IndexOptions SuppressIcon</a></code> - $B%*%W%7%g%s$G(B 6 $B%P%$%HDI2C!"(B + オプションで 6 バイト追加、 <code><a href="#indexoptions.suppresssize" >IndexOptions SuppressSize</a></code> - $B%*%W%7%g%s$G(B 7 $B%P%$%HDI2C!"(B + オプションで 7 バイト追加、 <code><a href="#indexoptions.suppresslastmodified" >IndexOptions SuppressLastModified</a></code> - $B%*%W%7%g%s$G(B 19 $B%P%$%HDI2C$5$l$^$9!#(B - $B$G$9$+$i!"%G%U%)%k%H$N@bL@%3%i%`$N:GBgI}$O(B - 55 $B%P%$%H$K$J$j$^$9!#(B</p> + オプションで 19 バイト追加されます。 + ですから、デフォルトの説明コラムの最大幅は + 55 バイトになります。</p> - <p>$B$3$N%3%i%`$NBg$-$5$r>e=q$-$7$?$j!"(B - $B@bL@$,L5@)8BD9$G$b$h$$$h$&$K$9$k$?$a$N>\:Y$K4X$7$F$O!"(B + <p>このコラムの大きさを上書きしたり、 + 説明が無制限長でもよいようにするための詳細に関しては、 <a href="#indexoptions.descriptionwidth">DescriptionWidth</a> - $B$H$$$&(B + という <directive module="mod_autoindex">IndexOptions</directive> - $B$N%-!<%o!<%I$r$4Mw2<$5$$!#(B</p> + のキーワードをご覧下さい。</p> - <note><title>$B7Y9p(B</title> + <note><title>警告</title> <p><directive>AddDescription</directive> - $B$GDj5A$5$l$?@bL@%F%-%9%H$O!"%?%0$dJ8;zNs$H$$$C$?(B - HTML $B%^!<%/%"%C%W$r4^$`$3$H$,$G$-$^$9!#(B - $B$b$7!"@bL@%3%i%`$NI}$K$h$C$F%?%0IU$1$5$l$?MWAG$,4]$a9~$^$l$?(B - ($BB@;z$N8l6g$N:G8e$,@Z$l$k$H$$$C$?(B) $B>l9g!"(B - $B=PNO7k2L$O!"%G%#%l%/%H%j0lMw$N;D$j$NItJ,$K1F6A$rM?$($k$G$7$g$&!#(B</p> + で定義された説明テキストは、タグや文字列といった + HTML マークアップを含むことができます。 + もし、説明コラムの幅によってタグ付けされた要素が丸め込まれた + (太字の語句の最後が切れるといった) 場合、 + 出力結果は、ディレクトリ一覧の残りの部分に影響を与えるでしょう。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>AddIcon</name> -<description>$B%U%!%$%k$KI=<($9$k%"%$%3%s$rL>A0$GA*Br(B</description> +<description>ファイルに表示するアイコンを名前で選択</description> <syntax>AddIcon <var>icon</var> <var>name</var> [<var>name</var>] ...</syntax> <contextlist><context>server config</context> @@ -350,37 +350,37 @@ <usage> <p><code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> - $B$K$*$$$F!"(B - <var>name</var> $B$G=*$o$k%U%!%$%k$NNY$KI=<($9$k%"%$%3%s$r@_Dj$7$^$9!#(B - <var>icon</var> $B$O!"(B(% $B$G%(%9%1!<%W$5$l$?(B) $B%"%$%3%s$X$NAjBP(B URL - $B$+!"B>$N=q<0(B (<var>alttext</var>, <var>url</var>) $B$G$9!#(B - $B$3$3$G(B <var>alttext</var> - $B$O!"Hs%0%i%U%#%+%k%V%i%&%68~$1$K%"%$%3%s$KIU$1$i$l$?%F%-%9%H%?%0$G$9!#(B + において、 + <var>name</var> で終わるファイルの隣に表示するアイコンを設定します。 + <var>icon</var> は、(% でエスケープされた) アイコンへの相対 URL + か、他の書式 (<var>alttext</var>, <var>url</var>) です。 + ここで <var>alttext</var> + は、非グラフィカルブラウザ向けにアイコンに付けられたテキストタグです。 </p> - <p><var>name</var> $B$O!"%G%#%l%/%H%j$KBP1~$9$k(B <code>^^DIRECTORY^^</code> - $B$+!"6uGr9T$KBP1~$9$k(B <code>^^BLANKICON^^</code> ($B0lMw$,@5$7$/I=<($5$l$k$?$a$K(B) $B$+!"(B - $B%U%!%$%k3HD%;R$+!"%o%$%k%I%+!<%II=8=$+!"%U%!%$%kL>$N0lIt$+(B - $B40A4$J%U%!%$%kL>$G$9!#(B</p> + <p><var>name</var> は、ディレクトリに対応する <code>^^DIRECTORY^^</code> + か、空白行に対応する <code>^^BLANKICON^^</code> (一覧が正しく表示されるために) か、 + ファイル拡張子か、ワイルドカード表現か、ファイル名の一部か + 完全なファイル名です。</p> - <example><title>$BNc(B</title> + <example><title>例</title> AddIcon (IMG,/icons/image.xbm) .gif .jpg .xbm<br /> AddIcon /icons/dir.xbm ^^DIRECTORY^^<br /> AddIcon /icons/backup.xbm *~ </example> - <p>$B$b$72DG=$J$i!"(B + <p>もし可能なら、 <directive>AddIcon</directive> - $B$h$j(B + より <directive module="mod_autoindex">AddIconByType</directive> - $B$rM%@hE*$K;H$&$Y$-$G$7$g$&!#(B</p> + を優先的に使うべきでしょう。</p> </usage> </directivesynopsis> <directivesynopsis> <name>AddIconByEncoding</name> -<description>$B%U%!%$%k$KI=<($9$k%"%$%3%s$r(B MIME -$BId9f2=J}K!$GA*Br(B</description> +<description>ファイルに表示するアイコンを MIME +符号化方法で選択</description> <syntax>AddIconByEncoding <var>icon</var> <var>MIME-encoding</var> [<var>MIME-encoding</var>] ...</syntax> <contextlist><context>server config</context> @@ -391,17 +391,17 @@ <usage> <p><code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> - $B$K$*$$$F!"%U%!%$%k$NNY$KI=<($9$k%"%$%3%s$r@_Dj$7$^$9!#(B - <var>icon</var> $B$O!"(B(% $B$G%(%9%1!<%W$5$l$?(B) $B%"%$%3%s$X$NAjBP(B URL - $B$+!"B>$N=q<0(B <code>(<var>alttext</var>, <var>url</var>)</code> $B$G$9!#(B - $B$3$3$G(B <var>alttext</var> - $B$O!"Hs%0%i%U%#%+%k%V%i%&%68~$1$K%"%$%3%s$KIU$1$i$l$?%F%-%9%H%?%0$G$9!#(B + において、ファイルの隣に表示するアイコンを設定します。 + <var>icon</var> は、(% でエスケープされた) アイコンへの相対 URL + か、他の書式 <code>(<var>alttext</var>, <var>url</var>)</code> です。 + ここで <var>alttext</var> + は、非グラフィカルブラウザ向けにアイコンに付けられたテキストタグです。 </p> - <p><var>MIME-encoding</var> $B$O!"MW5a$5$l$?%(%s%3!<%I$K3:Ev$9$k(B - $B%o%$%k%I%+!<%II=8=$G$9!#(B</p> + <p><var>MIME-encoding</var> は、要求されたエンコードに該当する + ワイルドカード表現です。</p> - <example><title>$BNc(B</title> + <example><title>例</title> AddIconByEncoding /icons/compress.xbm x-compress </example> </usage> @@ -409,8 +409,8 @@ <directivesynopsis> <name>AddIconByType</name> -<description>$B%U%!%$%k$NNY$KI=<($9$k%"%$%3%s$r(B -MIME $B%?%$%W$K$h$C$FA*Br(B</description> +<description>ファイルの隣に表示するアイコンを +MIME タイプによって選択</description> <syntax>AddIconByType <var>icon</var> <var>MIME-type</var> [<var>MIME-type</var>] ...</syntax> <contextlist><context>server config</context> @@ -421,17 +421,17 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> <usage> <p><code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> - $B$K$*$$$F!"%U%!%$%k$NNY$KI=<($9$k%"%$%3%s$r@_Dj$7$^$9!#(B - <var>icon</var> $B$O!"(B(% $B$G%(%9%1!<%W$5$l$?(B) $B%"%$%3%s$X$NAjBP(B URL - $B$+!"B>$N=q<0(B <code>(<var>alttext</var>, <var>url</var>)</code> $B$G$9!#(B - $B$3$3$G(B <var>alttext</var> - $B$O!"Hs%0%i%U%#%+%k%V%i%&%68~$1$K%"%$%3%s$KIU$1$i$l$?%F%-%9%H%?%0$G$9!#(B + において、ファイルの隣に表示するアイコンを設定します。 + <var>icon</var> は、(% でエスケープされた) アイコンへの相対 URL + か、他の書式 <code>(<var>alttext</var>, <var>url</var>)</code> です。 + ここで <var>alttext</var> + は、非グラフィカルブラウザ向けにアイコンに付けられたテキストタグです。 </p> - <p><var>MIME-type</var> $B$O!"MW5a$5$l$?%?%$%W$K3:Ev$9$k(B - $B%o%$%k%I%+!<%II=8=$G$9!#(B</p> + <p><var>MIME-type</var> は、要求されたタイプに該当する + ワイルドカード表現です。</p> - <example><title>$BNc(B</title> + <example><title>例</title> AddIconByType (IMG,/icons/image.xbm) image/* </example> </usage> @@ -439,8 +439,8 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> <directivesynopsis> <name>DefaultIcon</name> -<description>$BFCDj$N%"%$%3%s$,2?$b@_Dj$5$l$F$$$J$$;~$K(B -$B%U%!%$%k$KI=<($9$k%"%$%3%s(B</description> +<description>特定のアイコンが何も設定されていない時に +ファイルに表示するアイコン</description> <syntax>DefaultIcon <var>url-path</var></syntax> <contextlist><context>server config</context> <context>virtual host</context> @@ -450,12 +450,12 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> <usage> <p><code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> - $B$K$*$$$F!"(B - $BFCDj$N%"%$%3%s$,$J$$>l9g$K%U%!%$%k$KI=<($9$k%"%$%3%s$r@_Dj$7$^$9!#(B - <var>url-path</var> $B$O!"(B(% $B$G%(%9%1!<%W$5$l$?(B) $B%"%$%3%s$X$NAjBP(B URL - $B$G$9!#(B</p> + において、 + 特定のアイコンがない場合にファイルに表示するアイコンを設定します。 + <var>url-path</var> は、(% でエスケープされた) アイコンへの相対 URL + です。</p> - <example><title>$BNc(B</title> + <example><title>例</title> DefaultIcon /icon/unknown.xbm </example> </usage> @@ -464,7 +464,7 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> <directivesynopsis> <name>HeaderName</name> <description> -$B%$%s%G%C%/%90lMw$N@hF,$KA^F~$5$l$k%U%!%$%k$NL>A0(B</description> +インデックス一覧の先頭に挿入されるファイルの名前</description> <syntax>HeaderName <var>filename</var></syntax> <contextlist><context>server config</context> <context>virtual host</context> @@ -474,71 +474,71 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> <usage> <p><directive>HeaderName</directive> - $B%G%#%l%/%F%#%V$O!"(B - $B%$%s%G%C%/%90lMw$N@hF,$KA^F~$9$k%U%!%$%k$NL>A0$r@_Dj$7$^$9!#(B - <var>Filename</var> $B$O<h$j9~$`%U%!%$%k$NL>A0$G$9!#(B</p> + ディレクティブは、 + インデックス一覧の先頭に挿入するファイルの名前を設定します。 + <var>Filename</var> は取り込むファイルの名前です。</p> - <example><title>$BNc(B</title> + <example><title>例</title> HeaderName HEADER.html </example> <note> - <p>HeaderName $B$b(B <directive + <p>HeaderName も <directive module="mod_autoindex">ReadmeName</directive> - $B$bN>J}$H$b8=:_$O!"(B<var>filename</var> - $B$r%$%s%G%C%/%9$5$l$F$$$k%G%#%l%/%H%j$KMQ$$$i$l$?(B URI - $B$KBP$9$kAjBP(B URI $B%Q%9$H$7$F07$$$^$9!#(B - <var>filename</var> $B$,%9%i%C%7%e$G;O$^$k>l9g$O!"(B + も両方とも現在は、<var>filename</var> + をインデックスされているディレクトリに用いられた URI + に対する相対 URI パスとして扱います。 + <var>filename</var> がスラッシュで始まる場合は、 <directive module="core">DocumentRoot</directive> - $B$+$i$NAjBP%Q%9$H$J$j$^$9!#(B</p> + からの相対パスとなります。</p> - <example><title>$BNc(B</title> + <example><title>例</title> HeaderName /include/HEADER.html </example> - <p><var>filename</var> $B$O(B - $B%a%8%c!<%3%s%F%s%H%?%$%W$,(B "<code>text/*</code>" - (<em>$BNc$($P(B</em>$B!"(B<code>text/html</code>, - <code>text/plain</code> $BEy$G$9!#(B) - $B$N%I%-%e%a%s%H$H$7$F2r7h(B - $B$5$l$J$1$l$P$J$j$^$;$s!#$3$l$O$D$^$j!"(B - $B$b$7(B CGI $B%9%/%j%W%H$N<B:]$N%U%!%$%k%?%$%W$,(B - $B<!$N%G%#%l%/%F%#%V$N$h$&$K$7$F<B:]$N=PNO$H$O0[$J$C$F(B - <code>text/html</code> $B$H$7$F%^!<%/$5$l$F$$$k>l9g!"(B + <p><var>filename</var> は + メジャーコンテントタイプが "<code>text/*</code>" + (<em>例えば</em>、<code>text/html</code>, + <code>text/plain</code> 等です。) + のドキュメントとして解決 + されなければなりません。これはつまり、 + もし CGI スクリプトの実際のファイルタイプが + 次のディレクティブのようにして実際の出力とは異なって + <code>text/html</code> としてマークされている場合、 <var>filename</var> - $B$O(B CGI $B%9%/%j%W%H$r;2>H$9$k$+$bCN$l$J$$!"(B - $B$H$$$&$3$H$r0UL#$7$^$9(B:</p> + は CGI スクリプトを参照するかも知れない、 + ということを意味します:</p> <example> AddType text/html .cgi </example> - <p><directive module="core">Options</directive> <code>MultiViews</code> $B$,(B - $BM-8z$K$J$C$F$$$k>l9g$O!"(B - <a href="../content-negotiation.html">$B%3%s%F%s%H%M%4%7%(!<%7%g%s(B</a> - $B$,9T$J$o$l$^$9!#(B - $B$b$7(B <var>filename</var> $B$,(B (CGI $B%9%/%j%W%H$G$J$$(B) $B@EE*$J(B - <code>text/html</code> $B%I%-%e%a%s%H$G2r7h$5$l!"(B + <p><directive module="core">Options</directive> <code>MultiViews</code> が + 有効になっている場合は、 + <a href="../content-negotiation.html">コンテントネゴシエーション</a> + が行なわれます。 + もし <var>filename</var> が (CGI スクリプトでない) 静的な + <code>text/html</code> ドキュメントで解決され、 <directive module="core">options</directive> - <code>Includes</code> $B$+(B <code>IncludesNOEXEC</code> - $B$,M-8z$K$J$C$F$$$k>l9g$O!"(B - $B%U%!%$%k$O%5!<%P!<%5%$%I%$%s%/%k!<%I$G=hM}$5$l$^$9(B - (<module>mod_include</module> $B%I%-%e%a%s%H$r;2>H$7$F2<$5$$(B)$B!#(B</p> + <code>Includes</code> か <code>IncludesNOEXEC</code> + が有効になっている場合は、 + ファイルはサーバーサイドインクルードで処理されます + (<module>mod_include</module> ドキュメントを参照して下さい)。</p> </note> - <p>$B$b$7(B <directive>HeaderName</directive> $B$G;XDj$5$l$?%U%!%$%k$,(B - HTML $B%I%-%e%a%s%H$N3+;OItJ,(B (<html>, <head>, - $BEy(B) $B$r4^$s$G$$$?$i!"(B + <p>もし <directive>HeaderName</directive> で指定されたファイルが + HTML ドキュメントの開始部分 (<html>, <head>, + 等) を含んでいたら、 <a href="#indexoptions.suppresshtmlpreamble"><code>IndexOptions +SuppressHTMLPreamble</code></a> - $B$r@_Dj$7$F!"$3$l$i$N%?%0$,7+$jJV$5$l$J$$$h$&$K$7$?$$$H;W$&$G$7$g$&!#(B</p> + を設定して、これらのタグが繰り返されないようにしたいと思うでしょう。</p> </usage> </directivesynopsis> <directivesynopsis> <name>IndexIgnore</name> -<description>$B%G%#%l%/%H%j0lMw$r9T$J$&:]$KL5;k$9$Y$-(B -$B%U%!%$%k%j%9%H$KDI2C(B</description> +<description>ディレクトリ一覧を行なう際に無視すべき +ファイルリストに追加</description> <syntax>IndexIgnore <var>file</var> [<var>file</var>] ...</syntax> <contextlist><context>server config</context> <context>virtual host</context> @@ -547,13 +547,13 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> <override>Indexes</override> <usage> - <p><directive>IndexIgnore</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%G%#%l%/%H%j$N0lMw$r9T$&:]$KL5;k$9$Y$-%U%!%$%k%j%9%H$KDI2C$7$^$9!#(B - <var>file</var> $B$O!"(B - $B%7%'%k7A<0$N%o%$%k%I%+!<%II=8=$+40A4$J%U%!%$%kL>$G$9!#(B - IndexIgnore $B$,J#?t$"$k>l9g$O!"L5;k$9$k%j%9%H$KDI2C$,9T$o$l!"(B - $BCV49$O9T$o$l$^$;$s!#%G%U%)%k%H$G$O%j%9%H$K$O(B <code>.</code> - ($B%+%l%s%H%G%#%l%/%H%j(B) $B$,4^$^$l$F$$$^$9!#(B</p> + <p><directive>IndexIgnore</directive> ディレクティブは、 + ディレクトリの一覧を行う際に無視すべきファイルリストに追加します。 + <var>file</var> は、 + シェル形式のワイルドカード表現か完全なファイル名です。 + IndexIgnore が複数ある場合は、無視するリストに追加が行われ、 + 置換は行われません。デフォルトではリストには <code>.</code> + (カレントディレクトリ) が含まれています。</p> <example> IndexIgnore README .htaccess *.bak *~ @@ -563,7 +563,7 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> <directivesynopsis> <name>IndexOptions</name> -<description>$B%G%#%l%/%H%j%$%s%G%C%/%9$NMM!9$J@_Dj9`L\(B +<description>ディレクトリインデックスの様々な設定項目 </description> <syntax>IndexOptions [+|-]<var>option</var> [[+|-]<var>option</var>] ...</syntax> <contextlist><context>server config</context> @@ -574,268 +574,268 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> <usage> <p><directive>IndexOptions</directive> - $B$O!"%G%#%l%/%H%j%$%s%G%C%/%9$N5sF0$r;XDj$7$^$9!#(B - <var>option</var> $B$O<!$N$I$l$+$G$9(B:</p> + は、ディレクトリインデックスの挙動を指定します。 + <var>option</var> は次のどれかです:</p> <dl> <dt><a name="indexoptions.descriptionwidth" id="indexoptions.descriptionwidth" >DescriptionWidth=[<var>n</var> | *]</a> - (<em>2.0.23 $B0J9_(B</em>)</dt> + (<em>2.0.23 以降</em>)</dt> <dd><code>DescriptionWidth</code> - $B%-!<%o!<%I$O@bL@%3%i%`$NI}$rJ8;z?t$G;XDj$9$k$3$H$,$G$-$^$9!#(B</dd> + キーワードは説明コラムの幅を文字数で指定することができます。</dd> - <dd><code>-DescriptionWidth</code> ($B$^$?$OHs@_Dj(B) $B$G!"(B - <module>mod_autoindex</module> $B$,:GE,$JI}$r7W;;$9$k$h$&$K$G$-$^$9!#(B</dd> + <dd><code>-DescriptionWidth</code> (または非設定) で、 + <module>mod_autoindex</module> が最適な幅を計算するようにできます。</dd> <dd><code>DescriptionWidth=<var>n</var></code> - $B$G!"%3%i%`I}$r(B <var>n</var> $B%P%$%H$K8GDj$7$^$9!#(B</dd> + で、コラム幅を <var>n</var> バイトに固定します。</dd> <dd><code>DescriptionWidth=*</code> - $B$O!":GD9$N@bL@$K9g$o$;$FI,MW$JD9$5$^$G%3%i%`$r1d$P$7$^$9!#(B</dd> + は、最長の説明に合わせて必要な長さまでコラムを延ばします。</dd> - <dd><strong>$B@bL@$r4]$a9~$s$@>l9gFCM-$N4m81$K$D$$$F$O(B + <dd><strong>説明を丸め込んだ場合特有の危険については <directive module="mod_autoindex">AddDescription</directive> - $B%;%/%7%g%s$r$*FI$_2<$5$$!#(B</strong></dd> + セクションをお読み下さい。</strong></dd> <dt><a name="indexoptions.fancyindexing" id="indexoptions.fancyindexing">FancyIndexing</a></dt> - <dd>$B>~$jIU$-%$%s%G%C%/%9$r%*%s$K$7$^$9!#(B</dd> + <dd>飾り付きインデックスをオンにします。</dd> <dt><a name="indexoptions.foldersfirst" id="indexoptions.foldersfirst">FoldersFirst</a> - (<em>2.0.23 $B0J9_(B</em>)</dt> - - <dd>$B$3$N%*%W%7%g%s$,M-8z$K$J$C$?>l9g!"%5%V%G%#%l%/%H%j$N0lMw$O(B - <em>$BI,$:(B</em>$B:G=i$K8=$o$l$F!"$=$N%G%#%l%/%H%j$NDL>o$N%U%!%$%k$O(B - $B$=$N8e$KB3$-$^$9!#(B - $B0lMw$O4pK\E*$K$O!"%U%!%$%k$H%G%#%l%/%H%j$NFs$D$NItJ,$KJ,$1$i$l$F!"(B - $B$=$l$>$l$OJL!9$K%=!<%H$5$l!"$=$N8e%5%V%G%#%l%/%H%j$r@h$K$7$F(B - $BI=<($,9T$J$o$l$^$9!#Nc$($P%=!<%H=g$,L>A0$N9_=g$K$J$C$F$$$F!"(B - <code>FoldersFirst</code> $B$,M-8z$K$J$C$F$$$k>l9g$O!"(B - $B%5%V%G%#%l%/%H%j(B <code>Zed</code> $B$O%5%V%G%#%l%/%H%j(B - <code>Beta</code> $B$h$j$bA0$K%j%9%H$5$l!"DL>o$N%U%!%$%k(B - <code>Gamma</code> $B$d(B <code>Alpha</code> - $B$h$j$bA0$K%j%9%H$5$l$^$9!#(B<strong>$B$3$N%*%W%7%g%s$O(B + (<em>2.0.23 以降</em>)</dt> + + <dd>このオプションが有効になった場合、サブディレクトリの一覧は + <em>必ず</em>最初に現われて、そのディレクトリの通常のファイルは + その後に続きます。 + 一覧は基本的には、ファイルとディレクトリの二つの部分に分けられて、 + それぞれは別々にソートされ、その後サブディレクトリを先にして + 表示が行なわれます。例えばソート順が名前の降順になっていて、 + <code>FoldersFirst</code> が有効になっている場合は、 + サブディレクトリ <code>Zed</code> はサブディレクトリ + <code>Beta</code> よりも前にリストされ、通常のファイル + <code>Gamma</code> や <code>Alpha</code> + よりも前にリストされます。<strong>このオプションは <a href="#indexoptions.fancyindexing"><code>FancyIndexing</code></a> - $B$bM-8z$K$J$C$F$$$k$H$-$K$N$_!"8z2L$,$"$j$^$9!#(B</strong></dd> + も有効になっているときにのみ、効果があります。</strong></dd> <dt><a name="indexoptions.htmltable" - id="indexoptions.htmltable">HTMLTable</a> <em>($B<B83E*!"(B - Apache 2.0.23 $B0J9_(B)</em></dt> + id="indexoptions.htmltable">HTMLTable</a> <em>(実験的、 + Apache 2.0.23 以降)</em></dt> - <dd>$B$3$N<B83E*$J%*%W%7%g%s$O(B FancyIndexing $B$H$H$b$K;XDj$9$k$3$H$G!"(B - $B>~$j$NIU$$$?%G%#%l%/%H%j0lMw$N$?$a$K%F!<%V%k$r;H$C$?C1=c$JI=$r:n$j$^$9!#(B - $B$3$l$O8E$$%V%i%&%6$r:.Mp$5$;$k$+$b$7$l$J$$$3$H$KCm0U$7$F$/$@$5$$!#(B - WinNT $B$d$=$NB>(B utf-8 - $B$,M-8z$J%W%i%C%H%[!<%`$N$h$&$K!"%U%!%$%kL>$d@bL@%F%-%9%H$,(B - $B1&FI$_$K$J$C$?$j:8FI$_$K$J$j$($k>l9g$OFC$KI,MW$G$9!#(B</dd> + <dd>この実験的なオプションは FancyIndexing とともに指定することで、 + 飾りの付いたディレクトリ一覧のためにテーブルを使った単純な表を作ります。 + これは古いブラウザを混乱させるかもしれないことに注意してください。 + WinNT やその他 utf-8 + が有効なプラットホームのように、ファイル名や説明テキストが + 右読みになったり左読みになりえる場合は特に必要です。</dd> <dt><a name="indexoptions.iconsarelinks" id="indexoptions.iconsarelinks">IconsAreLinks</a></dt> - <dd>$B$3$l$O!"(BFancyIndexing $B$K$*$$$F!"(B - $B%"%$%3%s$b%U%!%$%kL>$X$N%j%s%/$N0lIt$K$7$^$9!#(B</dd> + <dd>これは、FancyIndexing において、 + アイコンもファイル名へのリンクの一部にします。</dd> <dt><a name="indexoptions.iconheight" id="indexoptions.iconheight">IconHeight[=<var >pixels</var>]</a></dt> - <dd>$B$3$N%*%W%7%g%s$,!"(BIconWidth $B$H$H$b$K;H$o$l$F$$$k>l9g$O!"(B - $B%5!<%P$O%U%!%$%k%"%$%3%s$N$?$a$N(B <code>img</code> - $B%?%0$K(B <code>height</code> $B$H(B <code>width</code> - $BB0@-$r<h$j9~$`$h$&$K$J$j$^$9!#(B - $B$3$l$K$h$C$F!"%$%a!<%8A4$F$r%m!<%I$7=*$o$k$^$GBT$?$J$/$F$b!"(B - $B%V%i%&%6$O%Z!<%8%l%$%"%&%H$r$"$i$+$8$a7W;;$9$k$3$H$,$G$-$^$9!#(B - $B$3$N%*%W%7%g%s$K2?$bCM$,M?$($i$l$J$1$l$P!"(BApache - $B%=%U%H%&%'%"$GDs6!$5$l$F$$$k%"%$%3%s$NI8=`$N9b$5$,(B - $B%G%U%)%k%H$J$j$^$9!#(B</dd> + <dd>このオプションが、IconWidth とともに使われている場合は、 + サーバはファイルアイコンのための <code>img</code> + タグに <code>height</code> と <code>width</code> + 属性を取り込むようになります。 + これによって、イメージ全てをロードし終わるまで待たなくても、 + ブラウザはページレイアウトをあらかじめ計算することができます。 + このオプションに何も値が与えられなければ、Apache + ソフトウェアで提供されているアイコンの標準の高さが + デフォルトなります。</dd> <dt><a name="indexoptions.iconwidth" id="indexoptions.iconwidth">IconWidth[=<var >pixels</var>]</a></dt> - <dd>$B$3$N%*%W%7%g%s$,!"(B<code>IconHeight</code> $B$H$H$b$K;H$o$l$F$$$k>l9g$O!"(B - $B%5!<%P$O%U%!%$%k%"%$%3%s$N$?$a$N(B <code>img</code> - $B%?%0$K(B <code>height</code> $B$H(B <code>width</code> - $BB0@-$r<h$j9~$`$h$&$K$J$j$^$9!#(B - $B$3$l$K$h$C$F!"%$%a!<%8A4$F$r%m!<%I$7=*$o$k$^$GBT$?$J$/$F$b!"(B - $B%V%i%&%6$O%Z!<%8%l%$%"%&%H$r$"$i$+$8$a7W;;$9$k$3$H$,$G$-$^$9!#(B - $B$3$N%*%W%7%g%s$K2?$bCM$,M?$($i$l$J$1$l$P!"(BApache - $B%=%U%H%&%'%"$GDs6!$5$l$F$$$k%"%$%3%s$NI8=`$N9b$5$,(B - $B%G%U%)%k%H$J$j$^$9!#(B</dd> + <dd>このオプションが、<code>IconHeight</code> とともに使われている場合は、 + サーバはファイルアイコンのための <code>img</code> + タグに <code>height</code> と <code>width</code> + 属性を取り込むようになります。 + これによって、イメージ全てをロードし終わるまで待たなくても、 + ブラウザはページレイアウトをあらかじめ計算することができます。 + このオプションに何も値が与えられなければ、Apache + ソフトウェアで提供されているアイコンの標準の高さが + デフォルトなります。</dd> <dt><a name="indexoptions.ignorecase" id="indexoptions.ignorecase">IgnoreCase</a></dt> - <dd>$B$3$N%*%W%7%g%s$,M-8z$G$"$k$H!"%U%!%$%kL>$OBgJ8;z>.J8;z$r6hJL$;$:$K%=!<%H$5$l$^$9!#(B - $BNc$($P%U%!%$%kL>$,>:=g$G%=!<%H$5$l!"(BIgnoreCase $B$,M-8z$G$"$l$P!"(B - Zeta $B$O(B alfa $B$N8e$K%j%9%H$5$l$^$9(B - ($BCm0U(B: GAMMA $B$O>o$K(B gamma $B$NA0$K$J$j$^$9(B)$B!#(B</dd> + <dd>このオプションが有効であると、ファイル名は大文字小文字を区別せずにソートされます。 + 例えばファイル名が昇順でソートされ、IgnoreCase が有効であれば、 + Zeta は alfa の後にリストされます + (注意: GAMMA は常に gamma の前になります)。</dd> <dt><a name="indexoptions.ignoreclient" id="indexoptions.ignoreclient">IgnoreClient</a></dt> - <dd>$B$3$N%*%W%7%g%s$G(B <module>mod_autoindex</module> $B$O!"(B - $B%/%i%$%"%s%H$+$i$NA4$F$N%/%(%j!<JQ?t$rL5;k$9$k$h$&$K$J$j$^$9!#(B - $B$3$l$O%=!<%H=g$b4^$_$^$9!#(B - ($B$D$^$j(B <code><a href="#indexoptions.suppresscolumnsorting" + <dd>このオプションで <module>mod_autoindex</module> は、 + クライアントからの全てのクエリー変数を無視するようになります。 + これはソート順も含みます。 + (つまり <code><a href="#indexoptions.suppresscolumnsorting" >SuppressColumnSorting</a></code> - $B$r0E$K0UL#$7$^$9!#(B)</dd> + を暗に意味します。)</dd> <dt><a name="indexoptions.namewidth" id="indexoptions.namewidth">NameWidth=[<var>n</var> | *]</a></dt> - <dd><code>NameWidth</code> $B%-!<%o!<%I$G%U%!%$%kL>%3%i%`$NI}$r%P%$%H?t$G(B - $B;XDj$G$-$^$9!#(B</dd> + <dd><code>NameWidth</code> キーワードでファイル名コラムの幅をバイト数で + 指定できます。</dd> - <dd><code>-NameWidth</code> ($B$^$?$OHs@_Dj(B) $B$G!"(B - <module>mod_autoindex</module> $B$,:GE,$JI}$r7W;;$9$k$h$&$K$G$-$^$9!#(B</dd> + <dd><code>-NameWidth</code> (または非設定) で、 + <module>mod_autoindex</module> が最適な幅を計算するようにできます。</dd> <dd><code>NameWidth=<var>n</var></code> - $B$G!"%3%i%`I}$r(B <var>n</var> $B%P%$%H$K8GDj$7$^$9!#(B</dd> + で、コラム幅を <var>n</var> バイトに固定します。</dd> <dd><code>NameWidth=*</code> - $B$O!"I,MW$JD9$5$^$G%3%i%`$r1d$P$7$^$9!#(B</dd> + は、必要な長さまでコラムを延ばします。</dd> <dt><a name="indexoptions.scanhtmltitles" id="indexoptions.scanhtmltitles">ScanHTMLTitles</a></dt> - <dd>FancyIndexing $B$N$?$a$K!"(B - HTML $B%I%-%e%a%s%H$+$i%?%$%H%k$r<h$j=P$9$3$H$r2DG=$K$7$^$9!#(B - $B$b$7%U%!%$%k$K(B + <dd>FancyIndexing のために、 + HTML ドキュメントからタイトルを取り出すことを可能にします。 + もしファイルに <directive module="mod_autoindex">AddDescription</directive> - $B$G@bL@$,M?$($i$l$F$$$J$1$l$P!"(B - httpd $B$O(B <code>title</code> $B%?%0$NCM$rFI$`$?$a$K%I%-%e%a%s%H$rFI$_;O$a$^$9!#(B - $B$3$l$O(B CPU $B$d(B disk $B$KIi2Y$r$+$1$^$9!#(B</dd> + で説明が与えられていなければ、 + httpd は <code>title</code> タグの値を読むためにドキュメントを読み始めます。 + これは CPU や disk に負荷をかけます。</dd> <dt><a name="indexoptions.showforbidden" id="indexoptions.showforbidden">ShowForbidden</a></dt> - <dd>$B;XDj$7$?>l9g$G$"$C$F$b!"%5%V%j%/%(%9%H$N7k2L$,(B HTTP_UNAUTHORIZED $B$d(B - HTTP_FORBIDDEN $B$N%U%!%$%k$ODL>oDL$j1#$5$l$?>uBV$N$^$^!"(B - $B%U%!%$%k0lMw$,@8@.$5$l$^$9!#(B</dd> + <dd>指定した場合であっても、サブリクエストの結果が HTTP_UNAUTHORIZED や + HTTP_FORBIDDEN のファイルは通常通り隠された状態のまま、 + ファイル一覧が生成されます。</dd> <dt><a name="indexoptions.suppresscolumnsorting" id="indexoptions.suppresscolumnsorting" >SuppressColumnSorting</a></dt> - <dd>$B$b$7;XDj$5$l$F$$$l$P!"(BApache $B$O(B - FancyIndexing $B$GI=<($5$l$F$$$k%G%#%l%/%H%j0lMw$G$N(B - $B%3%i%`$N@hF,$r!"%=!<%H$N$?$a$N%j%s%/$K$7$J$/$J$j$^$9!#(B - $B%G%U%)%k%H$N5sF0$O!"%j%s%/$H$7$^$9!#(B - $B%3%i%`$N@hF,$rA*$V$H%3%i%`$NCM$K=>$C$F%G%#%l%/%H%j%j%9%H$r(B - $B%=!<%H$7$^$9!#(B - <strong>Apache 2.0.23 $B0JA0$G$O!"$3$l$OF1;~$K(B - $B%=!<%HJ8;zNs$N$?$a$N%/%(%j!<0z?t$N2r@O$bL58z$K$7$^$9!#(B + <dd>もし指定されていれば、Apache は + FancyIndexing で表示されているディレクトリ一覧での + コラムの先頭を、ソートのためのリンクにしなくなります。 + デフォルトの挙動は、リンクとします。 + コラムの先頭を選ぶとコラムの値に従ってディレクトリリストを + ソートします。 + <strong>Apache 2.0.23 以前では、これは同時に + ソート文字列のためのクエリー引数の解析も無効にします。 </strong> - $B$3$N5sF0$O(B Apache 2.0.23 $B$G$O(B + この挙動は Apache 2.0.23 では <a href="#indexoptions.ignoreclient">IndexOptions - IgnoreClient</a> $B$G@)8f$5$l$k$h$&$K$J$C$F$$$^$9!#(B</dd> + IgnoreClient</a> で制御されるようになっています。</dd> <dt><a name="indexoptions.suppressdescription" id="indexoptions.suppressdescription" >SuppressDescription</a></dt> - <dd>$B$3$l$O(B FancyIndexing $B$K$*$1$k%U%!%$%k$N@bL@$r>C5n$7$^$9!#(B - $B%G%U%)%k%H$G$O!"@bL@$ODj5A$5$l$F$*$i$:!"(B - $B$3$N%*%W%7%g%s$r;H$&$HB>$N$?$a$K(B 23 - $BJ8;z$N6uGr$r2T$0$3$H$,$G$-$^$9!#(B $B%U%!%$%k$N@bL@$K4X$9$k>pJs$O!"(B + <dd>これは FancyIndexing におけるファイルの説明を消去します。 + デフォルトでは、説明は定義されておらず、 + このオプションを使うと他のために 23 + 文字の空白を稼ぐことができます。 ファイルの説明に関する情報は、 <directive module="mod_autoindex">AddDescription</directive> - $B$r$4Mw2<$5$$!#$^$?!"@bL@$N%3%i%`%5%$%:$r@)8B$9$k(B + をご覧下さい。また、説明のコラムサイズを制限する <code><a href="#indexoptions.descriptionwidth">DescriptionWidth</a></code> - $B%$%s%G%C%/%9%*%W%7%g%s$b$4Mw2<$5$$!#(B</dd> + インデックスオプションもご覧下さい。</dd> <dt><a name="indexoptions.suppresshtmlpreamble" id="indexoptions.suppresshtmlpreamble" >SuppressHTMLPreamble</a></dt> - <dd>$BDL>o!"(B + <dd>通常、 <directive module="mod_autoindex">HeaderName</directive> - $B%G%#%l%/%F%#%V$G;XDj$7$?%U%!%$%k$r(B - $B%G%#%l%/%H%j$,<B:]$K4^$s$G$$$l$P!"I8=`E*$J(B HTML $B%W%j%"%s%V%k(B - (<code><html></code>, <code><head></code>, <em>$BEy(B</em>) $B$N8e$K!"(B - $B%b%8%e!<%k$O%U%!%$%k$NCf?H$r%$%s%/%k!<%I$7$^$9!#(B - <code>SuppressHTMLPreamble</code> $B%*%W%7%g%s$O!"(B - $B$3$N5sF0$rL58z$K$G$-$F!"(B - $B%b%8%e!<%k$,%X%C%@!<%U%!%$%k$NCf?H$+$iI=<($r;O$a$^$9!#(B - $B$3$N>l9g!"%X%C%@!<%U%!%$%k$O@5$7$$(B HTML - $BL?Na$r4^$s$G$$$J$1$l$P$J$j$^$;$s!#(B - $B%X%C%@!<%U%!%$%k$,B8:_$7$J$$>l9g$O!"%W%j%"%s%V%k$ODL>oDL$j(B - $B@8@.$5$l$^$9!#(B</dd> + ディレクティブで指定したファイルを + ディレクトリが実際に含んでいれば、標準的な HTML プリアンブル + (<code><html></code>, <code><head></code>, <em>等</em>) の後に、 + モジュールはファイルの中身をインクルードします。 + <code>SuppressHTMLPreamble</code> オプションは、 + この挙動を無効にできて、 + モジュールがヘッダーファイルの中身から表示を始めます。 + この場合、ヘッダーファイルは正しい HTML + 命令を含んでいなければなりません。 + ヘッダーファイルが存在しない場合は、プリアンブルは通常通り + 生成されます。</dd> <dt><a name="indexoptions.suppressicon" id="indexoptions.suppressicon">SuppressIcon</a> (<em>Apache - 2.0.23 $B0J9_(B</em>)</dt> + 2.0.23 以降</em>)</dt> <dd> - $B$3$l$O(B FancyIndexing $B$N0lMw$+$i%"%$%3%s$r>C5n$7$^$9!#(B - <code>SuppressIcon</code> $B$H(B <code>SuppressRules</code> - $B$HAH9g$o$;$k$3$H$K$h$C$F@5$7$$(B HTML 3.2 $B$N=PNO$,F@$i$l$^$9!#(B - $B@5$7$$(B HTML 3.2 $B=PNO$O!":G=*5,3J$K$*$$$F(B <code>img</code> $B$H(B <code>hr</code> - $B$,(B <code>pre</code> $B%V%m%C%/$KF~$k(B (FancyIndexing $B0lMw$G=q<0$K;H$o$l$F$$$^$9(B) - $B$3$H$r6X;_$7$F$$$^$9!#(B</dd> + これは FancyIndexing の一覧からアイコンを消去します。 + <code>SuppressIcon</code> と <code>SuppressRules</code> + と組合わせることによって正しい HTML 3.2 の出力が得られます。 + 正しい HTML 3.2 出力は、最終規格において <code>img</code> と <code>hr</code> + が <code>pre</code> ブロックに入る (FancyIndexing 一覧で書式に使われています) + ことを禁止しています。</dd> <dt><a name="indexoptions.suppresslastmodified" id="indexoptions.suppresslastmodified" >SuppressLastModified</a></dt> - <dd>FancyIndexing $B0lMw$K$*$$$F:G=*99?7F|;~$NI=<($r>C5n$7$^$9!#(B</dd> + <dd>FancyIndexing 一覧において最終更新日時の表示を消去します。</dd> <dt><a name="indexoptions.suppressrules" id="indexoptions.suppressrules">SuppressRules</a> - (<em>Apache 2.0.23 $B0J9_(B</em>) </dt> + (<em>Apache 2.0.23 以降</em>) </dt> - <dd>$B%G%#%l%/%H%j0lMw$K$*$$$F?eJ?6h@Z$j@~(B (<code>hr</code> $B%?%0(B) $B$r>C5n$7$^$9!#(B - <code>SuppressIcon</code> $B$H(B <code>SuppressRules</code> - $B$HAH9g$o$;$k$3$H$K$h$C$F@5$7$$(B HTML 3.2 $B$N=PNO$,F@$i$l$^$9!#(B - $B@5$7$$(B HTML 3.2 $B=PNO$O!":G=*5,3J$K$*$$$F(B <code>img</code> $B$H(B <code>hr</code> - $B$,(B <code>pre</code> $B%V%m%C%/$KF~$k(B (FancyIndexing $B0lMw$G=q<0$K;H$o$l$F$$$^$9(B) - $B$3$H$r6X;_$7$F$$$^$9!#(B</dd> + <dd>ディレクトリ一覧において水平区切り線 (<code>hr</code> タグ) を消去します。 + <code>SuppressIcon</code> と <code>SuppressRules</code> + と組合わせることによって正しい HTML 3.2 の出力が得られます。 + 正しい HTML 3.2 出力は、最終規格において <code>img</code> と <code>hr</code> + が <code>pre</code> ブロックに入る (FancyIndexing 一覧で書式に使われています) + ことを禁止しています。</dd> <dt><a name="indexoptions.suppresssize" id="indexoptions.suppresssize">SuppressSize</a></dt> - <dd>FancyIndexing $B0lMw$K$*$$$F%U%!%$%k%5%$%:$NI=<($r>C5n$7$^$9!#(B</dd> + <dd>FancyIndexing 一覧においてファイルサイズの表示を消去します。</dd> <dt><a name="indexoptions.trackmodified" id="indexoptions.trackmodified">TrackModified</a> - (<em>Apache 2.0.23 $B0J9_(B</em>)</dt> - - <dd>$B$3$l$O(B HTTP $B%X%C%@Cf$K!"(B - $B%j%9%H$5$l$?%G%#%l%/%H%j$N:G=*99?7F|$d(B ETag $BCM$r4^$a$^$9!#(B - $B$3$l$O!"%*%Z%l!<%F%#%s%0%7%9%F%`$d%U%!%$%k%7%9%F%`$,(B - $BE,@Z$J(B stat() $B$NJV$jCM$rJV$9>l9g$K$N$_M-8z$G$9!#(B - $B$$$/$D$+$N(B UNIX $B%7%9%F%`!"(BOS2 $B$N(B JFS $B$d(B Win32 $B$N(B NTFS - $B%\%j%e!<%`$O$=$&$J$C$F$$$^$9!#(B - $BNc$($P!"(BOS2 $B$H(B Win32 FAT $B%\%j%e!<%`$O$=$&$G$O$"$j$^$;$s!#(B - $B$3$N5!G=$,M-8z$K$J$k$H!"%/%i%$%"%s%H$d%W%m%-%7$O(B - <code>HEAD</code> $B%j%/%(%9%H$r9T$&$3$H$K$h$C$F!"(B - $B%U%!%$%k0lMw$NJQ2=$rDI@W$9$k$3$H$,$G$-$k$h$&$K$J$j$^$9!#(B - $B$$$/$D$+$N%*%Z%l!<%F%#%s%0%7%9%F%`$O!"?75,%U%!%$%k$d(B - $B0\F0%U%!%$%k$O@5$7$/DI@W$9$k$1$l$I$b!"(B - $B%G%#%l%/%H%jCf$N%U%!%$%k$N%5%$%:$dF|IU$ODI@W$J$$$H$$$&$3$H$K(B - $BCm0U$7$F$/$@$5$$!#(B - <strong>$B4{$KB8:_$9$k%U%!%$%k$N%5%$%:$dF|IU$N%9%?%s%W$,JQ2=$7$F$b!"(B - $BA4$F$N(B Unix $B%W%i%C%H%[!<%`$G$O!"(B - $B:G=*99?7F|%X%C%@!<$r99?7$7$^$;$s!#(B</strong> - $B$b$7$3$l$,=EMW$G$"$l$P!"(B - $B$3$N%*%W%7%g%s$rL58z$N$^$^$K$7$F$/$@$5$$!#(B</dd> + (<em>Apache 2.0.23 以降</em>)</dt> + + <dd>これは HTTP ヘッダ中に、 + リストされたディレクトリの最終更新日や ETag 値を含めます。 + これは、オペレーティングシステムやファイルシステムが + 適切な stat() の返り値を返す場合にのみ有効です。 + いくつかの UNIX システム、OS2 の JFS や Win32 の NTFS + ボリュームはそうなっています。 + 例えば、OS2 と Win32 FAT ボリュームはそうではありません。 + この機能が有効になると、クライアントやプロキシは + <code>HEAD</code> リクエストを行うことによって、 + ファイル一覧の変化を追跡することができるようになります。 + いくつかのオペレーティングシステムは、新規ファイルや + 移動ファイルは正しく追跡するけれども、 + ディレクトリ中のファイルのサイズや日付は追跡ないということに + 注意してください。 + <strong>既に存在するファイルのサイズや日付のスタンプが変化しても、 + 全ての Unix プラットホームでは、 + 最終更新日ヘッダーを更新しません。</strong> + もしこれが重要であれば、 + このオプションを無効のままにしてください。</dd> <dt><a name="indexoptions.versionsort" id="indexoptions.versionsort">VersionSort</a> - (<em>Apache 2.0a3 $B0J9_(B</em>)</dt> + (<em>Apache 2.0a3 以降</em>)</dt> - <dd><code>VersionSort</code> $B%-!<%o!<%I$O%P!<%8%g%sHV9f$r4^$s$@%U%!%$%k$,(B - $B<+A3$JJ}K!$G%=!<%H$5$l$k$h$&$K$7$^$9!#(B - $BJ8;zNs$ODL>oDL$j%=!<%H$5$l!"(B - $B$=$l0J30$N!"@bL@$dL>A0Cf$N?t$H$J$kItJ,J8;zNs$O(B - $B$=$N?tCM$GHf3S$5$l$^$9!#(B + <dd><code>VersionSort</code> キーワードはバージョン番号を含んだファイルが + 自然な方法でソートされるようにします。 + 文字列は通常通りソートされ、 + それ以外の、説明や名前中の数となる部分文字列は + その数値で比較されます。 - <example><title>$BNc(B:</title> + <example><title>例:</title> foo-1.7<br /> foo-1.7.2<br /> foo-1.7.12<br /> @@ -844,7 +844,7 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> foo-1.12 </example> - <p>$BHV9f$,(B 0 $B$+$i;O$^$k>l9g$O!"C<?t$H9M$($i$l$^$9(B</p> + <p>番号が 0 から始まる場合は、端数と考えられます</p> <example> foo-1.001<br /> @@ -856,28 +856,28 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> <dt><a name="indexoptions.xhtml" id="indexoptions.xhtml">XHTML</a> - (<em>Apache 2.0.49 $B0J9_(B</em>)</dt> + (<em>Apache 2.0.49 以降</em>)</dt> - <dd><code>XHTML</code> $B%-!<%o!<%I$r;XDj$9$k$H!"(B<module>mod_autoindex</module> - $B$O(B HTML 3.2 $B$NBe$o$j$K(B XHTML 1.0 $B$N%3!<%I$r=PNO$9$k$h$&$K$J$j$^$9!#(B</dd> + <dd><code>XHTML</code> キーワードを指定すると、<module>mod_autoindex</module> + は HTML 3.2 の代わりに XHTML 1.0 のコードを出力するようになります。</dd> </dl> <!-- XXX: we should consider to allow sections inside <usage> this would require some xslt changes... --> - <dl><dt>$BA}8:;XDj$G$-$k(B IndexOptions</dt> + <dl><dt>増減指定できる IndexOptions</dt> <dd> - <p>Apache 1.3.3 $B$G$O!"(B + <p>Apache 1.3.3 では、 <directive>IndexOptions</directive> - $B%G%#%l%/%F%#%V$N07$$$G4v$D$+$NBg$-$JJQ2=$,F3F~$5$l$^$7$?!#(B - $BFC$K!"(B</p> + ディレクティブの扱いで幾つかの大きな変化が導入されました。 + 特に、</p> <ul> - <li>$B0l$D$N%G%#%l%/%H%j$KBP$9$kJ#?t$N(B + <li>一つのディレクトリに対する複数の <directive>IndexOptions</directive> - $B%G%#%l%/%F%#%V$O!"8=:_$G$O0l$D$K%^!<%8$5$l$^$9!#(B - $B>e$NNc$N7k2L$O!"(B + ディレクティブは、現在では一つにマージされます。 + 上の例の結果は、 <example> <Directory /foo> @@ -888,42 +888,42 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> </Directory> </example> - <p>$B$HF10l$K$J$j$^$9!#(B</p> + <p>と同一になります。</p> <example> IndexOptions HTMLTable SuppressColumnsorting </example> </li> - <li>$BA}8:9=J8(B - (<em>$B$9$J$o$A(B</em>$B!"(B'+' $B$d(B '-' - $B$N@\F,<-$,IU$/%-!<%o!<%I(B) $B$NDI2C!#(B</li> + <li>増減構文 + (<em>すなわち</em>、'+' や '-' + の接頭辞が付くキーワード) の追加。</li> </ul> - <p>'+' $B$d(B '-' $B@\F,<-$NIU$$$?%-!<%o!<%I$K=P2q$&$H$=$l$O!"(B - $B$=$N;~E@$G$N(B <directive>IndexOptions</directive> - $B$N@_Dj(B ($B$3$l$O>eN.$N%G%#%l%/%H%j$r<u$17Q$.$^$9(B) - $B$KBP$7$FE,1~$5$l$^$9!#(B - $B$7$+$7$J$,$i!"@\F,<-$NIU$+$J$$%-!<%o!<%I$,=hM}$5$l$?>l9g$O!"(B - $B<u$17Q$$$@%*%W%7%g%sA4$F$H$=$l$^$G=P2q$C$?A}8:@_DjA4$F$,(B - $B>C5n$5$l$^$9!#<!$NNc$r9M$($F$_$F$/$@$5$$(B:</p> + <p>'+' や '-' 接頭辞の付いたキーワードに出会うとそれは、 + その時点での <directive>IndexOptions</directive> + の設定 (これは上流のディレクトリを受け継ぎます) + に対して適応されます。 + しかしながら、接頭辞の付かないキーワードが処理された場合は、 + 受け継いだオプション全てとそれまで出会った増減設定全てが + 消去されます。次の例を考えてみてください:</p> <example> IndexOptions +ScanHTMLTitles -IconsAreLinks FancyIndexing<br /> IndexOptions +SuppressSize </example> - <p>$BCf?H$N8z2L$O(B + <p>中身の効果は <code>IndexOptions FancyIndexing +SuppressSize</code> - $B$HF10l$G$9!#(B - $B@\F,<-$NIU$+$J$$(B <code>FancyIndexing</code> - $B$G$=$l0JA0$NA}8:%-!<%o!<%I$rL58z$K$5$l$F!"(B - $B$=$N8e$NN_@Q$,;O$^$k$+$i$G$9!#(B</p> - - <p>$BL5>r7o$K(B <directive>IndexOptions</directive> - $B$r$"$k%G%#%l%/%H%j$G@_Dj$9$k$3$H$K$h$C$F(B - $B7Q>5$7$?@_Dj$r>C5n$7$F!"(B<code>+</code> $B$d(B <code>-</code> - $B@\F,<-$NIU$+$J$$%-!<%o!<%I$G@_Dj$7$F$/$@$5$$!#(B</p> + と同一です。 + 接頭辞の付かない <code>FancyIndexing</code> + でそれ以前の増減キーワードを無効にされて、 + その後の累積が始まるからです。</p> + + <p>無条件に <directive>IndexOptions</directive> + をあるディレクトリで設定することによって + 継承した設定を消去して、<code>+</code> や <code>-</code> + 接頭辞の付かないキーワードで設定してください。</p> </dd> </dl> </usage> @@ -932,7 +932,7 @@ MIME $B%?%$%W$K$h$C$FA*Br(B</description> <directivesynopsis> <name>IndexOrderDefault</name> <description> -$B%G%#%l%/%H%j%$%s%G%C%/%9$NI8=`$N=gHVIU$1$r@_Dj(B</description> +ディレクトリインデックスの標準の順番付けを設定</description> <syntax>IndexOrderDefault Ascending|Descending Name|Date|Size|Description</syntax> <default>IndexOrderDefault Ascending Name</default> @@ -943,34 +943,34 @@ Name|Date|Size|Description</syntax> <override>Indexes</override> <usage> - <p><directive>IndexOrderDefault</directive> $B%G%#%l%/%F%#%V$O(B + <p><directive>IndexOrderDefault</directive> ディレクティブは <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> - $B%$%s%G%C%/%9%*%W%7%g%s$HJ;$;$FMQ$$$l$l$^$9!#(B - $B%G%U%)%k%H$G$O!"(BFancyIndexing - $B$N%G%#%l%/%H%j0lMw$O%U%!%$%kL>$N>:=g$GI=<($5$l$^$9!#(B + インデックスオプションと併せて用いれれます。 + デフォルトでは、FancyIndexing + のディレクトリ一覧はファイル名の昇順で表示されます。 <directive>IndexOrderDefault</directive> - $B$G!"=i4|>uBV$NI=<(=gHV$rJQ$($k$3$H$,$G$-$^$9!#(B</p> + で、初期状態の表示順番を変えることができます。</p> <p><directive>IndexOrderDefault</directive> - $B$OFs$D$N0z?t$r$H$j$^$9!#0l$DL\$O%=!<%H$NJ}8~$r;X<($9$k(B - <code>Ascending</code> $B$+(B <code>Descending</code> $B$N$$$:$l$+$G$9!#(B - $BFs$DL\$N0z?t$O(B <code>Name</code>, <code>Date</code>, - <code>Size</code> $B$+(B <code>Description</code> - $B$N$$$:$l$+0l$D$N%-!<%o!<%I$G$"$C$F!"%W%i%$%^%j%-!<$r;XDj$7$^$9!#(B - $BFs$DL\$N%-!<$O(B<em>$B>o$K(B</em>$B%U%!%$%kL>$N>:=g$K$J$j$^$9!#(B</p> - - <p>$B$3$N%G%#%l%/%F%#%V$H(B <code><a + は二つの引数をとります。一つ目はソートの方向を指示する + <code>Ascending</code> か <code>Descending</code> のいずれかです。 + 二つ目の引数は <code>Name</code>, <code>Date</code>, + <code>Size</code> か <code>Description</code> + のいずれか一つのキーワードであって、プライマリキーを指定します。 + 二つ目のキーは<em>常に</em>ファイル名の昇順になります。</p> + + <p>このディレクティブと <code><a href="#indexoptions.suppresscolumnsorting">SuppressColumnSorting</a></code> - $B%$%s%G%C%/%9%*%W%7%g%s$H$rAH$_9g$o$;$k$3$H$G!"(B - $B%G%#%l%/%H%j0lMw$r$"$kFCDj$N=gHV$G$N$_I=<($9$k$h$&$K$G$-$^$9!#(B - $B$3$l$O!"(B - $B%/%i%$%"%s%H$,JL$N=gHV$G%G%#%l%/%H%j0lMw$r%j%/%(%9%H$9$k$3$H$rKI$.$^$9!#(B</p> + インデックスオプションとを組み合わせることで、 + ディレクトリ一覧をある特定の順番でのみ表示するようにできます。 + これは、 + クライアントが別の順番でディレクトリ一覧をリクエストすることを防ぎます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>IndexStyleSheet</name> -<description>$B%G%#%l%/%H%j%$%s%G%C%/%9$K(B CSS $B%9%?%$%k%7!<%H$rDI2C$9$k(B</description> +<description>ディレクトリインデックスに CSS スタイルシートを追加する</description> <syntax>IndexStyleSheet <var>url-path</var></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context> @@ -978,11 +978,11 @@ Name|Date|Size|Description</syntax> <override>Indexes</override> <usage> - <p><directive>IndexStyleSheet</directive> $B%G%#%l%/%F%#%V$O(B - $B%$%s%G%C%/%9I=<($K;HMQ$5$l$k(B CSS $B$N%U%!%$%kL>$r@_Dj$7$^$9!#(B + <p><directive>IndexStyleSheet</directive> ディレクティブは + インデックス表示に使用される CSS のファイル名を設定します。 </p> <example> - <title>$BNc(B</title> + <title>例</title> IndexStyleSheet "/css/style.css" </example> </usage> @@ -990,7 +990,7 @@ Name|Date|Size|Description</syntax> <directivesynopsis> <name>ReadmeName</name> -<description>$B%$%s%G%C%/%90lMw$N:G8e$KA^F~$5$l$k%U%!%$%k$NL>A0(B</description> +<description>インデックス一覧の最後に挿入されるファイルの名前</description> <syntax>ReadmeName <var>filename</var></syntax> <contextlist><context>server config</context> <context>virtual host</context> @@ -999,25 +999,25 @@ Name|Date|Size|Description</syntax> <override>Indexes</override> <usage> - <p><directive>ReadmeName</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%$%s%G%C%/%9$N=*$o$j$KIU$12C$($i$l$k%U%!%$%k$NL>A0$r@_Dj$7$^$9!#(B - <var>filename</var> $B$OA^F~$9$k%U%!%$%k$NL>A0$G!"(B - $B0lMw$N9T$o$l$F$$$k0LCV$+$iAjBPE*$J$b$N$H$7$F2r<a$5$l$^$9!#(B - <var>filename</var> $B$,%9%i%C%7%e$G;O$^$k>l9g$O!"(B + <p><directive>ReadmeName</directive> ディレクティブは、 + インデックスの終わりに付け加えられるファイルの名前を設定します。 + <var>filename</var> は挿入するファイルの名前で、 + 一覧の行われている位置から相対的なものとして解釈されます。 + <var>filename</var> がスラッシュで始まる場合は、 <directive module="core">DocumentRoot</directive> - $B$+$i$NAjBP%Q%9$H$J$j$^$9!#(B</p> + からの相対パスとなります。</p> - <example><title>$BNc(B</title> + <example><title>例</title> ReadmeName FOOTER.html </example> - <example><title>$BNc(B 2</title> + <example><title>例 2</title> ReadmeName /include/FOOTER.html </example> - <p>$B$h$j>\:Y$K$^$G$3$N5sF0$K$D$$$F5-=R$7$F$$$k(B <directive + <p>より詳細にまでこの挙動について記述している <directive module="mod_autoindex">HeaderName</directive> - $B$b$4Mw2<$5$$!#(B</p> + もご覧下さい。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_cache.xml.ja b/docs/manual/mod/mod_cache.xml.ja index a45bedde0f..c01a0d5a85 100644 --- a/docs/manual/mod/mod_cache.xml.ja +++ b/docs/manual/mod/mod_cache.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:504183 (outdated) --> @@ -23,44 +23,44 @@ <modulesynopsis metafile="mod_cache.xml.meta"> <name>mod_cache</name> -<description>URI $B$r%-!<$K$7$?%3%s%F%s%D$N%-%c%C%7%e(B</description> +<description>URI をキーにしたコンテンツのキャッシュ</description> <status>Extension</status> <sourcefile>mod_cache.c</sourcefile> <identifier>cache_module</identifier> <summary> <note type="warning"> - $B$3$l$O<B83E*$J%b%8%e!<%k$G$9!#J8=q$b$^$@3+H/Cf$G$9(B... + これは実験的なモジュールです。文書もまだ開発中です... </note> - <p><module>mod_cache</module> $B$O%m!<%+%k$N%3%s%F%s%D$d%W%m%-%7$5$l$?(B - $B%3%s%F%s%D$r%-%c%C%7%e$9$k$?$a$K;H$o$l$k(B <a - href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> $B=`5r$N(B - HTTP $B%3%s%F%s%D%-%c%C%7%e$r<BAu$7$F$$$^$9!#(B<module>mod_cache</module> - $B$NF0:n$K$O%9%H%l!<%8$r4IM}$9$k%b%8%e!<%k$,I,MW$G$9!#I8=`(B - Apache $BG[I[$K$OFs$D%9%H%l!<%84IM}%b%8%e!<%k$,4^$^$l$F$$$^$9(B:</p> + <p><module>mod_cache</module> はローカルのコンテンツやプロキシされた + コンテンツをキャッシュするために使われる <a + href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> 準拠の + HTTP コンテンツキャッシュを実装しています。<module>mod_cache</module> + の動作にはストレージを管理するモジュールが必要です。標準 + Apache 配布には二つストレージ管理モジュールが含まれています:</p> <dl> <dt><module>mod_disk_cache</module></dt> - <dd>$B%G%#%9%/$r;HMQ$7$?%9%H%l!<%84IM}5!9=$r<BAu$7$F$$$^$9!#(B</dd> + <dd>ディスクを使用したストレージ管理機構を実装しています。</dd> <dt><module>mod_mem_cache</module></dt> - <dd>$B%a%b%j$r;HMQ$7$?%9%H%l!<%84IM}5!9=$r<BAu$7$F$$$^$9!#(B - <module>mod_mem_cache</module> $B$O<!$NFs$D$N%b!<%I$N$I$A$i$+$GF0:n$9$k(B - $B$h$&$K@_Dj$G$-$^$9(B: $B%*!<%W%s$5$l$F$$$k%U%!%$%k5-=R;R$r%-%c%C%7%e$9$k%b!<%I$+!"(B - $B%R!<%W>e$G$N%*%V%8%'%/%H$N<+BN$r%-%c%C%7%e$r$9$k%b!<%I$G$9!#(B - <module>mod_mem_cache</module> $B$O%m!<%+%k$G@8@.$5$l$k%3%s%F%s%D$d!"(B - <module>mod_proxy</module> $B$,(B - <directive module="mod_proxy">ProxyPass</directive> $B$r;H$C$F@_Dj$5$l$F$$$k(B - $B$H$-$N(B ($B$D$^$j(B<dfn>$B%j%P!<%9%W%m%-%7(B</dfn> $B$G$N(B) $B%P%C%/%(%s%I%5!<%P$N(B - $B%3%s%F%s%D$r%-%c%C%7%e$9$k$N$K;H$($^$9!#(B</dd> + <dd>メモリを使用したストレージ管理機構を実装しています。 + <module>mod_mem_cache</module> は次の二つのモードのどちらかで動作する + ように設定できます: オープンされているファイル記述子をキャッシュするモードか、 + ヒープ上でのオブジェクトの自体をキャッシュをするモードです。 + <module>mod_mem_cache</module> はローカルで生成されるコンテンツや、 + <module>mod_proxy</module> が + <directive module="mod_proxy">ProxyPass</directive> を使って設定されている + ときの (つまり<dfn>リバースプロキシ</dfn> での) バックエンドサーバの + コンテンツをキャッシュするのに使えます。</dd> </dl> - <p>$B%3%s%F%s%D$N%-%c%C%7%e$X$NJ]B8$H<hF@$O(B URI $B$K4p$E$$$?%-!<$,;H$o$l$^$9!#(B - $B%"%/%;%9J]8n$N$+$1$i$l$F$$$k%3%s%F%s%D$O%-%c%C%7%e$5$l$^$;$s!#(B</p> + <p>コンテンツのキャッシュへの保存と取得は URI に基づいたキーが使われます。 + アクセス保護のかけられているコンテンツはキャッシュされません。</p> </summary> -<section id="related"><title>$B4XO"%b%8%e!<%k$H%G%#%l%/%F%#%V(B</title> +<section id="related"><title>関連モジュールとディレクティブ</title> <related> <modulelist> <module>mod_disk_cache</module> @@ -83,7 +83,7 @@ </related> </section> -<section id="sampleconf"><title>$B%5%s%W%k@_Dj(B</title> +<section id="sampleconf"><title>サンプル設定</title> <example><title>Sample httpd.conf</title> #<br /> # Sample Cache Configuration<br /> @@ -121,30 +121,30 @@ <directivesynopsis> <name>CacheEnable</name> -<description>$B;XDj$7$?%9%H%l!<%84IM}J}<0$r;H$C$F$N%-%c%C%7%e$rM-8z$K$9$k(B</description> +<description>指定したストレージ管理方式を使ってのキャッシュを有効にする</description> <syntax>CacheEnable <var>cache_type</var> <var>url-string</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>CacheEnable</directive> $B%G%#%l%/%F%#%V$G(B <module>mod_cache</module> - $B%b%8%e!<%k$,(B <var>url-string</var> $B0J2<$N(B URL $B$r%-%c%C%7%e$9$k$h$&$K$7$^$9!#(B - $B%-%c%C%7%e%9%H%l!<%84IM}J}<0$O(B <var>cache_type</var> $B0z?t$G;XDj$7$^$9!#(B - <var>cache_type</var> <code> mem</code> $B$G!"(B - <module>mod_mem_cache</module> $B$G<BAu$5$l$F$$$k%a%b%j$r;H$C$?%9%H%l!<%8(B - $B4IM}J}<0$r;H$&$h$&$K(B <module>mod_cache</module> $B$K;X<($7$^$9!#(B - <var>cache_type</var> <code>disk</code> $B$G!"(B - <module>mod_disk_cache</module> $B$G<BAu$5$l$F$$$k%G%#%9%/$r;H$C$?%9%H%l!<%8(B - $B4IM}$r;H$&$h$&$K(B <module>mod_cache</module> $B$K;X<($7$^$9!#(B - <var>cache_type</var> <code>fd</code> $B$O(B <module>mod_cache</module> $B$K(B - <module>mod_mem_cache</module> $B$K$h$j<BAu$5$l$F$$$k%U%!%$%k5-=R;R$N(B - $B%-%c%C%7%e$r;H$&$h$&$K;X<($7$^$9!#(B</p> - - <p>($B2<$NNc$N$h$&$K(B) <directive>CacheEnable</directive> $B%G%#%l%/%F%#%V$N(B - URL $B6u4V$,=EJ#$7$F$$$k$H$-$O!"3:Ev$9$k%9%H%l!<%8J}<0$r=g$K;n$7$F!"(B - $B<B:]$K%j%/%(%9%H$N=hM}$,$G$-$k$H!"$=$NJ}<0$G=hM}$7$^$9!#(B - $B%9%H%l!<%84IM}J}<0$,<B9T$5$l$k=gHV$O@_Dj%U%!%$%kCf$N(B - <directive>CacheEnable</directive> $B$N=gHV$K$h$j7hDj$5$l$^$9!#(B</p> + <p><directive>CacheEnable</directive> ディレクティブで <module>mod_cache</module> + モジュールが <var>url-string</var> 以下の URL をキャッシュするようにします。 + キャッシュストレージ管理方式は <var>cache_type</var> 引数で指定します。 + <var>cache_type</var> <code> mem</code> で、 + <module>mod_mem_cache</module> で実装されているメモリを使ったストレージ + 管理方式を使うように <module>mod_cache</module> に指示します。 + <var>cache_type</var> <code>disk</code> で、 + <module>mod_disk_cache</module> で実装されているディスクを使ったストレージ + 管理を使うように <module>mod_cache</module> に指示します。 + <var>cache_type</var> <code>fd</code> は <module>mod_cache</module> に + <module>mod_mem_cache</module> により実装されているファイル記述子の + キャッシュを使うように指示します。</p> + + <p>(下の例のように) <directive>CacheEnable</directive> ディレクティブの + URL 空間が重複しているときは、該当するストレージ方式を順に試して、 + 実際にリクエストの処理ができると、その方式で処理します。 + ストレージ管理方式が実行される順番は設定ファイル中の + <directive>CacheEnable</directive> の順番により決定されます。</p> <example> CacheEnable mem /manual<br /> @@ -156,17 +156,17 @@ <directivesynopsis> <name>CacheDisable</name> -<description>$BFCDj$N(B URL $B$r%-%c%C%7%e$7$J$$(B</description> +<description>特定の URL をキャッシュしない</description> <syntax>CacheDisable <var> url-string</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>CacheDisable</directive> $B%G%#%l%/%F%#%V$G(B - <module>mod_cache</module> $B%b%8%e!<%k$,(B <var>url-string</var> $B0J2<$N(B - URL $B$r%-%c%C%7%e(B<em>$B$7$J$$(B</em>$B$h$&$K$7$^$9!#(B</p> + <p><directive>CacheDisable</directive> ディレクティブで + <module>mod_cache</module> モジュールが <var>url-string</var> 以下の + URL をキャッシュ<em>しない</em>ようにします。</p> - <example><title>$BNc(B</title> + <example><title>例</title> CacheDisable /local_files </example> </usage> @@ -174,18 +174,18 @@ </directivesynopsis> <directivesynopsis> <name>CacheMaxExpire</name> -<description>$B%I%-%e%a%s%H$r%-%c%C%7%e$9$k:GBg;~4V$rIC?t$G8=$7$?$b$N(B</description> +<description>ドキュメントをキャッシュする最大時間を秒数で現したもの</description> <syntax>CacheMaxExpire <var>seconds</var></syntax> -<default>CacheMaxExpire 86400 ($B0lF|(B)</default> +<default>CacheMaxExpire 86400 (一日)</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>CacheMaxExpire</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%-%c%C%7%e$9$k(B HTTP $B%I%-%e%a%s%H$r!"85$N%5!<%P$KLd$$9g$o$;$J$$$^$^:GBg2?IC(B - $BJ];}$7$F$b$h$$$+$r;XDj$7$^$9!#$D$^$j!"%I%-%e%a%s%H$O:GBg$G$3$NIC?t4V$V$s8E$/(B - $B$J$k$3$H$K$J$j$^$9!#$3$N:GBgCM$O!"(B($BLuCm(B:$B%l%9%]%s%9Cf$G(B)$B%I%-%e%a%s%H$H6&$K(B - $B%I%-%e%a%s%H$N4|F|$,Ds6!$5$l$F$$$k>l9g$G$bE,MQ$5$l$^$9!#(B</p> + <p><directive>CacheMaxExpire</directive> ディレクティブは、 + キャッシュする HTTP ドキュメントを、元のサーバに問い合わせないまま最大何秒 + 保持してもよいかを指定します。つまり、ドキュメントは最大でこの秒数間ぶん古く + なることになります。この最大値は、(訳注:レスポンス中で)ドキュメントと共に + ドキュメントの期日が提供されている場合でも適用されます。</p> <example> CacheMaxExpire 604800 @@ -195,17 +195,17 @@ <directivesynopsis> <name>CacheDefaultExpire</name> -<description>$B4|F|$,;XDj$5$l$F$$$J$$$H$-$K%I%-%e%a%s%H$r%-%c%C%7%e$9$k%G%U%)%k%H$N4|4V(B</description> +<description>期日が指定されていないときにドキュメントをキャッシュするデフォルトの期間</description> <syntax>CacheDefaultExpire <var>seconds</var></syntax> -<default>CacheDefaultExpire 3600 (1$B;~4V(B)</default> +<default>CacheDefaultExpire 3600 (1時間)</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>CacheDefaultExpire</directive> $B%G%#%l%/%F%#%V$O!"%I%-%e%a%s%H$K(B - $BM-8z4|8B(B (expiry) $B$d:G=*=$@5;~9o(B (last-modified) $B$,;XDj$5$l$F$$$J$$>l9g$N(B - $B%G%U%)%k%H$N;~4V$r;XDj$7$^$9!#(B<directive>CacheMaxExpire</directive> - $B%G%#%l%/%F%#%V$G;XDj$5$l$?CM$O$3$N@_Dj$r>e=q$-(B<em>$B$7$^$;$s(B</em>$B!#(B</p> + <p><directive>CacheDefaultExpire</directive> ディレクティブは、ドキュメントに + 有効期限 (expiry) や最終修正時刻 (last-modified) が指定されていない場合の + デフォルトの時間を指定します。<directive>CacheMaxExpire</directive> + ディレクティブで指定された値はこの設定を上書き<em>しません</em>。</p> <example> CacheDefaultExpire 86400 @@ -215,21 +215,21 @@ <directivesynopsis> <name>CacheIgnoreNoLastMod</name> -<description>$B1~Ez$K(B Last Modified $B$,L5$/$F$b5$$K$7$J$$$h$&$K$9$k(B</description> +<description>応答に Last Modified が無くても気にしないようにする</description> <syntax>CacheIgnoreNoLastMod On|Off</syntax> <default>CacheIgnoreNoLastMod Off</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$BDL>o!"(BLast-Modified $B$K$h$k:G=*=$@5;~9o$NL5$$%I%-%e%a%s%H$O%-%c%C%7%e(B - $B$5$l$^$;$s!#(B($BNc$($P(B <module>mod_include</module> $B$K$h$k=hM}$N$H$-$J$I$K(B) - Last-Modified $B;~9o$,>C5n$5$l$?$j!"$=$b$=$b:G=i$+$iDs6!$5$l$F$$$J$$(B - $B>u67$,$"$j$^$9!#(B<directive>CacheIgnoreNoLastMod</directive> - $B%G%#%l%/%F%#%V$r;H$&$H!"(BLast-Modified $BF|;~$,;XDj$5$l$F$$$J$$(B - $B%I%-%e%a%s%H$G$b%-%c%C%7%e$9$k$h$&$K;XDj$G$-$^$9!#%I%-%e%a%s%H$K(B - $B:G=*=$@5;~9o(B (Last-Modified) $BM-8z4|8B(B (expiry) $B$,$J$$>l9g$O!"M-8z4|8B$N(B - $B@8@.$K(B <directive>CacheDefaultExpire</directive> $B$,;H$o$l$^$9!#(B</p> + <p>通常、Last-Modified による最終修正時刻の無いドキュメントはキャッシュ + されません。(例えば <module>mod_include</module> による処理のときなどに) + Last-Modified 時刻が消去されたり、そもそも最初から提供されていない + 状況があります。<directive>CacheIgnoreNoLastMod</directive> + ディレクティブを使うと、Last-Modified 日時が指定されていない + ドキュメントでもキャッシュするように指定できます。ドキュメントに + 最終修正時刻 (Last-Modified) 有効期限 (expiry) がない場合は、有効期限の + 生成に <directive>CacheDefaultExpire</directive> が使われます。</p> <example> CacheIgnoreNoLastMod On @@ -239,31 +239,31 @@ <directivesynopsis> <name>CacheIgnoreCacheControl</name> -<description>$B%-%c%C%7%e$5$l$F$$$k%3%s%F%s%D$rJV$5$J$$$h$&$K%/%i%$%"%s%H$+$i(B -$B%j%/%(%9%H$5$l$F$bL5;k$9$k(B</description> +<description>キャッシュされているコンテンツを返さないようにクライアントから +リクエストされても無視する</description> <syntax>CacheIgnoreCacheControl On|Off</syntax> <default>CacheIgnoreCacheControl Off</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>Cache-Control: no-cache $B%X%C%@$d(B Pragma: no-store $B%X%C%@$N$"$k%j%/%(%9%H$K(B - $BBP$7$F$O!"DL>o%-%c%C%7%e$r;H$$$^$;$s!#(B<directive>CacheIgnoreCacheControl</directive> - $B%G%#%l%/%F%#%V$r;H$&$H!"$3$NF0:n$r>e=q$-$G$-$^$9!#(B - <directive>CacheIgnoreCacheControl</directive> On $B$H$9$k$H!"(B - $B%j%/%(%9%H$K(B no-cache $B$H$$$&CM$,$"$C$F$b!"%-%c%C%7%e$r;H$C$F%I%-%e%a%s%H$r(B - $BJV$9$h$&$K$J$j$^$9!#G'>Z$rI,MW$H$9$k%I%-%e%a%s%H$O(B<em>$B7h$7$F(B</em> - $B%-%c%C%7%e$5$l$^$;$s!#(B</p> + <p>Cache-Control: no-cache ヘッダや Pragma: no-store ヘッダのあるリクエストに + 対しては、通常キャッシュを使いません。<directive>CacheIgnoreCacheControl</directive> + ディレクティブを使うと、この動作を上書きできます。 + <directive>CacheIgnoreCacheControl</directive> On とすると、 + リクエストに no-cache という値があっても、キャッシュを使ってドキュメントを + 返すようになります。認証を必要とするドキュメントは<em>決して</em> + キャッシュされません。</p> <example> CacheIgnoreCacheControl On </example> - <note type="warning"><title>$B7Y9p(B</title> - $B$3$N%G%#%l%/%F%#%V$r;H$&$H!"%I%-%e%a%s%H<hF@;~$K%-%c%C%7%e$r;H$o$J$$$h$&$K(B - $B%/%i%$%"%s%H$,%j%/%(%9%H$7$F$$$k$K$b$+$+$o$i$:!"%-%c%C%7%e$r(B - $B;H$&$h$&$K$J$j$^$9!#$=$N7k2L!"(B - $B8E$$%3%s%F%s%D$,Aw$i$lB3$1$k$3$H$K$J$C$F$7$^$&$+$b$7$l$^$;$s!#(B + <note type="warning"><title>警告</title> + このディレクティブを使うと、ドキュメント取得時にキャッシュを使わないように + クライアントがリクエストしているにもかかわらず、キャッシュを + 使うようになります。その結果、 + 古いコンテンツが送られ続けることになってしまうかもしれません。 </note> </usage> <seealso><directive module="mod_cache">CacheStorePrivate</directive></seealso> @@ -272,8 +272,8 @@ <directivesynopsis> <name>CacheLastModifiedFactor</name> -<description>LastModified $B$NF|IU$K4p$E$$$FM-8z4|8B(B (expiry) -$B$r7W;;$9$k$?$a$N=E$_$r;XDj$9$k(B +<description>LastModified の日付に基づいて有効期限 (expiry) +を計算するための重みを指定する </description> <syntax>CacheLastModifiedFactor <var>float</var></syntax> <default>CacheLastModifiedFactor 0.1</default> @@ -281,24 +281,24 @@ </contextlist> <usage> - <p>$B%I%-%e%a%s%H$K(B Last-Modified $B$NF|IU$,L5$$$1$l$I$bM-8z4|8B(B (expiry) - $B$NF|IU$,$"$k$H$$$&$H$-$K!"M-8z4|8B$r:G=*=$@5;~9o$+$i$N7P2a;~4V$H$7$F(B - $B7W;;$9$k$h$&$K$G$-$^$9!#M-8z4|8B$r<!$N7W;;<0$K=>$C$F@8@.$9$k$N$G$9$,!"(B - $B$=$N$H$-$K;H$o$l$k(B <var>factor</var> $B$r(B - <directive>CacheLastModifiedFactor</directive> $B%G%#%l%/%F%#%V$G;XDj$7$^$9!#(B + <p>ドキュメントに Last-Modified の日付が無いけれども有効期限 (expiry) + の日付があるというときに、有効期限を最終修正時刻からの経過時間として + 計算するようにできます。有効期限を次の計算式に従って生成するのですが、 + そのときに使われる <var>factor</var> を + <directive>CacheLastModifiedFactor</directive> ディレクティブで指定します。 </p> <p><code>expiry-period = time-since-last-modified-date * <var>factor</var> expiry-date = current-date + expiry-period</code></p> - <p>$BNc$($P!"%I%-%e%a%s%H$,(B 10 $B;~4VA0$K:G8e$K=$@5$5$l$F$$$F!"(B - <var>factor</var> $B$,(B 0.1 $B$G$"$l$P!"4|F|$O(B 10*0.1 = 1 $B;~4V$K(B - $B@_Dj$5$l$^$9!#8=:_;~9o$,(B 3:00pm $B$G$"$l$P!"7W;;$5$l$?4|F|$O(B - 3:00pm + 1hour = 4:00pm $B$K$J$j$^$9!#(B</p> + <p>例えば、ドキュメントが 10 時間前に最後に修正されていて、 + <var>factor</var> が 0.1 であれば、期日は 10*0.1 = 1 時間に + 設定されます。現在時刻が 3:00pm であれば、計算された期日は + 3:00pm + 1hour = 4:00pm になります。</p> - <p>$B4|F|$,(B <directive>CacheMaxExpire</directive> $B$G@_Dj$5$l$F$$$kCM(B - $B$h$jBg$-$/$J$C$F$7$^$C$F$$$k>l9g$O!"(B<directive>CacheMaxExpire</directive> - $B$N@_DjCM$,M%@h$5$l$^$9!#(B</p> + <p>期日が <directive>CacheMaxExpire</directive> で設定されている値 + より大きくなってしまっている場合は、<directive>CacheMaxExpire</directive> + の設定値が優先されます。</p> <example> CacheLastModifiedFactor 0.5 @@ -308,7 +308,7 @@ <directivesynopsis> <name>CacheIgnoreHeaders</name> -<description>$B;XDj$5$l$?(B HTTP $B%X%C%@$r%-%c%C%7%e$KJ]B8$7$J$$!#(B +<description>指定された HTTP ヘッダをキャッシュに保存しない。 </description> <syntax>CacheIgnoreHeaders <var>header-string</var> [<var>header-string</var>] ...</syntax> <default>CacheIgnoreHeaders None</default> @@ -316,10 +316,10 @@ </contextlist> <usage> - <p>RFC 2616 $B$K$h$k$H!"(Bhop-by-hop HTTP $B%X%C%@$O%-%c%C%7%e$K$OJ]4I$5$l$^$;$s!#(B - $B0J2<$N%X%C%@$O(B hop-by-hop $B%X%C%@$K3:Ev$7$^$9$N$G!"(B + <p>RFC 2616 によると、hop-by-hop HTTP ヘッダはキャッシュには保管されません。 + 以下のヘッダは hop-by-hop ヘッダに該当しますので、 <directive>CacheIgnoreHeaders</directive> - $B$N@_Dj$K(B<em>$B4X78$J$/(B</em>$B%-%c%C%7%e$K$OJ]4I$5$l$^$;$s(B:</p> + の設定に<em>関係なく</em>キャッシュには保管されません:</p> <ul> <li><code>Connection</code></li> <li><code>Keep-Alive</code></li> @@ -331,58 +331,58 @@ <li><code>Upgrade</code></li> </ul> - <p><directive>CacheIgnoreHeaders</directive> $B$G(B - $B%-%c%C%7%e$KJ]4I$7$J$$DI2C$N(B HTTP $B%X%C%@$r;XDj$7$^$9!#(B - $BNc$($P!"%/%C%-!<$r%-%c%C%7%e$KJ]4I$7$J$$$h$&$K$7$?J}$,$h$$>l9g$b(B - $B$"$k$G$7$g$&!#(B</p> + <p><directive>CacheIgnoreHeaders</directive> で + キャッシュに保管しない追加の HTTP ヘッダを指定します。 + 例えば、クッキーをキャッシュに保管しないようにした方がよい場合も + あるでしょう。</p> - <p><directive>CacheIgnoreHeaders</directive> $B$N0z?t$O!"(B - $B%-%c%C%7%e$KJ]4I$7$J$$(B HTTP $B%X%C%@$r6uGr6h@Z$j$K$7$?%j%9%H7A<0$G$9!#(B - $B%-%c%C%7%e$KJ]4I$7$J$$%X%C%@$,(B hop-by-hop $B%X%C%@$@$1$N>l9g(B - (RFC 2616 $B=`5r$NF0:n$N$H$-(B) $B$O!"(B - <directive>CacheIgnoreHeaders</directive> $B$r(B <code>None</code> - $B$K@_Dj$G$-$^$9!#(B</p> + <p><directive>CacheIgnoreHeaders</directive> の引数は、 + キャッシュに保管しない HTTP ヘッダを空白区切りにしたリスト形式です。 + キャッシュに保管しないヘッダが hop-by-hop ヘッダだけの場合 + (RFC 2616 準拠の動作のとき) は、 + <directive>CacheIgnoreHeaders</directive> を <code>None</code> + に設定できます。</p> - <example><title>$BNc(B 1</title> + <example><title>例 1</title> CacheIgnoreHeaders Set-Cookie </example> - <example><title>$BNc(B 2</title> + <example><title>例 2</title> CacheIgnoreHeaders None </example> - <note type="warning"><title>$B7Y9p(B:</title> - <code>Expires</code> $B$N$h$&$JE,@Z$N%-%c%C%7%e4IM}$N$?$a$KI,MW$J(B - $B%X%C%@$,(B <directive>CacheIgnoreHeaders</directive> $B$N@_Dj$K$h$j(B - $BJ]4I$5$l$F$$$J$$$H$-$O!"(Bmod_cache $B$NF0:n$ODj5A$5$l$F$$$^$;$s!#(B + <note type="warning"><title>警告:</title> + <code>Expires</code> のような適切のキャッシュ管理のために必要な + ヘッダが <directive>CacheIgnoreHeaders</directive> の設定により + 保管されていないときは、mod_cache の動作は定義されていません。 </note> </usage> </directivesynopsis> <directivesynopsis> <name>CacheStorePrivate</name> -<description>private $B$H;XDj$5$l$F$$$k%l%9%]%s%9$N%-%c%C%7%e$r;n$_$k!#(B</description> +<description>private と指定されているレスポンスのキャッシュを試みる。</description> <syntax>CacheStorePrivate On|Off</syntax> <default>CacheStorePrivate Off</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$BDL>o(B Cache-Control: private $B%X%C%@$N$D$$$F$$$k%l%9%]%s%9$O(B - $B%-%c%C%7%e$5$l$^$;$s!#(B<directive>CacheStorePrivate</directive> - $B%G%#%l%/%F%#%V$G$3$N5sF0$r>e=q$-$G$-$^$9!#(B - <directive>CacheStorePrivate</directive> On $B$G(B private $B%X%C%@$N$D$$$F$$$k(B - $B%j%=!<%9$KBP$7$F$b%-%c%C%7%e$r;n$_$k$h$&$K$J$j$^$9!#(B - $B$?$@$7G'>Z$N5a$a$i$l$k%j%=!<%9$O(B <em>$B7h$7$F(B</em> $B%-%c%C%7%e$5$l$^$;$s!#(B</p> + <p>通常 Cache-Control: private ヘッダのついているレスポンスは + キャッシュされません。<directive>CacheStorePrivate</directive> + ディレクティブでこの挙動を上書きできます。 + <directive>CacheStorePrivate</directive> On で private ヘッダのついている + リソースに対してもキャッシュを試みるようになります。 + ただし認証の求められるリソースは <em>決して</em> キャッシュされません。</p> <example> CacheStorePrivate On </example> - <note type="warning"><title>$B7Y9p(B:</title> - $B>eN.%5!<%P$,%-%c%C%7%e$7$J$$$h$&$K;XDj$7$F$-$F$b!"(B - $B$=$l$rL5;k$7$F%-%c%C%7%e$9$k$h$&$K$J$j$^$9!#(B - $BK>$^$7$$5sF0$K$J$k$N$O!"K\Ev$K(B 'private' $B$J%-%c%C%7%e$K$D$$$F$N$_$G$7$g$&!#(B + <note type="warning"><title>警告:</title> + 上流サーバがキャッシュしないように指定してきても、 + それを無視してキャッシュするようになります。 + 望ましい挙動になるのは、本当に 'private' なキャッシュについてのみでしょう。 </note> </usage> <seealso><directive module="mod_cache">CacheIgnoreCacheControl</directive></seealso> @@ -391,30 +391,30 @@ <directivesynopsis> <name>CacheStoreNoStore</name> -<description>no-store $B$H;XDj$5$l$F$$$k%l%9%]%s%9$N%-%c%C%7%e$r;n$_$k!#(B</description> +<description>no-store と指定されているレスポンスのキャッシュを試みる。</description> <syntax>CacheStoreNoStore On|Off</syntax> <default>CacheStoreNoStore Off</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$BDL>o(B Cache-Control: no-store $B%X%C%@$N$D$$$F$$$k%l%9%]%s%9$O(B - $B%-%c%C%7%e$5$l$^$;$s!#(B<directive>CacheStoreNoCache</directive> - $B%G%#%l%/%F%#%V$G$3$N5sF0$r>e=q$-$G$-$^$9!#(B - <directive>CacheStoreNoCache</directive> On $B$G(B no-store $B%X%C%@$N$D$$$F$$$k(B - $B%j%=!<%9$KBP$7$F$b%-%c%C%7%e$r;n$_$k$h$&$K$J$j$^$9!#(B - $B$?$@$7G'>Z$N5a$a$i$l$k%j%=!<%9$O(B <em>$B7h$7$F(B</em> $B%-%c%C%7%e$5$l$^$;$s!#(B</p> + <p>通常 Cache-Control: no-store ヘッダのついているレスポンスは + キャッシュされません。<directive>CacheStoreNoCache</directive> + ディレクティブでこの挙動を上書きできます。 + <directive>CacheStoreNoCache</directive> On で no-store ヘッダのついている + リソースに対してもキャッシュを試みるようになります。 + ただし認証の求められるリソースは <em>決して</em> キャッシュされません。</p> <example> CacheStoreNoStore On </example> - <note type="warning"><title>$B7Y9p(B:</title> - RFC 2616 $B$K5-:\$5$l$F$$$k$h$&$K(B no-store $B%G%#%l%/%F%#%V$O!"(B - "$BITCm0U$K$h$k5!L)>pJs$NO31L$d;DN1(B ($B%P%C%/%"%C%W%F!<%WEy(B) $B$rKI$0(B" - $BL\E*$G;H$o$l$^$9$,!"$3$N%*%W%7%g%s$rM-8z$K$9$k$H!"(B - $B5!L)>pJs$rJ];}$9$k$3$H$K$J$C$F$7$^$$$^$9!#(B - $B$G$9$N$G!"$3$3$G7Y9p$7$F$*$-$^$9!#(B + <note type="warning"><title>警告:</title> + RFC 2616 に記載されているように no-store ディレクティブは、 + "不注意による機密情報の漏洩や残留 (バックアップテープ等) を防ぐ" + 目的で使われますが、このオプションを有効にすると、 + 機密情報を保持することになってしまいます。 + ですので、ここで警告しておきます。 </note> </usage> <seealso><directive module="mod_cache">CacheIgnoreCacheControl</directive></seealso> diff --git a/docs/manual/mod/mod_cgi.xml.ja b/docs/manual/mod/mod_cgi.xml.ja index ff0877741a..52b8f17961 100644 --- a/docs/manual/mod/mod_cgi.xml.ja +++ b/docs/manual/mod/mod_cgi.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:558718 (outdated) --> @@ -23,7 +23,7 @@ <modulesynopsis metafile="mod_cgi.xml.meta"> <name>mod_cgi</name> -<description>CGI $B%9%/%j%W%H$N<B9T(B</description> +<description>CGI スクリプトの実行</description> <status>Base</status> <sourcefile>mod_cgi.c</sourcefile> <identifier>cgi_module</identifier> @@ -33,132 +33,132 @@ is the link to howto/cgi not sufficient? -nd --> - <p>Mime $B%?%$%W$,(B <code>application/x-httpd-cgi</code> - $B$G$"$k$+!"%O%s%I%i(B <code>cgi-script</code> (Apache 1.1 $B0J9_(B) - $B$,;XDj$5$l$F$$$k%U%!%$%k$O(B CGI $B%9%/%j%W%H$H$7$F07$o$l!"(B - $B%5!<%P$K$h$j<B9T$5$l!"$=$N=PNO$,%/%i%$%"%s%H$KJV$5$l$^$9!#(B - $B%U%!%$%k$O!"(B<directive module="mod_mime">AddType</directive> - $B%G%#%l%/%F%#%V$K;XDj$5$l$?(B $B3HD%;R$rL>A0$K4^$`$+!"(B + <p>Mime タイプが <code>application/x-httpd-cgi</code> + であるか、ハンドラ <code>cgi-script</code> (Apache 1.1 以降) + が指定されているファイルは CGI スクリプトとして扱われ、 + サーバにより実行され、その出力がクライアントに返されます。 + ファイルは、<directive module="mod_mime">AddType</directive> + ディレクティブに指定された 拡張子を名前に含むか、 <directive module="mod_alias">ScriptAlias</directive> - $B%G%#%l%/%H%j$KB8:_$9$k$3$H$K$h$j$3$N%?%$%W$K$J$j$^$9!#(B</p> + ディレクトリに存在することによりこのタイプになります。</p> - <p>$B%5!<%P$,(B CGI $B%9%/%j%W%H$r<B9T$9$k$H$-$K$O!"(B + <p>サーバが CGI スクリプトを実行するときには、 <code>DOCUMENT_ROOT</code> - $B$H8F$P$l$kJQ?t$r4D6-$KDI2C$7$^$9!#$3$NJQ?t$O(B + と呼ばれる変数を環境に追加します。この変数は <directive module="core">DocumentRoot</directive> - $B$NCM$rJ];}$7$^$9!#(B</p> + の値を保持します。</p> - <p>Apache $B$G(B CGI $B%9%/%j%W%H$r;HMQ$9$k$?$a$N%$%s%H%m%@%/%7%g%s$O!"(B - <a href="../howto/cgi.html">CGI $B$K$h$kF0E*%3%s%F%s%D(B</a> - $B$r;2>H$7$F$/$@$5$$!#(B</p> + <p>Apache で CGI スクリプトを使用するためのイントロダクションは、 + <a href="../howto/cgi.html">CGI による動的コンテンツ</a> + を参照してください。</p> - <p>Unix $B$G%^%k%A%9%l%C%I$N(B MPM $B$r;H$C$F$$$k>l9g$O!"$3$N%b%8%e!<%k$N(B - $BBe$o$j$K(B <module>mod_cgid</module> $B$r;H$&I,MW$,$"$j$^$9!#(B - $B%f!<%6%l%Y%k$G$O$3$NFs$D$N%b%8%e!<%k$OK\<AE*$K$OF10l$G$9!#(B</p> + <p>Unix でマルチスレッドの MPM を使っている場合は、このモジュールの + 代わりに <module>mod_cgid</module> を使う必要があります。 + ユーザレベルではこの二つのモジュールは本質的には同一です。</p> </summary> <seealso><directive module="core">AcceptPathInfo</directive></seealso> <seealso><directive module="core">Options</directive></seealso> <seealso><directive module="mod_alias">ScriptAlias</directive></seealso> <seealso><directive module="mod_mime">AddHandler</directive></seealso> -<seealso><a href="../suexec.html">CGI $B%W%m%0%i%`$rJL$N%f!<%6(B ID $B$G<B9T$9$k(B</a></seealso> -<seealso><a href="http://hoohoo.ncsa.uiuc.edu/cgi/">CGI $B5,3J=q(B</a></seealso> +<seealso><a href="../suexec.html">CGI プログラムを別のユーザ ID で実行する</a></seealso> +<seealso><a href="http://hoohoo.ncsa.uiuc.edu/cgi/">CGI 規格書</a></seealso> -<section id="env"><title>CGI $B4D6-JQ?t(B</title> - <p>$B%5!<%P$O(B <a href="http://hoohoo.ncsa.uiuc.edu/cgi/">CGI - $B5,3J(B</a> $B$G7h$a$i$l$F$$$k(B CGI - $B4D6-JQ?t$r@_Dj$7$^$9!#0J2<$N$b$N$O!">r7oIU$-$G@_Dj$5$l$^$9!#(B</p> +<section id="env"><title>CGI 環境変数</title> + <p>サーバは <a href="http://hoohoo.ncsa.uiuc.edu/cgi/">CGI + 規格</a> で決められている CGI + 環境変数を設定します。以下のものは、条件付きで設定されます。</p> <dl> <dt>PATH_INFO</dt> - <dd>$B$3$l$O(B <directive module="core" - >AcceptPathInfo</directive> $B%G%#%l%/%F%#%V$,L@<(E*$K(B <code>off</code> - $B$K@_Dj$5$l$F$$$k>l9g$O@_Dj$5$l$^$;$s!#%G%U%)%k%H$N!"(B - <directive>AcceptPathInfo</directive> $B$,(B - $B;XDj$5$l$F$$$J$$$H$-$N?6$kIq$$$G$O!"(B<module>mod_cgi</module> $B$O%Q%9>pJs(B - (URI $B$N%9%/%j%W%H$N%U%!%$%kL>$N8e$KB3$/(B <code>/more/path/info</code>) $B$r(B - $B<u$1IU$1$^$9$,!"%3%"$O%5!<%P$O%Q%9>pJs$N$"$k%j%/%(%9%H$K(B - $BBP$7$F(B 404 NOT FOUND $B%(%i!<$rJV$7$^$9!#(B<directive>AcceptPathInfo</directive> - $B%G%#%l%/%F%#%V$r(B - $B>JN,$9$k$H!"(B<module>mod_cgi</module> $B$X$N%j%/%(%9%H$KBP$7$F(B - <code>On</code> $B$r(B - $B@_Dj$7$?$N$HF1$88z2L$K$J$j$^$9!#(B</dd> + <dd>これは <directive module="core" + >AcceptPathInfo</directive> ディレクティブが明示的に <code>off</code> + に設定されている場合は設定されません。デフォルトの、 + <directive>AcceptPathInfo</directive> が + 指定されていないときの振る舞いでは、<module>mod_cgi</module> はパス情報 + (URI のスクリプトのファイル名の後に続く <code>/more/path/info</code>) を + 受け付けますが、コアはサーバはパス情報のあるリクエストに + 対して 404 NOT FOUND エラーを返します。<directive>AcceptPathInfo</directive> + ディレクティブを + 省略すると、<module>mod_cgi</module> へのリクエストに対して + <code>On</code> を + 設定したのと同じ効果になります。</dd> <dt>REMOTE_HOST</dt> <dd><directive module="core">HostnameLookups</directive> - $B$,(B <code>on</code> ($B%G%U%)%k%H$G$O(B off $B$G$9(B) - $B$G!"%"%/%;%9$7$F$$$k%[%9%H$N%"%I%l%9$N(B DNS - $B$N5U0z$-$,<B:]$K%[%9%HL>$r8+$D$1$?$H$-$K$N$_@_Dj$5$l$^$9!#(B</dd> + が <code>on</code> (デフォルトでは off です) + で、アクセスしているホストのアドレスの DNS + の逆引きが実際にホスト名を見つけたときにのみ設定されます。</dd> <dt>REMOTE_IDENT</dt> <dd><directive module="core">IdentityCheck</directive> - $B$,(B <code>on</code> $B$K@_Dj$5$l$F$$$F!"%"%/%;%9$7$F$$$k%[%9%H$,(B - ident $B%W%m%H%3%k$r%5%]!<%H$7$F$$$k$H$-$K$N$_@_Dj$5$l$^$9!#(B - $B$3$l$O4JC1$K56$k$3$H$,$G$-!"%/%i%$%"%s%H$H%5!<%P$N4V$K(B - $B%W%m%-%7$,$"$l$P$^$C$?$/Lr$KN)$?$J$$$N$G!"(B - $B$3$NJQ?t$NCM$O?.MQ$G$-$J$$$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B + が <code>on</code> に設定されていて、アクセスしているホストが + ident プロトコルをサポートしているときにのみ設定されます。 + これは簡単に偽ることができ、クライアントとサーバの間に + プロキシがあればまったく役に立たないので、 + この変数の値は信用できないということに注意してください。 </dd> <dt>REMOTE_USER</dt> <dd>CGI - $B%9%/%j%W%H$KG'>Z$,I,MW$J$H$-$K$N$_@_Dj$5$l$^$9!#(B</dd> + スクリプトに認証が必要なときにのみ設定されます。</dd> </dl> </section> -<section id="cgi-debug"><title>CGI $B$N%G%P%C%0(B</title> - <p>CGI $B%9%/%j%W%H$N%G%P%C%0$O!"@5$7$/F0:n$7$F$$$J$$%9%/%j%W%H$N=PNO(B - ($BI8=`=PNO$H%(%i!<(B) - $B$rD4$Y$k$3$H$,$G$-$J$$$?$a$K!"Fq$7$$>uBV$,B3$$$F$$$^$7$?!#(B - $B$3$l$i$N(B Apache 1.2 $B0J9_$K$"$k(B - $B%G%#%l%/%F%#%V$O$h$j>\:Y$J%(%i!<$N%m%0<}=8$rDs6!$7$^$9!#(B</p> +<section id="cgi-debug"><title>CGI のデバッグ</title> + <p>CGI スクリプトのデバッグは、正しく動作していないスクリプトの出力 + (標準出力とエラー) + を調べることができないために、難しい状態が続いていました。 + これらの Apache 1.2 以降にある + ディレクティブはより詳細なエラーのログ収集を提供します。</p> - <section><title>CGI $B%m%0%U%!%$%k$N=q<0(B</title> - <p>$B@_Dj$5$l$F$$$k$H$-$K$O!"(BCGI $B%(%i!<%m%0$OE,@Z$KF0:n$7$J$$$9$Y$F$N(B - CGI $B$r%m%0<}=8$7$^$9!#$=$l$>$l$N@5$7$/F0:n$7$J$$(B CGI - $B%9%/%j%W%H$O(B $BJ#?t$N9T$K$o$?$k>pJs$,%m%0<}=8$5$l$^$9!#:G=i$N(B - 2 $B9T$O>o$K0J2<$N=q<0$G$9(B:</p> + <section><title>CGI ログファイルの書式</title> + <p>設定されているときには、CGI エラーログは適切に動作しないすべての + CGI をログ収集します。それぞれの正しく動作しない CGI + スクリプトは 複数の行にわたる情報がログ収集されます。最初の + 2 行は常に以下の書式です:</p> <example> %% [<var>time</var>] <var>request-line</var><br /> %% <var>HTTP-status</var> <var>CGI-script-filename</var> </example> - <p>$B%(%i!<$,!"(BCGI $B%9%/%j%W%H$,<B9T$G$-$J$$$H$$$&$b$N$G$"$k>l9g$O!"(B - $B%m%0%U%!%$%k$O$5$i$K$b$&(B 2 $B9T=q$+$l$^$9(B:</p> + <p>エラーが、CGI スクリプトが実行できないというものである場合は、 + ログファイルはさらにもう 2 行書かれます:</p> <example> %%error<br /> <var>error-message</var> </example> - <p>$B$=$&$G$O$J$/!"%(%i!<$,@5$7$/$J$$%X%C%@>pJs$rJV$97k2L$G$"$k>l9g(B - ($B%9%/%j%W%H$N%P%0$G$"$k$3$H$,$h$/$"$j$^$9(B)$B!"(B - $B0J2<$N>pJs$,%m%0<}=8$5$l$^$9(B:</p> + <p>そうではなく、エラーが正しくないヘッダ情報を返す結果である場合 + (スクリプトのバグであることがよくあります)、 + 以下の情報がログ収集されます:</p> <example> %request<br /> - <var>$B<u$1<h$C$?$9$Y$F$N(B HTTP $B%j%/%(%9%H%X%C%@(B</var><br /> - <var>($B$b$7$"$l$P(B) POST $B$d(B PUT $B$NCf?H(B</var><br /> + <var>受け取ったすべての HTTP リクエストヘッダ</var><br /> + <var>(もしあれば) POST や PUT の中身</var><br /> %response<br /> - <var>CGI $B%9%/%j%W%H$K$h$j=PNO$5$l$?$9$Y$F$N%X%C%@(B</var><br /> + <var>CGI スクリプトにより出力されたすべてのヘッダ</var><br /> %stdout<br /> - <var>CGI $BI8=`=PNO(B</var><br /> + <var>CGI 標準出力</var><br /> %stderr<br /> - <var>CGI $BI8=`%(%i!<(B</var><br /> + <var>CGI 標準エラー</var><br /> </example> - <p>($B%9%/%j%W%H$,I8=`=PNO$dI8=`%(%i!<$K2?$b=PNO$7$J$+$C$?>l9g$O!"(B - %stdout $B$d(B %stderr $B$O$"$j$^$;$s(B)$B!#(B</p> + <p>(スクリプトが標準出力や標準エラーに何も出力しなかった場合は、 + %stdout や %stderr はありません)。</p> </section> </section> <directivesynopsis> <name>ScriptLog</name> -<description>CGI $B%9%/%j%W%H$N%(%i!<%m%0%U%!%$%k$N>l=j(B</description> +<description>CGI スクリプトのエラーログファイルの場所</description> <syntax>ScriptLog <var>file-path</var></syntax> <contextlist><context>server config</context> <context>virtual host</context> @@ -167,40 +167,40 @@ </modulelist> <usage> - <p><directive>ScriptLog</directive> $B%G%#%l%/%F%#%V$O(B CGI $B%9%/%j%W%H$N(B - $B%(%i!<%m%0%U%!%$%k$r@_Dj$7$^$9!#(B<directive>ScriptLog</directive> $B$,(B - $B@_Dj$5$l$F$$$J$$$H$-$O!"(B - $B%(%i!<%m%0$O:n@.$5$l$^$;$s!#@_Dj$5$l$F$$$k$H$-$O!"(BCGI - $B$N%(%i!<$O$9$Y$F0z?t$H$7$FM?$($i$l$F$$$k%U%!%$%kL>$K%m%0$5$l$^$9!#(B - $BAjBP%Q%9$G;XDj$5$l$F$$$k$H$-$O!"(B - <directive module="core">ServerRoot</directive>$B$+$i$NAjBP%Q%9$H$7$F(B - $B07$o$l$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p><directive>ScriptLog</directive> ディレクティブは CGI スクリプトの + エラーログファイルを設定します。<directive>ScriptLog</directive> が + 設定されていないときは、 + エラーログは作成されません。設定されているときは、CGI + のエラーはすべて引数として与えられているファイル名にログされます。 + 相対パスで指定されているときは、 + <directive module="core">ServerRoot</directive>からの相対パスとして + 扱われます。</p> + + <example><title>例</title> ScriptLog logs/cgi_log </example> - <p>$B$3$N%m%0$O;R%W%m%;%9$,<B9T$5$l$F$$$k%f!<%6$H$7$F%*!<%W%s$5$l$^$9!#(B - <em>$B$9$J$o$A(B</em>$B!"(B<directive module="mpm_commmon" - >User</directive> $B%G%#%l%/%F%#%V$G;XDj$5$l$?(B - $B%f!<%6$G$9!#$3$l$O!"%9%/%j%W%H%m%0$,=q$+$l$k%G%#%l%/%H%j$,$=$N%f!<%6$G(B - $B=q$-9~$_2DG=$+!"%9%/%j%W%H%U%!%$%k$,<jF0$G:n@.$5$l!"$=$N%f!<%6$G(B - $B=q$-9~$_2DG=$K$J$C$F$$$kI,MW$,$"$k$H$$$&$3$H$G$9!#%9%/%j%W%H%m%0$r(B - $B%"%/%;%9%m%0$J$I$N$?$a$N%m%0%G%#%l%/%H%j$K=q$+$l$k$h$&$K$7$?$H$-$O!"(B - $B$=$N%G%#%l%/%H%j$r;R%W%m%;%9$r<B9T$7$F$$$k%f!<%6$N8"8B$G(B - $B=q$-9~$_2DG=$K$O(B<strong>$B$7$J$$(B</strong>$B$h$&$K$7$F$/$@$5$$!#(B</p> - - <p>$B%9%/%j%W%H$N%m%0<}=8$O(B CGI $B%9%/%j%W%H$r=q$/$H$-$N(B - $B%G%P%C%0MQ$N5!G=$H$7$F0U?^$5$l$F$$$F!"DL>o$N%5!<%P$G(B - $B>o$K;HMQ$5$l$k$h$&$K$O0U?^$5$l$F$$$J$$$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B - $BB.EY$d8zN($O:GE,2=$5$l$F$*$i$:!"@_7W$5$l$?0J30$NJ}K!$G;HMQ$5$l$k$H(B - $B%;%-%e%j%F%#$NLdBj$,$"$k$+$b$7$l$^$;$s!#(B</p> + <p>このログは子プロセスが実行されているユーザとしてオープンされます。 + <em>すなわち</em>、<directive module="mpm_commmon" + >User</directive> ディレクティブで指定された + ユーザです。これは、スクリプトログが書かれるディレクトリがそのユーザで + 書き込み可能か、スクリプトファイルが手動で作成され、そのユーザで + 書き込み可能になっている必要があるということです。スクリプトログを + アクセスログなどのためのログディレクトリに書かれるようにしたときは、 + そのディレクトリを子プロセスを実行しているユーザの権限で + 書き込み可能には<strong>しない</strong>ようにしてください。</p> + + <p>スクリプトのログ収集は CGI スクリプトを書くときの + デバッグ用の機能として意図されていて、通常のサーバで + 常に使用されるようには意図されていないということに注意してください。 + 速度や効率は最適化されておらず、設計された以外の方法で使用されると + セキュリティの問題があるかもしれません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ScriptLogLength</name> -<description>CGI $B%9%/%j%W%H$N%m%0%U%!%$%k$NBg$-$5$N>e8B(B</description> +<description>CGI スクリプトのログファイルの大きさの上限</description> <syntax>ScriptLogLength <var>bytes</var></syntax> <default>ScriptLogLength 10385760</default> <contextlist><context>server config</context> @@ -210,20 +210,20 @@ </modulelist> <usage> - <p><directive>ScriptLogLength</directive> $B$O(B CGI $B%9%/%j%W%H$N%m%0%U%!%$%k(B - $B$NBg$-$5$r@)8B$9$k$?$a$K;HMQ$9$k$3$H$,$G$-$^$9!#%m%0%U%!%$%k$O(B - CGI $B$N%(%i!<Kh$KBgNL$N>pJs(B ($B%j%/%(%9%H$N$9$Y$F$N%X%C%@!"(B - $B$9$Y$F$N=PNO(B)$B$r%m%0$7$^$9$N$G!"$9$0$KBg$-$J%U%!%$%k$K$J$j$^$9!#(B - $B$3$NBg$-$5$N@)8B$,$J$$$3$H$K$h$kLdBj$rKI$0$?$a$K!"(B - $B$3$N%G%#%l%/%F%#%V$r;H$C$F(B CGI $B$N%m%0%U%!%$%k$N(B - $B:GBg$N%U%!%$%k%5%$%:$r@_Dj$9$k$3$H$,$G$-$^$9!#(B - $B%U%!%$%k$,$3$NBg$-$5$rD6$($?>l9g$O!"$=$l0J>e$O=q$-9~$^$l$^$;$s!#(B</p> + <p><directive>ScriptLogLength</directive> は CGI スクリプトのログファイル + の大きさを制限するために使用することができます。ログファイルは + CGI のエラー毎に大量の情報 (リクエストのすべてのヘッダ、 + すべての出力)をログしますので、すぐに大きなファイルになります。 + この大きさの制限がないことによる問題を防ぐために、 + このディレクティブを使って CGI のログファイルの + 最大のファイルサイズを設定することができます。 + ファイルがこの大きさを超えた場合は、それ以上は書き込まれません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ScriptLogBuffer</name> -<description>$B%9%/%j%W%H%m%0$K5-O?$5$l$k(B PUT $B$d(B POST $B%j%/%(%9%H$NFbMF$N>e8B(B</description> +<description>スクリプトログに記録される PUT や POST リクエストの内容の上限</description> <syntax>ScriptLogBuffer <em>bytes</em></syntax> <default>ScriptLogBuffer 1024</default> <contextlist><context>server config</context> @@ -233,11 +233,11 @@ </modulelist> <usage> - <p>$BBg$-$JK\BN$r<u$1<h$C$?$H$-$K%m%0%U%!%$%k$,$9$0$KBg$-$/$J$j$9$.$k(B - $BLdBj$rHr$1$k$?$a$K!"%U%!%$%k$K%m%0<}=8$5$l$k(B PUT $B$H(B POST - $B$NK\BN$NBg$-$5$O@)8B$5$l$F$$$^$9!#%G%U%)%k%H$G$O!"(B1024 - $B%P%$%H$^$G$,%m%0<}=8$5$l$^$9$,!"(B - $B$3$N%G%#%l%/%F%#%V$O$=$l$rJQ99$9$k$3$H$,$G$-$^$9!#(B + <p>大きな本体を受け取ったときにログファイルがすぐに大きくなりすぎる + 問題を避けるために、ファイルにログ収集される PUT と POST + の本体の大きさは制限されています。デフォルトでは、1024 + バイトまでがログ収集されますが、 + このディレクティブはそれを変更することができます。 </p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_cgid.xml.ja b/docs/manual/mod/mod_cgid.xml.ja index 2b4af8bfa3..89a92899c9 100644 --- a/docs/manual/mod/mod_cgid.xml.ja +++ b/docs/manual/mod/mod_cgid.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 425124 --> @@ -23,37 +23,37 @@ <modulesynopsis metafile="mod_cgid.xml.meta"> <name>mod_cgid</name> -<description>$B30It(B CGI $B%G!<%b%s$r;H$C$?(B CGI $B%9%/%j%W%H$N<B9T(B</description> +<description>外部 CGI デーモンを使った CGI スクリプトの実行</description> <status>Base</status> <sourcefile>mod_cgid.c</sourcefile> <identifier>cgid_module</identifier> -<compatibility>Unix $B$N%9%l%C%I(B MPM $B$N$_(B</compatibility> +<compatibility>Unix のスレッド MPM のみ</compatibility> <summary> - <p>$B:GE,2=$,;\$5$l$F$$$k$3$H$H!"0J2<$G@bL@$5$l$F$$$kDI2C$N(B <directive - module="mod_cgid">ScriptSock</directive> $B%G%#%l%/%F%#%V$r=|$$$F$O!"(B - <module>mod_cgid</module> $B$O(B <module>mod_cgi</module> $B$HF1MM$N(B - $BF0:n$r$7$^$9!#(B<strong>Apache $B$H(B CGI $B$K4X$9$k>\:Y$O(B - <module>mod_cgi</module> $B$N35MW$rFI$s$G$/$@$5$$!#(B</strong></p> - - <p>Unix $B%*%Z%l!<%F%#%s%0%7%9%F%`$NCf$K$O!"%^%k%A%9%l%C%I$N%5!<%P$+$i(B - $B%W%m%;%9$r(B fork $B$9$k$N$,Hs>o$K%3%9%H$N9b$$F0:n$K$J$C$F$$$k$b$N$,$"$j$^$9!#(B - $BM}M3$O!"?7$7$$%W%m%;%9$,?F%W%m%;%9$N%9%l%C%I$9$Y$F$rJ#@=$9$k$+$i$G$9!#(B - $B3F(B CGI $B5/F0;~$K$3$N%3%9%H$,$+$+$k$N$rKI$0$?$a$K!"(B<module>mod_cgid</module> - $B$O;R%W%m%;%9$r(B fork $B$7$F(B CGI $B%9%/%j%W%H$r<B9T$9$k$?$a$N(B - $B30It%G!<%b%s$r<B9T$7$^$9!#(B - $B<g%5!<%P$O(B unix $B%I%a%$%s%=%1%C%H$r;H$C$F$3$N%G!<%b%s$HDL?.$7$^$9!#(B</p> - - <p>$B%3%s%Q%$%k;~$K%^%k%A%9%l%C%I(B MPM $B$,A*$P$l$?$H$-$O(B - <module>mod_cgi</module> $B$NBe$o$j$KI,$:$3$N%b%8%e!<%k$,;HMQ$5$l$^$9!#(B - $B%f!<%6$N%l%Y%k$G$O$3$N%b%8%e!<%k$N@_Dj$HF0:n$O(B <module>mod_cgi</module> - $B$H$^$C$?$/F1$8$G$9!#M#0l$NNc30$O(B <code>ScriptSock</code> $B%G%#%l%/%F%#%V$N(B - $BDI2C$G!"$3$N%G%#%l%/%F%#%V$O(B CGI $B%G!<%b%s$H$NDL?.MQ$N%=%1%C%H$NL>A0$r(B - $B;XDj$7$^$9!#(B</p> + <p>最適化が施されていることと、以下で説明されている追加の <directive + module="mod_cgid">ScriptSock</directive> ディレクティブを除いては、 + <module>mod_cgid</module> は <module>mod_cgi</module> と同様の + 動作をします。<strong>Apache と CGI に関する詳細は + <module>mod_cgi</module> の概要を読んでください。</strong></p> + + <p>Unix オペレーティングシステムの中には、マルチスレッドのサーバから + プロセスを fork するのが非常にコストの高い動作になっているものがあります。 + 理由は、新しいプロセスが親プロセスのスレッドすべてを複製するからです。 + 各 CGI 起動時にこのコストがかかるのを防ぐために、<module>mod_cgid</module> + は子プロセスを fork して CGI スクリプトを実行するための + 外部デーモンを実行します。 + 主サーバは unix ドメインソケットを使ってこのデーモンと通信します。</p> + + <p>コンパイル時にマルチスレッド MPM が選ばれたときは + <module>mod_cgi</module> の代わりに必ずこのモジュールが使用されます。 + ユーザのレベルではこのモジュールの設定と動作は <module>mod_cgi</module> + とまったく同じです。唯一の例外は <code>ScriptSock</code> ディレクティブの + 追加で、このディレクティブは CGI デーモンとの通信用のソケットの名前を + 指定します。</p> </summary> <seealso><module>mod_cgi</module></seealso> -<seealso><a href="../suexec.html">CGI $B%W%m%0%i%`$r0c$&%f!<%6(B ID $B$G<B9T$9$k(B</a></seealso> +<seealso><a href="../suexec.html">CGI プログラムを違うユーザ ID で実行する</a></seealso> <directivesynopsis location="mod_cgi"> <name>ScriptLog</name> @@ -69,20 +69,20 @@ <directivesynopsis> <name>ScriptSock</name> -<description>CGI $B%G!<%b%s$H$NDL?.$K;H$o$l$k%=%1%C%H$N%U%!%$%kL>$N@\F,<-(B</description> +<description>CGI デーモンとの通信に使われるソケットのファイル名の接頭辞</description> <syntax>ScriptSock <var>file-path</var></syntax> <default>ScriptSock logs/cgisock</default> <contextlist><context>server config</context></contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B CGI $B%G!<%b%s$H$NDL?.$K;H$o$l$k%=%1%C%H$N(B - $B%U%!%$%kL>$N@\F,<-$r@_Dj$7$^$9!#$^$?!"%U%!%$%kL>$K$O%5!<%P$N%W%m%;%9(BID$B$,(B - $BDI2C$5$l$^$9!#%=%1%C%H$O(B Apache $B$,5/F0$5$l$?%f!<%6(B ($BDL>o(B root) $B$N(B - $B%Q!<%_%C%7%g%s$rMQ$$$F%*!<%W%s$5$l$^$9!#(BCGI $B%9%/%j%W%H$H$NDL?.$N(B - $B%;%-%e%j%F%#$rJ]$D$?$a$K!"%=%1%C%H$NB8:_$9$k%G%#%l%/%H%j$K(B - $BB>$N%f!<%6$,=q$-9~$_8"8B$r;}$C$F$$$J$$$h$&$K$9$k$3$H$,=EMW$G$9!#(B</p> - - <example><title>$BNc(B</title> + <p>このディレクティブは CGI デーモンとの通信に使われるソケットの + ファイル名の接頭辞を設定します。また、ファイル名にはサーバのプロセスIDが + 追加されます。ソケットは Apache が起動されたユーザ (通常 root) の + パーミッションを用いてオープンされます。CGI スクリプトとの通信の + セキュリティを保つために、ソケットの存在するディレクトリに + 他のユーザが書き込み権限を持っていないようにすることが重要です。</p> + + <example><title>例</title> ScriptSock /var/run/cgid.sock </example> diff --git a/docs/manual/mod/mod_dav.xml.ja b/docs/manual/mod/mod_dav.xml.ja index f53ea216b2..272d2f5e03 100644 --- a/docs/manual/mod/mod_dav.xml.ja +++ b/docs/manual/mod/mod_dav.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:659902 (outdated) --> @@ -23,62 +23,62 @@ <modulesynopsis metafile="mod_dav.xml.meta"> <name>mod_dav</name> -<description>$BJ,;6%*!<%5%j%s%0$H%P!<%8%g%s4IM}(B -(<a href="http://www.webdav.org/">WebDAV</a>) $B5!G=(B</description> +<description>分散オーサリングとバージョン管理 +(<a href="http://www.webdav.org/">WebDAV</a>) 機能</description> <status>Extension</status> <sourcefile>mod_dav.c</sourcefile> <identifier>dav_module</identifier> <summary> - <p>$B$3$N%b%8%e!<%k$O%/%i%9(B 1 $B$H%/%i%9(B 2 $B$N(B + <p>このモジュールはクラス 1 とクラス 2 の <a href="http://www.webdav.org">WebDAV</a> - ('$B%&%'%V%Y!<%9$NJ,;6%*!<%5%j%s%0$H%P!<%8%g%s4IM}(B') - $B5!G=$r(B Apache $B$KDs6!$7$^$9!#(B - $B$3$N(B HTTP $B%W%m%H%3%k$N3HD%$K$h$j!"%j%b!<%H$N%&%'%V%5!<%P>e$K$"$k(B - $B%j%=!<%9$d%3%l%/%7%g%s$r(B - $B:n@.!"0\F0!"J#@=!":o=|$G$-$k$h$&$K$J$j$^$9!#(B</p> + ('ウェブベースの分散オーサリングとバージョン管理') + 機能を Apache に提供します。 + この HTTP プロトコルの拡張により、リモートのウェブサーバ上にある + リソースやコレクションを + 作成、移動、複製、削除できるようになります。</p> </summary> <seealso><directive module="mod_dav_fs">DavLockDB</directive></seealso> <seealso><directive module="core">LimitXMLRequestBody</directive></seealso> <seealso><a href="http://www.webdav.org">WebDAV Resources</a></seealso> <section id="example"><title>Enabling WebDAV</title> - <p>mod_dav $B$rM-8z$K$9$k$K$O!"(B<code>httpd.conf</code> - $B%U%!%$%kCf$N%3%s%F%J$K<!$r2C$($^$9(B:</p> + <p>mod_dav を有効にするには、<code>httpd.conf</code> + ファイル中のコンテナに次を加えます:</p> <example>Dav On</example> - <p>$B$3$l$O(B DAV $B%U%!%$%k%7%9%F%`%W%m%P%$%@$rM-8z$K$7$^$9!#(BDAV - $B%U%!%$%k%7%9%F%`%W%m%P%$%@$O(B <module>mod_dav_fs</module> - $B%b%8%e!<%k$G<BAu$5$l$F$$$^$9!#$G$9$+$i!"$3$N%b%8%e!<%k$O%3%s%Q%$%k;~$K(B - $B%5!<%P$KAH$_9~$^$l$F$$$k$+!"$"$k$$$O(B + <p>これは DAV ファイルシステムプロバイダを有効にします。DAV + ファイルシステムプロバイダは <module>mod_dav_fs</module> + モジュールで実装されています。ですから、このモジュールはコンパイル時に + サーバに組み込まれているか、あるいは <directive module="mod_so">LoadModule</directive> - $B$r;HMQ$7$F<B9T;~$K%m!<%I$5$l$F$$$kI,MW$,$"$j$^$9!#(B</p> + を使用して実行時にロードされている必要があります。</p> - <p>$B$5$i$K!"(BDAV $B%m%C%/%G!<%?%Y!<%9$N>l=j$,(B - <directive module="mod_dav_fs">DavLockDB</directive> $B%G%#%l%/%F%#%V$r;H$C$F(B - <code>httd.conf</code> $B%U%!%$%k$N%0%m!<%P%k%;%/%7%g%s$K;XDj$5$l$F$$$k(B - $BI,MW$,$"$j$^$9!#(B</p> + <p>さらに、DAV ロックデータベースの場所が + <directive module="mod_dav_fs">DavLockDB</directive> ディレクティブを使って + <code>httd.conf</code> ファイルのグローバルセクションに指定されている + 必要があります。</p> <example> DavLockDB /usr/local/apache2/var/DavLock </example> - <p>$B%m%C%/%G!<%?%Y!<%9%U%!%$%k$N$"$k%G%#%l%/%H%j$O(B Apache $B$,<B9T$5$l$F$$$k(B - <directive module="mpm_common">User</directive> $B$H(B <directive - module="mpm_common" >Group</directive> $B$K=q$-9~$_8"8B$,$"$kI,MW$,$"$j$^$9!#(B</p> + <p>ロックデータベースファイルのあるディレクトリは Apache が実行されている + <directive module="mpm_common">User</directive> と <directive + module="mpm_common" >Group</directive> に書き込み権限がある必要があります。</p> <p><directive module="core" type="section">Limit</directive> - $B@a$r(B <directive module="core" type="section">Location</directive> - $B%G%#%l%/%F%#%VFbIt$KDI2C$7$F!"(BDAV $B$,M-8z$J>l=j$X$N(B - $B%"%/%;%9$r@)8B$9$k$3$H$b$G$-$^$9!#(BDAV $B%/%i%$%"%s%H$,(B - $B0lEY$N%j%/%(%9%H$GAw?.$G$-$k:GBg%P%$%H?t$r;XDj$7$?$$$H$-$O!"(B + 節を <directive module="core" type="section">Location</directive> + ディレクティブ内部に追加して、DAV が有効な場所への + アクセスを制限することもできます。DAV クライアントが + 一度のリクエストで送信できる最大バイト数を指定したいときは、 <directive module="core">LimitXMLRequestBody</directive> - $B%G%#%l%/%F%#%V$r;HMQ$9$kI,MW$,$"$j$^$9!#!VDL>o$N!W(B + ディレクティブを使用する必要があります。「通常の」 <directive module="core">LimitRequestBody</directive> - $B%G%#%l%/%F%#%V$O(B DAV $B%j%/%(%9%H$KBP$7$F$O8zNO$r;}$A$^$;$s!#(B</p> + ディレクティブは DAV リクエストに対しては効力を持ちません。</p> - <example><title>$B40A4$JNc(B</title> + <example><title>完全な例</title> DavLockDB /usr/local/apache2/var/DavLock<br /> <br /> <Location /foo><br /> @@ -98,57 +98,57 @@ </Location><br /> </example> - <p><module>mod_dav</module> $B$O(B Greg Stein $B$5$s$N(B <a - href="http://www.webdav.org/mod_dav/">Apache 1.3 $BMQ$N(B mod_dav</a> $B$K(B - $BM3Mh$9$k$b$N$G$9!#$=$N%5%$%H$+$i$h$jB?$/$N>pJs$r<j$KF~$l$k$3$H$,$G$-$^$9!#(B</p> + <p><module>mod_dav</module> は Greg Stein さんの <a + href="http://www.webdav.org/mod_dav/">Apache 1.3 用の mod_dav</a> に + 由来するものです。そのサイトからより多くの情報を手に入れることができます。</p> </section> -<section id="security"><title>$B%;%-%e%j%F%#$NLdBj(B</title> - - <p>DAV $B$N%"%/%;%9%a%=%C%I$O1s3V%/%i%$%"%s%H$,%5!<%P$N%U%!%$%k$r(B - $BA`:n$9$k$3$H$r2DG=$K$7$^$9$N$G!"(B <module>mod_dav</module> $B$r;HMQ$9$k(B - $BA0$K!"%5!<%P$,0BA4$G$"$k$3$H$rFC$KCm0U$7$F3NG'$7$J$1$l$P$J$j$^$;$s!#(B</p> - - <p>$B%5!<%P>e$N(B DAV $B$,;HMQ2DG=$K$J$C$F$$$k>l=j$O$9$Y$FG'>Z$GJ]8n$7$F$/$@$5$$!#(B - HTTP $B4pK\G'>Z$N;HMQ$O?d>)$G$-$^$;$s!#>/$J$/$H$b(B - <module>mod_auth_digest</module> $B%b%8%e!<%k$GDs6!$5$l$k(B HTTP - $B%@%$%8%'%9%HG'>Z$rMQ$$$k$Y$-$G$9!#(BWebDAV $B%/%i%$%"%s%H$N$[$H$s$I$O(B - $B$3$NG'>ZJ}K!$KBP1~$7$F$$$^$9!#Be$o$j$K!"(B<a href="../ssl/">SSL</a> $B$,(B - $BM-8z$J%3%M%/%7%g%s$rDL$7$?4pK\G'>Z$r;H$&$3$H$b$G$-$^$9!#(B</p> - - <p><module>mod_dav</module> $B$,%U%!%$%k$rA`:n$G$-$k$h$&$K$9$k$?$a$K$O!"(B - $B4IM}2<$N%G%#%l%/%H%j$H%U%!%$%k$H$K(B Apache $B$,<B9T$5$l$F$$$k(B <directive - module="mpm_common">User</directive> $B$H(B <directive - module="mpm_common">Group</directive> $B$G=q$-9~$_2DG=$G$"$kI,MW$,$"$j$^$9!#(B - $B?7$7$/:n@.$5$l$k%U%!%$%k$b$3$N(B <directive module="mpm_common">User</directive> - $B$H(B <directive module="mpm_common">Group</directive> $B$K=jM-$5$l$k(B - $B$3$H$K$J$j$^$9!#$3$NM}M3$+$i!"$=$N%"%+%&%s%H$X$N%"%/%;%9$r@)8f$9$k$3$H$O(B - $B=EMW$G$9!#(BDAV $B%j%]%8%H%j$O(B Apache $B@lMQ$N$b$N$@$H$_$J$5$l$F$$$^$9!#(B - Apache $B0J30$NJ}K!$G%U%!%$%k$r=$@5$9$k$3$H(B ($BNc$($P(B FTP $B$d%U%!%$%k%7%9%F%`(B - $BMQ$N%D!<%k$J$I$r;H$C$F(B) $B$O5v2D$5$l$F$$$^$;$s!#(B</p> - - <p><module>mod_dav</module> $B$O$$$m$$$m$J<oN`$N%5!<%S%95qH]967b$K$5$i$5$l$k(B - $B$+$b$7$l$^$;$s!#(B<directive - module="core">LimitXMLRequestBody</directive> $B%G%#%l%/%F%#%V$r;H$&$H(B - $BBg$-$J(B DAV $B%j%/%(%9%H$r2r@O$9$k$H$-$K>CHq$5$l$k%a%b%j$NNL$r@)8B$9$k$3$H$,(B - $B$G$-$^$9!#(B<directive - module="mod_dav">DavDepthInfinity</directive> $B%G%#%l%/%F%#%V$O(B - <code>PROPFIND</code> $B%j%/%(%9%H$,5pBg%j%]%8%H%j$GBgNL$N%a%b%j$r>CHq$9$k$N$r(B - $BKI$0$3$H$,$G$-$^$9!#B>$N%5!<%S%95qH]967b$K$OC1=c$K;HMQ2DG=$J%G%#%9%/NN0h$r(B - $BB?$/$NBg$-$J%U%!%$%k$GKd$a$F$7$^$&$s$b$N$,$"$j$^$9!#$3$l$rD>@\KI$0J}K!$O(B - Apache $B$K$O$"$j$^$;$s$N$G!"?.MQ$G$-$J$$%f!<%6$K(B DAV $B%"%/%;%9$rDs6!$9$k$N$O(B - $BHr$1$?J}$,NI$$$G$7$g$&!#(B</p> +<section id="security"><title>セキュリティの問題</title> + + <p>DAV のアクセスメソッドは遠隔クライアントがサーバのファイルを + 操作することを可能にしますので、 <module>mod_dav</module> を使用する + 前に、サーバが安全であることを特に注意して確認しなければなりません。</p> + + <p>サーバ上の DAV が使用可能になっている場所はすべて認証で保護してください。 + HTTP 基本認証の使用は推奨できません。少なくとも + <module>mod_auth_digest</module> モジュールで提供される HTTP + ダイジェスト認証を用いるべきです。WebDAV クライアントのほとんどは + この認証方法に対応しています。代わりに、<a href="../ssl/">SSL</a> が + 有効なコネクションを通した基本認証を使うこともできます。</p> + + <p><module>mod_dav</module> がファイルを操作できるようにするためには、 + 管理下のディレクトリとファイルとに Apache が実行されている <directive + module="mpm_common">User</directive> と <directive + module="mpm_common">Group</directive> で書き込み可能である必要があります。 + 新しく作成されるファイルもこの <directive module="mpm_common">User</directive> + と <directive module="mpm_common">Group</directive> に所有される + ことになります。この理由から、そのアカウントへのアクセスを制御することは + 重要です。DAV リポジトリは Apache 専用のものだとみなされています。 + Apache 以外の方法でファイルを修正すること (例えば FTP やファイルシステム + 用のツールなどを使って) は許可されていません。</p> + + <p><module>mod_dav</module> はいろいろな種類のサービス拒否攻撃にさらされる + かもしれません。<directive + module="core">LimitXMLRequestBody</directive> ディレクティブを使うと + 大きな DAV リクエストを解析するときに消費されるメモリの量を制限することが + できます。<directive + module="mod_dav">DavDepthInfinity</directive> ディレクティブは + <code>PROPFIND</code> リクエストが巨大リポジトリで大量のメモリを消費するのを + 防ぐことができます。他のサービス拒否攻撃には単純に使用可能なディスク領域を + 多くの大きなファイルで埋めてしまうんものがあります。これを直接防ぐ方法は + Apache にはありませんので、信用できないユーザに DAV アクセスを提供するのは + 避けた方が良いでしょう。</p> </section> -<section id="complex"><title>$BJ#;($J@_Dj(B</title> +<section id="complex"><title>複雑な設定</title> - <p>$B$h$/$"$kMW5a$K!"(B<module>mod_dav</module> $B$r;H$C$FF0E*$J%U%!%$%k(B - (PHP $B%9%/%j%W%H!"(BCGI $B%9%/%j%W%H$J$I(B) $B$rA`:n$7$?$$$H$$$&$b$N$,$"$j$^$9!#(B - $B$3$l$N<B8=$O!"(B<code>GET</code> $B%j%/%(%9%H$O%9%/%j%W%H$NFbMF$r%@%&%s%m!<%I$5$;$k(B - $BBe$o$j$K!"%9%/%j%W%H$r>o$K<B9T$5$;$F$7$^$&$N$GFq$7$/$J$C$F$$$^$9!#(B - $B$3$l$r2sHr$9$kJ}K!$K$O!"Fs$D$N0c$&(B URL $B$rF1$8%3%s%F%s%D$K%^%C%W$7!"(B - $B0l$D$O%9%/%j%W%H$r<B9T$5$;!"$b$&0l$D$O%@%&%s%m!<%I$5$;$?$j!"(BDAV $B$+$i(B - $BA`:n$5$l$?$j$9$k$h$&$K@_Dj$9$k$H$$$&$b$N$,$"$j$^$9!#(B</p> + <p>よくある要求に、<module>mod_dav</module> を使って動的なファイル + (PHP スクリプト、CGI スクリプトなど) を操作したいというものがあります。 + これの実現は、<code>GET</code> リクエストはスクリプトの内容をダウンロードさせる + 代わりに、スクリプトを常に実行させてしまうので難しくなっています。 + これを回避する方法には、二つの違う URL を同じコンテンツにマップし、 + 一つはスクリプトを実行させ、もう一つはダウンロードさせたり、DAV から + 操作されたりするように設定するというものがあります。</p> <example> Alias /phparea /home/gstein/php_files<br /> @@ -161,22 +161,22 @@ Alias /php-source /home/gstein/php_files<br /> </Location> </example> - <p>$B$3$N@_Dj$K$h$j!"(B<code>http://example.com/phparea</code> $B$r(B PHP $B%9%/%j%W%H$N(B - $B=PNO$r%"%/%;%9$9$k$?$a$K;H$&$3$H$,$G$-!"(B - <code>http://example.com/php-source</code> $B$r(B DAV $B%/%i%$%"%s%H$K$h$k(B - $B$,A`:n$N$?$a$K;H$&$3$H$,$G$-$^$9!#(B</p> + <p>この設定により、<code>http://example.com/phparea</code> を PHP スクリプトの + 出力をアクセスするために使うことができ、 + <code>http://example.com/php-source</code> を DAV クライアントによる + が操作のために使うことができます。</p> </section> <directivesynopsis> <name>Dav</name> -<description>WebDAV HTTP $B%a%=%C%I$rM-8z$K$7$^$9(B</description> +<description>WebDAV HTTP メソッドを有効にします</description> <syntax>Dav On|Off|<var>provider-name</var></syntax> <default>Dav Off</default> <contextlist><context>directory</context></contextlist> <usage> - <p>$BM?$($i$l$?%3%s%F%J$G(B WebDAV HTTP $B%a%=%C%I$,;H$($k$h$&$K$9$k$K$O(B - $B<!$N$h$&$K$7$^$9!#(B</p> + <p>与えられたコンテナで WebDAV HTTP メソッドが使えるようにするには + 次のようにします。</p> <example> <Location /foo><br /> @@ -186,24 +186,24 @@ Alias /php-source /home/gstein/php_files<br /> </Location> </example> - <p><code>On</code> $B$H$$$&;XDj$O<B:]$K$O(B <module>mod_dav_fs</module> - $B$GDs6!$5$l$F$$$k%G%U%)%k%H$N%W%m%P%$%@!"(B<code>filesystem</code> - $B$X$N%(%$%j%"%9$K$J$C$F$$$^$9!#0lEY$"$k%m%1!<%7%g%s$G(B DAV - $B$rM-8z$K$7$?8e$O!"$=$N%5%V%m%1!<%7%g%s$G(B<em>$BL58z2=$9$k$3$H$O$G$-$J$$(B</em> - $B$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#40A4$J@_DjNc$O(B<a - href="#example">$B>e5-$N%;%/%7%g%s(B</a> $B$r$4Mw2<$5$$!#(B</p> + <p><code>On</code> という指定は実際には <module>mod_dav_fs</module> + で提供されているデフォルトのプロバイダ、<code>filesystem</code> + へのエイリアスになっています。一度あるロケーションで DAV + を有効にした後は、そのサブロケーションで<em>無効化することはできない</em> + ということに注意してください。完全な設定例は<a + href="#example">上記のセクション</a> をご覧下さい。</p> <note type="warning"> - $B%5!<%P$N%;%-%e%j%F%#$,3NJ]$G$-$k$^$G(B WebDAV $B$rM-8z$K$7$J$$$G$/$@$5$$!#(B - $B$=$&$7$J$1$l$PC/$G$b$=$N%5!<%P$G%U%!%$%k$rG[I[$9$k$3$H$,$G$-$k$h$&$K(B - $B$J$C$F$7$^$$$^$9!#(B + サーバのセキュリティが確保できるまで WebDAV を有効にしないでください。 + そうしなければ誰でもそのサーバでファイルを配布することができるように + なってしまいます。 </note> </usage> </directivesynopsis> <directivesynopsis> <name>DavMinTimeout</name> -<description>$B%5!<%P$,(B DAV $B%j%=!<%9$N%m%C%/$r0];}$9$k:G>.;~4V$G$9!#(B +<description>サーバが DAV リソースのロックを維持する最小時間です。 </description> <syntax>DavMinTimeout <var>seconds</var></syntax> <default>DavMinTimeout 0</default> @@ -211,21 +211,21 @@ Alias /php-source /home/gstein/php_files<br /> <context>directory</context></contextlist> <usage> - <p>$B%/%i%$%"%s%H$,(B DAV $B%j%=!<%9%m%C%/$rMW5a$7$?>l9g!"(B - $B%m%C%/$,%5!<%P$K$h$C$F<+F0E*$K2r=|$5$l$k$^$G$N;~4V$r(B - $BF1;~$K;XDj$9$k$3$H$,$G$-$^$9!#$3$NCM$OC1$J$k%j%/%(%9%H$G$"$C$F!"(B - $B%5!<%P$O$3$l$rL5;k$9$k$3$H$b$G$-$^$9$7!"(B - $BG$0U$NCM$r%/%i%$%"%s%H$KDLCN$9$k$3$H$b$G$-$^$9!#(B</p> - - <p>$B%/%i%$%"%s%H$KLa$9%m%C%/%?%$%`%"%&%H$N:G>.;~4V$r!"(B - $BIC$G!";XDj$9$k$?$a$K(B <directive>DavMinTimeout</directive> - $B%G%#%l%/%F%#%V$r;H$$$^$9!#(B - $B%^%$%/%m%=%U%H$N%&%'%V%U%)%k%@$N%G%U%)%k%H$G$O(B 120 $BIC$G$9$,!((B - $B%M%C%H%o!<%/$NCY1d$N$;$$$G%/%i%$%"%s%H$,%m%C%/$r<:$&$N$r8:$i$9$?$a$K!"(B - <directive>DavMinTimeout</directive> $B$r;H$C$F(B - $B$3$l$r$b$C$HBg$-$JCM(B ($BNc$($P(B 600 $BIC(B) $B$K>e=q$-$G$-$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p>クライアントが DAV リソースロックを要求した場合、 + ロックがサーバによって自動的に解除されるまでの時間を + 同時に指定することができます。この値は単なるリクエストであって、 + サーバはこれを無視することもできますし、 + 任意の値をクライアントに通知することもできます。</p> + + <p>クライアントに戻すロックタイムアウトの最小時間を、 + 秒で、指定するために <directive>DavMinTimeout</directive> + ディレクティブを使います。 + マイクロソフトのウェブフォルダのデフォルトでは 120 秒ですが; + ネットワークの遅延のせいでクライアントがロックを失うのを減らすために、 + <directive>DavMinTimeout</directive> を使って + これをもっと大きな値 (例えば 600 秒) に上書きできます。</p> + + <example><title>例</title> <Location /MSWord><br /> <indent> DavMinTimeout 600<br /> @@ -237,19 +237,19 @@ Alias /php-source /home/gstein/php_files<br /> <directivesynopsis> <name>DavDepthInfinity</name> -<description>PROPFIND, Depth: Infinity $B%j%/%(%9%H$r5v2D$7$^$9(B</description> +<description>PROPFIND, Depth: Infinity リクエストを許可します</description> <syntax>DavDepthInfinity on|off</syntax> <default>DavDepthInfinity off</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context></contextlist> <usage> - <p>'Depth: Infinity' $B$r4^$s$G$$$k(B - <code>PROPFIND</code> $B%j%/%(%9%H$r=hM}$G$-$k$h$&$K$9$k$K$O!"(B + <p>'Depth: Infinity' を含んでいる + <code>PROPFIND</code> リクエストを処理できるようにするには、 <directive>DavDepthInfinity</directive> - $B%G%#%l%/%F%#%V$r;H$$$^$9!#$3$N%?%$%W$N%j%/%(%9%H$O(B - denial-of-service $B%"%?%C%/$H$J$j$&$k$N$G!"(B - $B%G%U%)%k%H$G$O5v2D$5$l$F$$$^$;$s!#(B</p> + ディレクティブを使います。このタイプのリクエストは + denial-of-service アタックとなりうるので、 + デフォルトでは許可されていません。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_dav_fs.xml.ja b/docs/manual/mod/mod_dav_fs.xml.ja index 5f5bfb791e..e233e88797 100644 --- a/docs/manual/mod/mod_dav_fs.xml.ja +++ b/docs/manual/mod/mod_dav_fs.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,50 +23,50 @@ <modulesynopsis metafile="mod_dav_fs.xml.meta"> <name>mod_dav_fs</name> -<description><module>mod_dav</module> $B$N$?$a$N%U%!%$%k%7%9%F%`%W%m%P%$%@(B</description> +<description><module>mod_dav</module> のためのファイルシステムプロバイダ</description> <status>Extension</status> <sourcefile>mod_dav_fs.c</sourcefile> <identifier>dav_fs_module</identifier> <summary> - <p>$B$3$N%b%8%e!<%k$O(B <module>mod_dav</module> - $B$N%5!<%S%9$r(B<em>$BI,MW$H$7$^$9(B</em>$B!#(B<module>mod_dav</module> - $B$N%5%]!<%H%b%8%e!<%k$H$7$FF0:n$7!"%5!<%P%U%!%$%k%7%9%F%`>e$K(B - $B0LCV$9$k%j%=!<%9$X$N%"%/%;%9$rDs6!$7$^$9!#$3$N%W%m%P%$%@$N@5<0$JL>A0$O(B - <code>filesystem</code> $B$G$9!#(B<module>mod_dav</module> - $B%P%C%/%(%s%I%W%m%P%$%@$O(B <directive module="mod_dav">Dav</directive> - $B%G%#%l%/%F%#%V$r;HMQ$7$F5/F0$5$l$^$9!#(B</p> + <p>このモジュールは <module>mod_dav</module> + のサービスを<em>必要とします</em>。<module>mod_dav</module> + のサポートモジュールとして動作し、サーバファイルシステム上に + 位置するリソースへのアクセスを提供します。このプロバイダの正式な名前は + <code>filesystem</code> です。<module>mod_dav</module> + バックエンドプロバイダは <directive module="mod_dav">Dav</directive> + ディレクティブを使用して起動されます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> Dav filesystem </example> - <p><code>filesystem</code> $B$O(B <module>mod_dav</module> - $B$N%G%U%)%k%H%W%m%P%$%@$K$J$C$F$$$^$9$+$i!"Be$o$j$KC1$K(B - <code>On</code> $B$H;XDj$9$k$3$H$b$G$-$^$9!#(B</p> + <p><code>filesystem</code> は <module>mod_dav</module> + のデフォルトプロバイダになっていますから、代わりに単に + <code>On</code> と指定することもできます。</p> </summary> <seealso><module>mod_dav</module></seealso> <directivesynopsis> <name>DavLockDB</name> -<description>DAV $B%m%C%/%G!<%?%Y!<%9$N0LCV(B</description> +<description>DAV ロックデータベースの位置</description> <syntax>DavLockDB <var>file-path</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$B%m%C%/%G!<%?%Y!<%9$X$N%U%k%Q%9$r!"3HD%;R$r=|$$$?7A$G(B - $B;XDj$9$k$K$O!"(B<directive>DavLockDB</directive> - $B$r;H$$$^$9!#%Q%9$,@dBP%Q%9$G$J$1$l$P!"(B<directive module= - "core">ServerRoot</directive> $B$+$i$NAjBP%Q%9$H2r<a$5$l$^$9!#(B - <module>mod_dav_fs</module> $B<BAu$G$O!"%f!<%6%m%C%/$r(B - $BDI@W$9$k$?$a$K(B SDBM $B%G!<%?%Y!<%9$r;H$$$^$9!#(B</p> + <p>ロックデータベースへのフルパスを、拡張子を除いた形で + 指定するには、<directive>DavLockDB</directive> + を使います。パスが絶対パスでなければ、<directive module= + "core">ServerRoot</directive> からの相対パスと解釈されます。 + <module>mod_dav_fs</module> 実装では、ユーザロックを + 追跡するために SDBM データベースを使います。</p> <!-- XXX: someone should add that tool to the support directory... The utility <code>modules/dav/util/lockview</code> can be used from the server to display all locks in a lock database.</p> --> - <example><title>$BNc(B</title> + <example><title>例</title> DavLockDB logs/DavLock </example> </usage> diff --git a/docs/manual/mod/mod_dav_lock.xml.ja b/docs/manual/mod/mod_dav_lock.xml.ja index 3b39ec2af0..23b426fc5a 100644 --- a/docs/manual/mod/mod_dav_lock.xml.ja +++ b/docs/manual/mod/mod_dav_lock.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420993 --> @@ -23,71 +23,71 @@ <modulesynopsis metafile="mod_dav_lock.xml.meta"> <name>mod_dav_lock</name> -<description><module>mod_dav</module> $BMQ$NHFMQ%m%C%/%b%8%e!<%k(B</description> +<description><module>mod_dav</module> 用の汎用ロックモジュール</description> <status>Extension</status> <sourcefile>mod_dav_lock.c</sourcefile> <identifier>dav_lock_module</identifier> - <compatibility>$B%P!<%8%g%s(B 2.1 $B0J9_(B</compatibility> + <compatibility>バージョン 2.1 以降</compatibility> <summary> - <p>$B$3$N%b%8%e!<%k$O(B <module>mod_dav</module> $B$N$I$N%P%C%/%(%s%I(B - $B$+$i$G$b;H$($kHFMQ%m%C%/(B API $B$rDs6!$7$^$9!#(B - $B;HMQ$K$O:GDc8B(B <module>mod_dav</module> - $B$rI,MW$H$7$^$9$,!"$3$l$rMxMQ$9$k%P%C%/%(%s%I$,B8:_$7$J$$$HLr$KN)$?$J$$$N$G!"(B - $B$=$N$h$&$J>l9g$O%5!<%P$KFI$_9~$`$Y$-$G$O$"$j$^$;$s!#(B + <p>このモジュールは <module>mod_dav</module> のどのバックエンド + からでも使える汎用ロック API を提供します。 + 使用には最低限 <module>mod_dav</module> + を必要としますが、これを利用するバックエンドが存在しないと役に立たないので、 + そのような場合はサーバに読み込むべきではありません。 <module>mod_dav_lock</module> - $B$r<B:]$KMxMQ$9$k%P%C%/%(%s%I%b%8%e!<%k$NNc$H$7$F$O(B subversion - $B%W%m%P%$%@%b%8%e!<%k$N(B <a href="http://subversion.tigris.org/" - >mod_dav_svn</a> $B$,$"$j$^$9!#(B</p> - - <p><module>mod_dav_fs</module> $B$OFC2=$5$l$?@lMQ$N%P!<%8%g%s$r(B - $B;H$&$?$a!"$3$NHFMQ%b%8%e!<%k$O(B<em>$BI,MW$J$$(B</em>$B$3$H$KCm0U$7$F(B - $B$/$@$5$$!#(B</p> - - <p><module>mod_dav_lock</module> $B$r5!G=$5$;$k$K$O!"(B - $B0J2<$G@bL@$5$l$F$$$k(B <directive - module="mod_dav_lock">DavGenericLockDB</directive> $B$r;H$C$F(B - $B%m%C%/%G!<%?%Y!<%9$N>l=j$r;XDj$9$k$@$1$G$9!#(B</p> - - <note><title>$B3+H/<T8~$1$N%a%b(B</title> - <p>$B%m%C%/$rDs6!$7$F$$$k4X?t$X$N%]%$%s%?$r<hF@$9$k$?$a$K$O!"(B - <code>ap_lookup_provider</code> API $B$r!"0z?t(B <code>dav-lock</code>, - <code>generic</code>, <code>0</code> $B$r;XDj$7$F;H$&I,MW$,(B - $B$"$j$^$9!#(B</p> + を実際に利用するバックエンドモジュールの例としては subversion + プロバイダモジュールの <a href="http://subversion.tigris.org/" + >mod_dav_svn</a> があります。</p> + + <p><module>mod_dav_fs</module> は特化された専用のバージョンを + 使うため、この汎用モジュールは<em>必要ない</em>ことに注意して + ください。</p> + + <p><module>mod_dav_lock</module> を機能させるには、 + 以下で説明されている <directive + module="mod_dav_lock">DavGenericLockDB</directive> を使って + ロックデータベースの場所を指定するだけです。</p> + + <note><title>開発者向けのメモ</title> + <p>ロックを提供している関数へのポインタを取得するためには、 + <code>ap_lookup_provider</code> API を、引数 <code>dav-lock</code>, + <code>generic</code>, <code>0</code> を指定して使う必要が + あります。</p> </note> </summary> <seealso><module>mod_dav</module></seealso> <directivesynopsis> <name>DavGenericLockDB</name> -<description>DAV $B%m%C%/%G!<%?%Y!<%9$N>l=j(B</description> +<description>DAV ロックデータベースの場所</description> <syntax>DavGenericLockDB <var>file-path</var></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context> </contextlist> <usage> - <p><directive>DavGenericLockDB</directive> $B%G%#%l%/%F%#%V$r(B - $B;H$C$F!"3HD%;R$r=|$$$?%m%C%/%G!<%?%Y!<%9$X$N%U%k%Q%9$r(B - $B;XDj$7$^$9!#@dBP%Q%9$G$J$$$H$-$O(B <directive - module="core">ServerRoot</directive> $B$+$i$NAjBP%Q%9$H$7$F(B - $B07$o$l$^$9!#(B<module>mod_dav_lock</module> $B$N<BAu$G$O%f!<%6$N(B - $B%m%C%/$rDI@W$9$k$N$K(B SDBM $B%G!<%?%Y!<%9$r;H$$$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p><directive>DavGenericLockDB</directive> ディレクティブを + 使って、拡張子を除いたロックデータベースへのフルパスを + 指定します。絶対パスでないときは <directive + module="core">ServerRoot</directive> からの相対パスとして + 扱われます。<module>mod_dav_lock</module> の実装ではユーザの + ロックを追跡するのに SDBM データベースを使います。</p> + + <example><title>例</title> DavGenericLockDB var/DavLock </example> - <p>$B%m%C%/%G!<%?%Y!<%9%U%!%$%k$N$"$k%G%#%l%/%H%j$O(B - Apache $B$,<B9T$5$l$F$$$k(B <directive module="mpm_common">User</directive> - $B$H(B <directive module="mpm_common" >Group</directive> $B$K$h$C$F(B - $B=q$-9~$_2DG=$G$J$1$l$P$J$j$^$;$s!#%;%-%e%j%F%#>e$NM}M3$+$i!"(B - $B4{B8$N%G%#%l%/%H%j$N%Q!<%_%C%7%g%s$rJQ99$9$k$N$G$O$J$/!"(B - $B@lMQ$N%G%#%l%/%H%j$r:n$k$N$,NI$$$G$7$g$&!#>e$NNc$G$O!"(B - Apache $B$O(B <directive - module="core">ServerRoot</directive> $B$N2<$N(B <code>var/</code> - $B%G%#%l%/%H%j$K!"%U%!%$%kL>$NK\BN$,(B <code>DavLock</code> $B$G(B - $B%5!<%P$,A*Br$7$?3HD%;R$r;}$D%U%!%$%k$r:n@.$7$^$9!#(B</p> + <p>ロックデータベースファイルのあるディレクトリは + Apache が実行されている <directive module="mpm_common">User</directive> + と <directive module="mpm_common" >Group</directive> によって + 書き込み可能でなければなりません。セキュリティ上の理由から、 + 既存のディレクトリのパーミッションを変更するのではなく、 + 専用のディレクトリを作るのが良いでしょう。上の例では、 + Apache は <directive + module="core">ServerRoot</directive> の下の <code>var/</code> + ディレクトリに、ファイル名の本体が <code>DavLock</code> で + サーバが選択した拡張子を持つファイルを作成します。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_deflate.xml.ja b/docs/manual/mod/mod_deflate.xml.ja index a3b74a1970..03614207e1 100644 --- a/docs/manual/mod/mod_deflate.xml.ja +++ b/docs/manual/mod/mod_deflate.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -23,29 +23,29 @@ <modulesynopsis metafile="mod_deflate.xml.meta"> <name>mod_deflate</name> -<description>$B%/%i%$%"%s%H$XAw$i$l$kA0$K%3%s%F%s%D$r05=L$9$k(B</description> +<description>クライアントへ送られる前にコンテンツを圧縮する</description> <status>Extension</status> <sourcefile>mod_deflate.c</sourcefile> <identifier>deflate_module</identifier> <summary> - <p><module>mod_deflate</module> $B%b%8%e!<%k$O(B <code>DEFLATE</code> - $B=PNO%U%#%k%?$rDs6!$7$^$9!#$3$l$O%5!<%P$+$i$N=PNO$r!"%M%C%H%o!<%/$r(B - $BDL$7$F%/%i%$%"%s%H$KAw$kA0$K05=L$9$k$3$H$r2DG=$K$7$^$9!#(B</p> + <p><module>mod_deflate</module> モジュールは <code>DEFLATE</code> + 出力フィルタを提供します。これはサーバからの出力を、ネットワークを + 通してクライアントに送る前に圧縮することを可能にします。</p> </summary> <seealso><a href="../filter.html">Filters</a></seealso> -<section id="recommended"><title>$B%5%s%W%k@_Dj(B</title> - <p>$B2<$K$;$C$+$A$J?M8~$1$N4JC1$J@_DjNc$r<($7$^$9!#(B</p> +<section id="recommended"><title>サンプル設定</title> + <p>下にせっかちな人向けの簡単な設定例を示します。</p> - <example><title>$B?t%?%$%W$N$_05=L$9$k(B</title> + <example><title>数タイプのみ圧縮する</title> AddOutputFilterByType DEFLATE text/html text/plain text/xml </example> - <p>$B0J2<$N@_Dj$O%3%s%F%s%D$r$h$j05=L$7$^$9$,!"$:$C$HJ#;($J@_Dj$K$J$j$^$9!#(B - $B@_Dj$N6y!9$^$G$h$/M}2r$7$J$$$G;H$o$J$$$G$/$@$5$$!#(B</p> + <p>以下の設定はコンテンツをより圧縮しますが、ずっと複雑な設定になります。 + 設定の隅々までよく理解しないで使わないでください。</p> - <example><title>$B2hA|0J30A4$F05=L$9$k(B</title> + <example><title>画像以外全て圧縮する</title> <Location /><br /> <indent> # Insert filter<br /> @@ -79,27 +79,27 @@ </section> -<section id="enable"><title>$B05=L$rM-8z$K$9$k(B</title> +<section id="enable"><title>圧縮を有効にする</title> <section id="output"><title>Output Compression</title> - <p>$B05=L5!G=$O(B <code>DEFLATE</code> <a href="../filter.html">$B%U%#%k%?(B</a> - $B$K$h$j<BAu$5$l$F$$$^$9!#0J2<$N%G%#%l%/%F%#%V$O$=$N%G%#%l%/%F%#%V$N$"$k(B - $B%3%s%F%JCf$N%I%-%e%a%s%H$r05=L$9$k$h$&$K$7$^$9(B:</p> + <p>圧縮機能は <code>DEFLATE</code> <a href="../filter.html">フィルタ</a> + により実装されています。以下のディレクティブはそのディレクティブのある + コンテナ中のドキュメントを圧縮するようにします:</p> <example> SetOutputFilter DEFLATE </example> - <p>$B$h$/;H$o$l$F$$$k%V%i%&%6$G$O!"$9$Y$F$N%3%s%F%s%D$KBP$9$k(B - $B05=L$r07$($k$o$1$G$O$"$j$^$;$s!#$G$9$+$i!"(B<code>gzip-only-text/html</code> - $B%N!<%H$r(B <code>1</code> $B$K$7$F!"(Bhtml $B%U%!%$%k$KBP$7$F$N$_(B - $B05=L$,F/$/$h$&$K$7$?J}$,$h$$$+$b$7$l$^$;$s(B ($B0J2<;2>H(B) - $B$3$NCM$r(B <em><code>1</code> $B0J30$NCM(B</em>$B$K@_Dj$7$?>l9g$OL5;k$5$l$^$9!#(B</p> + <p>よく使われているブラウザでは、すべてのコンテンツに対する + 圧縮を扱えるわけではありません。ですから、<code>gzip-only-text/html</code> + ノートを <code>1</code> にして、html ファイルに対してのみ + 圧縮が働くようにした方がよいかもしれません (以下参照) + この値を <em><code>1</code> 以外の値</em>に設定した場合は無視されます。</p> - <p>$BDL>o!"FCDj$N(BMIME$B%?%$%W$K$D$$$F$N$_05=L$7$?$$$N$G$"$l$P!"(B + <p>通常、特定のMIMEタイプについてのみ圧縮したいのであれば、 <directive module="core">AddOutputFilterByType</directive> - $B%G%#%l%/%F%#%V$r;HMQ$7$^$9!#<!$K(B Apache $B$N%I%-%e%a%s%H$N(B html - $B%U%!%$%k$N$_$N05=L$rM-8z$K$9$kNc$r<($7$^$9!#(B</p> + ディレクティブを使用します。次に Apache のドキュメントの html + ファイルのみの圧縮を有効にする例を示します。</p> <example> <Directory "/your-server-root/manual"><br /> @@ -109,15 +109,15 @@ </Directory> </example> - <p>$BA4$F$N%U%!%$%k%?%$%W$G$N05=L$KLdBj$rJz$($F$$$k%V%i%&%6$KBP$7$F$O!"(B + <p>全てのファイルタイプでの圧縮に問題を抱えているブラウザに対しては、 <directive module="mod_setenvif">BrowserMatch</directive> - $B%G%#%l%/%F%#%V$r;HMQ$7$F!"FCDj$N%V%i%&%6$K(B <code>no-gzip</code> - $B%N!<%H$r%;%C%H$7!"05=L$,9T$J$o$l$J$$$h$&$K$7$^$9!#(B - <code>no-gzip</code> $B$H(B <code>gzip-only-text/html</code> - $B$rAH$_9g$o$;$k$3$H$G>e<j$/BP=h$G$-$^$9!#(B - $B$3$N>l9g!"A0<T$,8e<T$r%*!<%P!<%i%$%I$7$^$9!#(B - $B>e5-$N(B<a href="#recommended">$B@_DjNc(B</a>$B$NH4?h$r(B - $B<!$K<($7$^$9$N$G$4Mw2<$5$$!#(B</p> + ディレクティブを使用して、特定のブラウザに <code>no-gzip</code> + ノートをセットし、圧縮が行なわれないようにします。 + <code>no-gzip</code> と <code>gzip-only-text/html</code> + を組み合わせることで上手く対処できます。 + この場合、前者が後者をオーバーライドします。 + 上記の<a href="#recommended">設定例</a>の抜粋を + 次に示しますのでご覧下さい。</p> <example> BrowserMatch ^Mozilla/4 gzip-only-text/html<br /> @@ -125,39 +125,39 @@ BrowserMatch \bMSIE !no-gzip !gzip-only-text/html </example> - <p>$B$^$:;O$a$K(B <code>User-Agent</code> $BJ8;zNs$+$i(B Netscape Navigator - 4.x $B$G$"$k$+$I$&$+$rD4$Y$^$9!#$3$l$i$N%P!<%8%g%s$G$O!"(B - <code>text/html</code> $B0J30$N%?%$%W$N05=L$r07$&$3$H$,$G$-$^$;$s!#(B - 4.06, 4.07, 4.08 $B$O(B html $B%U%!%$%k$N?-D%$K$bLdBj$rJz$($F$$$^$9!#(B - $B$G$9$+$i$3$l$i$KBP$7$F$O!"40A4$K(B deflate $B%U%#%k%?$r%*%U$K$7$^$9!#(B</p> - - <p>3 $BHVL\$N(B <directive module="mod_setenvif">BrowserMatch</directive> - $B%G%#%l%/%F%#%V$G!"?dB,$7$?%f!<%6!<%(!<%8%'%s%H$r=$@5$7$^$9!#(B - $B$J$<$J$i(B Microsoft Internet Explorer $B$b(B "Mozilla/4" $B$HFCDj$5$l$^$9$,!"(B - $B$3$l$i$O<B:]$K$O05=L$r07$&$3$H$,$G$-$k$+$i$G$9!#(B - <code>User-Agent</code> $B%X%C%@$r(B "MSIE" - (<code>\b</code> $B$O!VC18l$N6-3&!W$r0UL#$7$^$9(B) $B$NDI2CJ8;z$G8!::$7$F!"(B - $B$3$l0JA0$K@_Dj$7$?@)8B$r:F$S2r=|$7$^$9!#(B</p> - - <note><title>$BCm(B</title> - <code>DEFLATE</code> $B%U%#%k%?$OI,$:!"(BPHP $B$d(B SSI $B$H$$$C$?(B RESOURCE - $B%U%#%k%?$N8e$K$J$j$^$9!#(B - DEFLATE $B%U%#%k%?$OFbItE*$J%5%V%j%/%(%9%H$r4XCN$7$^$;$s!#(B + <p>まず始めに <code>User-Agent</code> 文字列から Netscape Navigator + 4.x であるかどうかを調べます。これらのバージョンでは、 + <code>text/html</code> 以外のタイプの圧縮を扱うことができません。 + 4.06, 4.07, 4.08 は html ファイルの伸張にも問題を抱えています。 + ですからこれらに対しては、完全に deflate フィルタをオフにします。</p> + + <p>3 番目の <directive module="mod_setenvif">BrowserMatch</directive> + ディレクティブで、推測したユーザーエージェントを修正します。 + なぜなら Microsoft Internet Explorer も "Mozilla/4" と特定されますが、 + これらは実際には圧縮を扱うことができるからです。 + <code>User-Agent</code> ヘッダを "MSIE" + (<code>\b</code> は「単語の境界」を意味します) の追加文字で検査して、 + これ以前に設定した制限を再び解除します。</p> + + <note><title>注</title> + <code>DEFLATE</code> フィルタは必ず、PHP や SSI といった RESOURCE + フィルタの後になります。 + DEFLATE フィルタは内部的なサブリクエストを関知しません。 </note> - <note><title>$BCm(B</title> - <directive module="core">SetEnv</directive> $B$G@_Dj$5$l$k(B - <code>force-gzip</code> $B4D6-JQ?t$,$"$j$^$9$,!"$3$l$O(B - $B%V%i%&%6$N(B accept-encoding $B@_Dj$rL5;k$7!"05=L$7$?=PNO$r$7$^$9!#(B + <note><title>注</title> + <directive module="core">SetEnv</directive> で設定される + <code>force-gzip</code> 環境変数がありますが、これは + ブラウザの accept-encoding 設定を無視し、圧縮した出力をします。 </note> </section> - <section id="inflate"><title>$B=PNO$N?-D9(B</title> - <p><module>mod_deflate</module> $B%b%8%e!<%k$O!"(Bgzip $B05=L$5$l$?%l%9%]%s%9(B - $BK\J8$r(B inflate/uncompress $B$9$k%U%#%k%?$bDs6!$7$F$$$^$9!#(B - $B$3$N5!G=$rM-8z$K$9$k$K$O!"(B<directive module="core">SetOutputFilter</directive> - $B$d(B <directive module="mod_mime">AddOutputFilter</directive> $B$r;H$C$F!"(B - <code>INFLATE</code> $B%U%#%k%?$r=PNO%U%#%k%?%A%'%$%s$KA^F~$7$^$9!#(B - $BNc$($P<!$N$h$&$K$7$^$9!#(B</p> + <section id="inflate"><title>出力の伸長</title> + <p><module>mod_deflate</module> モジュールは、gzip 圧縮されたレスポンス + 本文を inflate/uncompress するフィルタも提供しています。 + この機能を有効にするには、<directive module="core">SetOutputFilter</directive> + や <directive module="mod_mime">AddOutputFilter</directive> を使って、 + <code>INFLATE</code> フィルタを出力フィルタチェインに挿入します。 + 例えば次のようにします。</p> <example> <Location /dav-area><br /> @@ -168,18 +168,18 @@ </Location> </example> - <p>$B$3$NNc$G$O!"(Bexample.com $B$+$i$N(B gzip $B05=L$5$l$?=PNO$r?-D9$7!"(B - $B$=$NB>$N%U%#%k%?$,$5$i$K$=$N=PNO$r=hM}$G$-$k$h$&$K$7$^$9!#(B + <p>この例では、example.com からの gzip 圧縮された出力を伸長し、 + その他のフィルタがさらにその出力を処理できるようにします。 </p> </section> - <section id="input"><title>$BF~NO$N?-D%(B</title> - <p><module>mod_deflate</module> $B%b%8%e!<%k$O!"(Bgzip - $B$G05=L$5$l$?%j%/%(%9%HK\BN$r?-D%$9$k%U%#%k%?$bDs6!$7$F$$$^$9!#(B - $B$3$N5!G=$rM-8z$K$9$k$K$O!"(B<directive module="core">SetInputFilter</directive> - $B$+(B <directive module="mod_mime">AddInputFilter</directive> $B$r;HMQ$7$F!"(B - <code>DEFLATE</code> $B%U%#%k%?$rF~NO%U%#%k%?%A%'%$%s$KAH$_9~$_$^$9!#(B - $BNc$($P<!$N$h$&$K$J$j$^$9!#(B</p> + <section id="input"><title>入力の伸張</title> + <p><module>mod_deflate</module> モジュールは、gzip + で圧縮されたリクエスト本体を伸張するフィルタも提供しています。 + この機能を有効にするには、<directive module="core">SetInputFilter</directive> + か <directive module="mod_mime">AddInputFilter</directive> を使用して、 + <code>DEFLATE</code> フィルタを入力フィルタチェインに組み込みます。 + 例えば次のようになります。</p> <example> <Location /dav-area><br /> @@ -189,92 +189,92 @@ </Location> </example> - <p>$B$3$N@_Dj$G$"$l$P!"(B<code>Content-Encoding: gzip</code> - $B%X%C%@$r4^$`%j%/%(%9%H$,Mh$k$H!"K\BN$O<+F0E*$K?-D%$5$l$^$9!#(B - gzip $B%j%/%(%9%HK\BN$rAw?.$9$k%V%i%&%6$O$"$^$j$"$j$^$;$s!#(B - $B$7$+$7!"Nc$($P(B <a href="http://www.webdav.org">WebDAV</a> - $B%/%i%$%"%s%H$N4v$D$+$J$I!"FCJL$J%"%W%j%1!<%7%g%s$G%j%/%(%9%H$N(B - $B05=L$r<B:]$K%5%]!<%H$7$F$$$k$b$N$b$"$j$^$9!#(B</p> - - <note type="warning"><title>Content-Length $B$K4X$9$kCm0U(B</title> - <p>$B%j%/%(%9%HK\BN$=$l<+BN$rI>2A$9$k>l9g$O!"(B<em><code>Content-Length</code> - $B%X%C%@$r?.MQ$7$J$$$G$/$@$5$$(B</em>$B!#(BContent-Length $B%X%C%@$O!"(B - $B%/%i%$%"%s%H$+$iAw?.$5$l$k%G!<%?$ND9$5$rH?1G$7$F$$$k$N$G$"$C$F!"(B - $B?-D%$5$l$?%G!<%?%9%H%j!<%`$N(B<em>$B%P%$%H%+%&%s%H$G$O$"$j$^$;$s(B</em>$B!#(B</p> + <p>この設定であれば、<code>Content-Encoding: gzip</code> + ヘッダを含むリクエストが来ると、本体は自動的に伸張されます。 + gzip リクエスト本体を送信するブラウザはあまりありません。 + しかし、例えば <a href="http://www.webdav.org">WebDAV</a> + クライアントの幾つかなど、特別なアプリケーションでリクエストの + 圧縮を実際にサポートしているものもあります。</p> + + <note type="warning"><title>Content-Length に関する注意</title> + <p>リクエスト本体それ自体を評価する場合は、<em><code>Content-Length</code> + ヘッダを信用しないでください</em>。Content-Length ヘッダは、 + クライアントから送信されるデータの長さを反映しているのであって、 + 伸張されたデータストリームの<em>バイトカウントではありません</em>。</p> </note> </section> </section> -<section id="proxies"><title>Proxy $B%5!<%P$G$N07$$(B</title> +<section id="proxies"><title>Proxy サーバでの扱い</title> - <p><module>mod_deflate</module> $B%b%8%e!<%k$O(B <code>Vary: Accept-Encoding</code> - HTTP $B1~Ez%X%C%@$rAw?.$7$F!"E,@Z$J(B <code>Accept-Encoding</code> - $B%j%/%(%9%H%X%C%@$rAw?.$9$k%/%i%$%"%s%H$KBP$7$F$N$_!"(B - $B%W%m%/%7%5!<%P$,%-%c%C%7%e$7$?1~Ez$rAw?.$9$k$h$&$KCm0U$r4-5/$7$^$9!#(B - $B$3$N$h$&$K$7$F!"05=L$r07$&$3$H$N$G$-$J$$%/%i%$%"%s%H$K(B - $B05=L$5$l$?FbMF$,Aw$i$l$k$3$H$N$J$$$h$&$K$7$^$9!#(B</p> + <p><module>mod_deflate</module> モジュールは <code>Vary: Accept-Encoding</code> + HTTP 応答ヘッダを送信して、適切な <code>Accept-Encoding</code> + リクエストヘッダを送信するクライアントに対してのみ、 + プロクシサーバがキャッシュした応答を送信するように注意を喚起します。 + このようにして、圧縮を扱うことのできないクライアントに + 圧縮された内容が送られることのないようにします。</p> - <p>$B$b$7FCJL$K2?$+$K0MB8$7$F=|30$7$?$$>l9g!"Nc$($P(B <code>User-Agent</code> - $B%X%C%@$J$I$K0MB8$7$F$$$k>l9g!"<jF0$G(B <code>Vary</code> $B%X%C%@$r@_Dj$7$F!"(B - $BDI2C$N@)8B$K$D$$$F%W%m%/%7%5!<%P$KCm0U$r9T$J$&I,MW$,$"$j$^$9!#(B - $BNc$($P(B <code>User-Agent</code> $B$K0MB8$7$F(B <code>DEFLATE</code> - $B$rDI2C$9$kE57?E*$J@_Dj$G$O!"<!$N$h$&$KDI2C$9$k$3$H$K$J$j$^$9!#(B</p> + <p>もし特別に何かに依存して除外したい場合、例えば <code>User-Agent</code> + ヘッダなどに依存している場合、手動で <code>Vary</code> ヘッダを設定して、 + 追加の制限についてプロクシサーバに注意を行なう必要があります。 + 例えば <code>User-Agent</code> に依存して <code>DEFLATE</code> + を追加する典型的な設定では、次のように追加することになります。</p> <example> Header append Vary User-Agent </example> - <p>$B%j%/%(%9%H%X%C%@0J30$N>pJs(B (<em>$BNc$($P(B</em> HTTP $B%P!<%8%g%s(B) - $B$K0MB8$7$F05=L$9$k$+$I$&$+7h$a$k>l9g!"(B - <code>Vary</code> $B%X%C%@$r(B <code>*</code> $B$K@_Dj$9$kI,MW$,$"$j$^$9!#(B - $B$3$N$h$&$K$9$k$H!";EMM$K=`5r$7$?%W%m%/%7$O%-%c%C%7%e$rA4$/9T$J$o$J$/$J$j$^$9!#(B</p> + <p>リクエストヘッダ以外の情報 (<em>例えば</em> HTTP バージョン) + に依存して圧縮するかどうか決める場合、 + <code>Vary</code> ヘッダを <code>*</code> に設定する必要があります。 + このようにすると、仕様に準拠したプロクシはキャッシュを全く行なわなくなります。</p> - <example><title>$BNc(B</title> + <example><title>例</title> Header set Vary * </example> </section> <directivesynopsis> <name>DeflateFilterNote</name> -<description>$B%m%.%s%0MQ$K05=LHf$r%a%b$KDI2C(B</description> +<description>ロギング用に圧縮比をメモに追加</description> <syntax>DeflateFilterNote [<var>type</var>] <var>notename</var></syntax> <contextlist><context>server config</context> <context>virtual host</context></contextlist> <compatibility><var>type</var> is available since Apache 2.0.45</compatibility> <usage> - <p><directive>DeflateFilterNote</directive> $B%G%#%l%/%F%#%V$O(B - $B05=LHf$K4X$9$k%a%b$,%j%/%(%9%H$KIU2C$5$l$k$3$H$r;XDj$7$^$9!#(B - $B%a%b(B (note) $B$NL>A0$O%G%#%l%/%F%#%V$K;XDj$5$l$?CM$G$9!#(B - $B%a%b$O(B<a href="../logs.html#accesslog">$B%"%/%;%9%m%0(B</a>$B$K(B - $BCM$r5-O?$7!"E}7W$r<h$kL\E*$K$b;H$($^$9!#(B</p> + <p><directive>DeflateFilterNote</directive> ディレクティブは + 圧縮比に関するメモがリクエストに付加されることを指定します。 + メモ (note) の名前はディレクティブに指定された値です。 + メモは<a href="../logs.html#accesslog">アクセスログ</a>に + 値を記録し、統計を取る目的にも使えます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> DeflateFilterNote ratio<br /> <br /> LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate<br /> CustomLog logs/deflate_log deflate </example> - <p>$B%m%0$+$i$b$C$H@:L)$JCM$rCj=P$7$?$$>l9g$O!"(B<var>type</var> - $B0z?t$r;HMQ$7$F!"%G!<%?%?%$%W$r%m%0$N%a%b$H$7$F;D$9$h$&$K;XDj$G$-$^$9!#(B - <var>type</var> $B$O<!$N$&$A$N0l$D$G$9!#(B</p> + <p>ログからもっと精密な値を抽出したい場合は、<var>type</var> + 引数を使用して、データタイプをログのメモとして残すように指定できます。 + <var>type</var> は次のうちの一つです。</p> <dl> <dt><code>Input</code></dt> - <dd>$B%U%#%k%?$NF~NO%9%H%j!<%`$N%P%$%H%+%&%s%H$r%a%b$KJ]B8$9$k!#(B</dd> + <dd>フィルタの入力ストリームのバイトカウントをメモに保存する。</dd> <dt><code>Output</code></dt> - <dd>$B%U%#%k%?$N=PNO%9%H%j!<%`$N%P%$%H%+%&%s%H$r%a%b$KJ]B8$9$k!#(B</dd> + <dd>フィルタの出力ストリームのバイトカウントをメモに保存する。</dd> <dt><code>Ratio</code></dt> - <dd>$B05=LN((B (<code>$B=PNO(B / $BF~NO(B * 100</code>) $B$r%a%b$KJ]B8$9$k!#(B - <var>type</var> $B0z?t$r>JN,$7$?>l9g$O!"$3$l$,%G%U%)%k%H$H$J$j$^$9!#(B</dd> + <dd>圧縮率 (<code>出力 / 入力 * 100</code>) をメモに保存する。 + <var>type</var> 引数を省略した場合は、これがデフォルトとなります。</dd> </dl> - <p>$B$^$H$a$k$H!"<!$N$h$&$K%m%0$r<h$k$3$H$K$J$k$G$7$g$&!#(B</p> + <p>まとめると、次のようにログを取ることになるでしょう。</p> - <example><title>$B@:L)$J%m%0:N<h(B</title> + <example><title>精密なログ採取</title> DeflateFilterNote Input instream<br /> DeflateFilterNote Output outstream<br /> DeflateFilterNote Ratio ratio<br /> @@ -288,66 +288,66 @@ <directivesynopsis> <name>DeflateBufferSize</name> -<description>zlib $B$,0lEY$K05=L$9$k2t$NBg$-$5(B</description> +<description>zlib が一度に圧縮する塊の大きさ</description> <syntax>DeflateBufferSize <var>value</var></syntax> <default>DeflateBufferSize 8096</default> <contextlist><context>server config</context> <context>virtual host</context></contextlist> <usage> - <p><directive>DeflateBufferSize</directive> $B%G%#%l%/%F%#%V$O(B - zlib $B$,0lEY$K05=L$9$k2t$NBg$-$5$r%P%$%HC10L$G;XDj$7$^$9!#(B</p> + <p><directive>DeflateBufferSize</directive> ディレクティブは + zlib が一度に圧縮する塊の大きさをバイト単位で指定します。</p> </usage> </directivesynopsis> <directivesynopsis> <name>DeflateWindowSize</name> -<description>Zlib $B$N05=LMQ%&%#%s%I%&$NBg$-$5(B</description> +<description>Zlib の圧縮用ウィンドウの大きさ</description> <syntax>DeflateWindowSize <var>value</var></syntax> <default>DeflateWindowSize 15</default> <contextlist><context>server config</context> <context>virtual host</context></contextlist> <usage> - <p><directive>DeflateWindowSize</directive> $B%G%#%l%/%F%#%V$O(B - zlib $B$N05=LMQ%&%#%s%I%&(B ($BLuCm(B: zlib $B$G;HMQ$5$l$kMzNr%P%C%U%!(B) - $B$NBg$-$5$r;XDj$7$^$9(B (1 $B$+$i(B 15 $B$N4V$NCM(B)$B!#(B - $B0lHLE*$KBg$-$J%&%#%s%I%&%5%$%:$r;HMQ$9$k$H05=LN($,8~>e$7$^$9!#(B - ($BLuCm(B: 2 $B$rDl$H$9$kBP?t$NCM$K$J$j$^$9!#(B - 8 $B$+$i(B 15 $B$K$9$k$N$,NI$$$G$7$g$&!#(B)</p> + <p><directive>DeflateWindowSize</directive> ディレクティブは + zlib の圧縮用ウィンドウ (訳注: zlib で使用される履歴バッファ) + の大きさを指定します (1 から 15 の間の値)。 + 一般的に大きなウィンドウサイズを使用すると圧縮率が向上します。 + (訳注: 2 を底とする対数の値になります。 + 8 から 15 にするのが良いでしょう。)</p> </usage> </directivesynopsis> <directivesynopsis> <name>DeflateMemLevel</name> -<description>zlib $B$,05=L$K;H$&%a%b%j$N%l%Y%k$r;XDj(B</description> +<description>zlib が圧縮に使うメモリのレベルを指定</description> <syntax>DeflateMemLevel <var>value</var></syntax> <default>DeflateMemLevel 9</default> <contextlist><context>server config</context> <context>virtual host</context></contextlist> <usage> - <p><directive>DeflateMemLevel</directive> $B%G%#%l%/%F%#%V$O(B - zlib $B$,05=L$K;H$&%a%b%j$N%l%Y%k$r@_Dj$7$^$9(B (1 $B$+$i(B 9 $B$N4V$NCM(B)$B!#(B - ($BLuCm(B: 2 $B$rDl$H$9$kBP?t$NCM$K$J$j$^$9!#(B - 8 $BDxEY$,NI$$$G$7$g$&!#(B)</p> + <p><directive>DeflateMemLevel</directive> ディレクティブは + zlib が圧縮に使うメモリのレベルを設定します (1 から 9 の間の値)。 + (訳注: 2 を底とする対数の値になります。 + 8 程度が良いでしょう。)</p> </usage> </directivesynopsis> <directivesynopsis> <name>DeflateCompressionLevel</name> -<description>$B=PNO$KBP$7$F9T$J$&05=L$NDxEY(B</description> +<description>出力に対して行なう圧縮の程度</description> <syntax>DeflateCompressionLevel <var>value</var></syntax> -<default>Zlib $B$N%G%U%)%k%H(B</default> +<default>Zlib のデフォルト</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <compatibility>This directive is available since Apache 2.0.45</compatibility> <usage> - <p><directive>DeflateCompressionLevel</directive> $B%G%#%l%/%F%#%V$O(B - $B05=L$NDxEY$r@_Dj$7$^$9!#Bg$-$JCM$G$O!"$h$j05=L$,9T$J$o$l$^$9$,!"(B - CPU $B;q8;$r>CHq$7$^$9!#(B</p> - <p>$BCM$O(B 1 ($BDc05=L(B) $B$+$i(B 9 ($B9b05=L(B) $B$G$9!#(B</p> + <p><directive>DeflateCompressionLevel</directive> ディレクティブは + 圧縮の程度を設定します。大きな値では、より圧縮が行なわれますが、 + CPU 資源を消費します。</p> + <p>値は 1 (低圧縮) から 9 (高圧縮) です。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_dir.xml.ja b/docs/manual/mod/mod_dir.xml.ja index 24eb95c869..087fffe81a 100644 --- a/docs/manual/mod/mod_dir.xml.ja +++ b/docs/manual/mod/mod_dir.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -23,44 +23,44 @@ <modulesynopsis metafile="mod_dir.xml.meta"> <name>mod_dir</name> -<description>$B!V:G8e$N%9%i%C%7%e!W$N%j%@%$%l%/%H$H!"%G%#%l%/%H%j$N(B -$B%$%s%G%C%/%9%U%!%$%k$r07$&5!G=$rDs6!$9$k(B</description> +<description>「最後のスラッシュ」のリダイレクトと、ディレクトリの +インデックスファイルを扱う機能を提供する</description> <status>Base</status> <sourcefile>mod_dir.c</sourcefile> <identifier>dir_module</identifier> <summary> - <p>$B%G%#%l%/%H%j%$%s%G%C%/%9$O!"<!$NFs$D$N$&$A$I$A$i$+$,MxMQ$5$l$^$9(B:</p> + <p>ディレクトリインデックスは、次の二つのうちどちらかが利用されます:</p> <ul> - <li>$B0l$DL\$O!"%f!<%6$,:n@.$7$?%U%!%$%k$rMQ$$$k$b$N$G!"DL>o(B - <code>index.html</code> $B$H$$$&%U%!%$%kL>$r;H$$$^$9!#$3$N%U%!%$%kL>$O!"(B - <directive module="mod_dir">DirectoryIndex</directive> $B%G%#%l%/%F%#%V$G(B - $B;XDj$9$k$3$H$,$G$-$^$9!#$3$N5!G=$O(B <module>mod_dir</module> - $B%b%8%e!<%k$GDs6!$5$l$^$9!#(B</li> - - <li>$B$b$&0l$D$NJ}K!$O!"(B - $B%5!<%P$K$h$C$F<+F0E*$K@8@.$5$l$k%G%#%l%/%H%j%j%9%H$rMQ$$$k>l9g$G$9!#(B - $B$3$N5!G=$O!"(B<module>mod_autoindex</module> - $B%b%8%e!<%k$K$h$jDs6!$5$l$^$9!#(B</li> + <li>一つ目は、ユーザが作成したファイルを用いるもので、通常 + <code>index.html</code> というファイル名を使います。このファイル名は、 + <directive module="mod_dir">DirectoryIndex</directive> ディレクティブで + 指定することができます。この機能は <module>mod_dir</module> + モジュールで提供されます。</li> + + <li>もう一つの方法は、 + サーバによって自動的に生成されるディレクトリリストを用いる場合です。 + この機能は、<module>mod_autoindex</module> + モジュールにより提供されます。</li> </ul> - <p>$B<+F0E*$J%$%s%G%C%/%9@8@.5!G=$r:o=|(B ($B$b$7$/$O8r49(B) - $B$G$-$k$h$&$K!"$3$NFs$D$N5!G=$OJ,N%$5$l$F$$$^$9!#(B</p> + <p>自動的なインデックス生成機能を削除 (もしくは交換) + できるように、この二つの機能は分離されています。</p> - <p>$B$J$*(B <code>http://servername/foo/dirname</code> $B$H$$$&(B URL - $B$X$N%j%/%(%9%H$,$"$C$?:]$K!"(B<code>dirname</code> - $B$H$$$&%G%#%l%/%H%j$,$"$l$P!"!V:G8e$K%9%i%C%7%e$r$D$1$?7A!W$N(B URL - $B$X$N%j%@%$%l%/%H$rAw=P$7$^$9!#(B - $B%G%#%l%/%H%j$X$N%"%/%;%9$O%9%i%C%7%e$G=*$o$C$F$$$kI,MW$,$"$j!"(B - <code>mod_dir</code> $B$O!"(B<code>http://servername/foo/dirname/</code> - $B$X$N%j%@%$%l%/%H$rAw=P$9$k$3$H$K$J$j$^$9!#(B</p> + <p>なお <code>http://servername/foo/dirname</code> という URL + へのリクエストがあった際に、<code>dirname</code> + というディレクトリがあれば、「最後にスラッシュをつけた形」の URL + へのリダイレクトを送出します。 + ディレクトリへのアクセスはスラッシュで終わっている必要があり、 + <code>mod_dir</code> は、<code>http://servername/foo/dirname/</code> + へのリダイレクトを送出することになります。</p> </summary> <directivesynopsis> <name>DirectoryIndex</name> -<description>$B%/%i%$%"%s%H$,%G%#%l%/%H%j$r%j%/%(%9%H$7$?$H$-$KD4$Y$k(B -$B%j%=!<%9$N%j%9%H(B</description> +<description>クライアントがディレクトリをリクエストしたときに調べる +リソースのリスト</description> <syntax>DirectoryIndex <var>local-url</var> [<var>local-url</var>] ...</syntax> <default>DirectoryIndex index.html</default> @@ -70,72 +70,72 @@ <usage> <p> - $B%/%i%$%"%s%H$,!"%G%#%l%/%H%jL>$N:G8e$K!V(B/$B!W(B - $B$r;XDj$7$F%G%#%l%/%H%j%$%s%G%C%/%9$rMW5a$9$k>l9g$KC5$9%j%=!<%9$N%j%9%H$r(B - <directive>DirectoryIndex</directive> $B%G%#%l%/%F%#%V$G@_Dj$7$^$9!#(B + クライアントが、ディレクトリ名の最後に「/」 + を指定してディレクトリインデックスを要求する場合に探すリソースのリストを + <directive>DirectoryIndex</directive> ディレクティブで設定します。 <var>Local-url</var> - $B$O!"%j%/%(%9%H$5$l$?%G%#%l%/%H%j$KBP1~$9$k!"%5!<%P>e$N%I%-%e%a%s%H$N(B - (% $B%(%s%3!<%I$5$l$?(B) URL $B$G!"IaDL$O%G%#%l%/%H%jCf$N%U%!%$%k$NL>A0$G$9!#(B - $BJ#?t$N(B URL $B$,@_Dj$5$l$?>l9g$K$O!":G=i$K8+$D$+$C$?$b$N$rJV$7$^$9!#(B - $B$=$l$i$,8+$D$+$i$:!"(B<code>Indexes</code> - $B%*%W%7%g%s$,%;%C%H$5$l$F$$$k>l9g!"%G%#%l%/%H%j$N%j%9%H$r@8@.$7$^$9!#(B + は、リクエストされたディレクトリに対応する、サーバ上のドキュメントの + (% エンコードされた) URL で、普通はディレクトリ中のファイルの名前です。 + 複数の URL が設定された場合には、最初に見つかったものを返します。 + それらが見つからず、<code>Indexes</code> + オプションがセットされている場合、ディレクトリのリストを生成します。 </p> - <example><title>$BNc(B</title> + <example><title>例</title> DirectoryIndex index.html </example> - <p><code>http://myserver/docs/</code> $B$X$N%"%/%;%9$,$"$j!"(B + <p><code>http://myserver/docs/</code> へのアクセスがあり、 <code>http://myserver/docs/index.html</code> - $B$,B8:_$9$l$P!"$3$N(B URL $B$,JV$5$l$^$9!#(B - $B$b$7B8:_$7$J$1$l$P!"%G%#%l%/%H%j$N%j%9%H$,JV$5$l$^$9!#(B</p> + が存在すれば、この URL が返されます。 + もし存在しなければ、ディレクトリのリストが返されます。</p> - <p>$BCm(B: $B%I%-%e%a%s%H$,F1$8%G%#%l%/%H%jFb$KB8:_$9$k$OI,MW$"$j$^$;$s!#(B + <p>注: ドキュメントが同じディレクトリ内に存在するは必要ありません。 </p> <example> DirectoryIndex index.html index.txt /cgi-bin/index.pl </example> - <p>$B$H$7$?>l9g!"(B<code>index.html</code> $B$H(B <code>index.txt</code> - $B$N$I$A$i$b%G%#%l%/%H%jFb$KB8:_$7$J$$>l9g!"(BCGI $B%9%/%j%W%H(B - <code>/cgi-bin/index.pl</code> $B$,<B9T$5$l$^$9!#(B</p> + <p>とした場合、<code>index.html</code> と <code>index.txt</code> + のどちらもディレクトリ内に存在しない場合、CGI スクリプト + <code>/cgi-bin/index.pl</code> が実行されます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>DirectorySlash</name> -<description>$B%Q%9KvHx$N%9%i%C%7%e$G%j%@%$%l%/%H$9$k$+$I$&$+$N%*%s%*%U$r%H%0%k$5$;$k(B</description> +<description>パス末尾のスラッシュでリダイレクトするかどうかのオンオフをトグルさせる</description> <syntax>DirectorySlash On|Off</syntax> <default>DirectorySlash On</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>Indexes</override> -<compatibility>2.0.51 $B0J9_(B</compatibility> +<compatibility>2.0.51 以降</compatibility> <usage> - <p>$BMW5a$N$"$C$?(B URL $B$,%G%#%l%/%H%j$r;X$9$+$I$&$+$r!"(B - <module>mod_dir</module> $B$,D4@0$9$k$Y$-$+$I$&$+$r(B + <p>要求のあった URL がディレクトリを指すかどうかを、 + <module>mod_dir</module> が調整するべきかどうかを <directive>DirectorySlash</directive> - $B%G%#%l%/%F%#%V$G@_Dj$7$^$9!#(B</p> + ディレクティブで設定します。</p> - <p>$BE57?E*$K$O!"%f!<%6$,KvHx$N%9%i%C%7%eL5$7$G%j%=!<%9$X$N%j%/%(%9%H$rH/9T$7!"(B - $B$=$7$F!"$=$N%j%=!<%9$,%G%#%l%/%H%j$r;X$7$F$$$?>l9g!"(B<module>mod_dir</module> - $B$O!"KvHx$K%9%i%C%7%e$r(B<em>$BIU2C(B</em>$B$7$?>e$GF1$8%j%=!<%9$K%j%@%$%l%/%H$5$;$^$9!#(B - $B$3$N5sF0$K$O4v$D$+M}M3$,$"$j$^$9(B:</p> + <p>典型的には、ユーザが末尾のスラッシュ無しでリソースへのリクエストを発行し、 + そして、そのリソースがディレクトリを指していた場合、<module>mod_dir</module> + は、末尾にスラッシュを<em>付加</em>した上で同じリソースにリダイレクトさせます。 + この挙動には幾つか理由があります:</p> <ul> - <li>$B%f!<%6$O!":G=*E*$K$O%j%=!<%9$NJLL>(B URL $B$r%j%/%(%9%H$9$k$3$H$K$J$k!#(B</li> - <li><module>mod_autoindex</module> $B$,4|BTDL$j$KF0$/!#(B<module>mod_autoindex</module> - $B$N@8@.$9$k%j%s%/$O%Q%9$r=PNO$7$^$;$s$N$G!"%9%i%C%7%e$,$J$$>l9g$O4V0c$C$?%Q%9$r(B - $B;X$7$F$7$^$&$3$H$K$J$j$^$9!#(B</li> - <li><directive module="mod_dir">DirectoryIndex</directive> $B$O!"(B - $BKvHx$K%9%i%C%7%e$,$D$$$F$$$k%j%/%(%9%H$K$D$$$F(B<em>$B$N$_(B</em>$BI>2A$5$l$k!#(B</li> - <li>HTML $B%Z!<%8$NAjBP(B URL $B;2>H$,@5$7$/F0:n$9$k!#(B</li> + <li>ユーザは、最終的にはリソースの別名 URL をリクエストすることになる。</li> + <li><module>mod_autoindex</module> が期待通りに動く。<module>mod_autoindex</module> + の生成するリンクはパスを出力しませんので、スラッシュがない場合は間違ったパスを + 指してしまうことになります。</li> + <li><directive module="mod_dir">DirectoryIndex</directive> は、 + 末尾にスラッシュがついているリクエストについて<em>のみ</em>評価される。</li> + <li>HTML ページの相対 URL 参照が正しく動作する。</li> </ul> - <p>$B$H$O$$$(!"$b$7$3$&$$$C$?8z2L$rK>$^$J$$!"$+$D!"(B - $B>e5-$N$h$&$JM}M3$,Ev$F$O$^$i$J$$>l9g$O!"%j%@%$%l%/%H$r<!$N$h$&$K$7$F%*%U$K$G$-$^$9(B:</p> + <p>とはいえ、もしこういった効果を望まない、かつ、 + 上記のような理由が当てはまらない場合は、リダイレクトを次のようにしてオフにできます:</p> <example> # see security warning below!<br /> @@ -147,16 +147,16 @@ </Location> </example> - <note type="warning"><title>$B%;%-%e%j%F%#7Y9p(B</title> - <p>$BKvHx$N%9%i%C%7%e$G$N%j%@%$%l%/%H$r%*%U$K$9$k$H!"7k2LE*$K>pJsO31L$r(B - $B>7$/$3$H$K$J$k$+$b$7$l$^$;$s!#(B - <module>mod_autoindex</module> $B$,M-8z(B (<code>Options +Indexes</code>) $B$G!"(B - <directive module="mod_dir">DirectoryIndex</directive> $B$,M-8z$J%j%=!<%9(B ($BNc$($P(B - <code>index.html</code>) $B$r;X$7$F$$$F!"$^$?!"MW5a$N$"$C$?(B URL $B$KFCJL$J(B - $B%O%s%I%i$,@_Dj$5$l$F$$$J$$>l9g$r9M$($F$_$F$/$@$5$$!#(B - $B$3$N>l9gKvHx$K%9%i%C%7%e$N$D$$$F$$$k%j%/%(%9%H$KBP$7$F$O(B <code>index.html</code> - $B%U%!%$%k$,JV$5$l$^$9!#(B<strong>$B$7$+$7%9%i%C%7%e$N$J$$%j%/%(%9%H$KBP$7$F$O!"(B - $B%G%#%l%/%H%j$NFbMF0lMw$rJV$7$F$7$^$$$^$9!#(B</strong></p> + <note type="warning"><title>セキュリティ警告</title> + <p>末尾のスラッシュでのリダイレクトをオフにすると、結果的に情報漏洩を + 招くことになるかもしれません。 + <module>mod_autoindex</module> が有効 (<code>Options +Indexes</code>) で、 + <directive module="mod_dir">DirectoryIndex</directive> が有効なリソース (例えば + <code>index.html</code>) を指していて、また、要求のあった URL に特別な + ハンドラが設定されていない場合を考えてみてください。 + この場合末尾にスラッシュのついているリクエストに対しては <code>index.html</code> + ファイルが返されます。<strong>しかしスラッシュのないリクエストに対しては、 + ディレクトリの内容一覧を返してしまいます。</strong></p> </note> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_disk_cache.xml.ja b/docs/manual/mod/mod_disk_cache.xml.ja index 87ca0c4394..674f6d897d 100644 --- a/docs/manual/mod/mod_disk_cache.xml.ja +++ b/docs/manual/mod/mod_disk_cache.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:515267 (outdated) --> @@ -23,46 +23,46 @@ <modulesynopsis metafile="mod_disk_cache.xml.meta"> <name>mod_disk_cache</name> -<description>URI $B$r%-!<$K$7$?%3%s%F%s%D%-%c%C%7%e%9%H%l!<%84IM}(B</description> +<description>URI をキーにしたコンテンツキャッシュストレージ管理</description> <status>Extension</status> <sourcefile>mod_disk_cache.c</sourcefile> <identifier>disk_cache_module</identifier> <summary> - <p><module>mod_disk_cache</module> $B$O%G%#%9%/$r;HMQ$7$?%9%H%l!<%8(B - $B4IM}5!9=$r<BAu$7$F$$$^$9!#<g$K(B - <module>mod_cache</module> $B$HAH$_9g$o$;$F;H$o$l$^$9!#(B</p> + <p><module>mod_disk_cache</module> はディスクを使用したストレージ + 管理機構を実装しています。主に + <module>mod_cache</module> と組み合わせて使われます。</p> - <p>$B%3%s%F%s%D$N%-%c%C%7%e$X$NJ]B8$H<hF@$O(B URI $B$K4p$E$$$?%-!<$,;H$o$l$^$9!#(B - $B%"%/%;%9J]8n$N$+$1$i$l$F$$$k%3%s%F%s%D$O%-%c%C%7%e$5$l$^$;$s!#(B</p> + <p>コンテンツのキャッシュへの保存と取得は URI に基づいたキーが使われます。 + アクセス保護のかけられているコンテンツはキャッシュされません。</p> - <p>$B%-%c%C%7%e$NBg$-$5$r:GBg%l%Y%k$G0];}$9$k$?$a$K(B - <program>htcacheclean</program> $B$r;H$&$3$H$,$G$-$^$9!#(B</p> + <p>キャッシュの大きさを最大レベルで維持するために + <program>htcacheclean</program> を使うことができます。</p> - <note><title>$BCm(B:</title> - <p><module>mod_disk_cache</module> $B$O(B - <module>mod_cache</module> $B$rI,MW$H$7$^$9(B</p> + <note><title>注:</title> + <p><module>mod_disk_cache</module> は + <module>mod_cache</module> を必要とします</p> </note> </summary> <directivesynopsis> <name>CacheRoot</name> -<description>$B%-%c%C%7%e%U%!%$%k$,J]4I$5$l$k%k!<%H%G%#%l%/%H%j(B</description> +<description>キャッシュファイルが保管されるルートディレクトリ</description> <syntax>CacheRoot <var>directory</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>CacheRoot</directive> $B%G%#%l%/%F%#%V$O%-%c%C%7%e%U%!%$%k$r(B - $BJ]4I$9$k$?$a$N%G%#%9%/>e$N%G%#%l%/%H%j$r;XDj$7$^$9!#(B<module - >mod_disk_cache</module> $B%b%8%e!<%k$,(B Apache $B%5!<%P$K%m!<%I$5$l$F(B - $B$$$k$+!"AH$_9~$^$l$F$$$l$P!"$3$N%G%#%l%/%F%#%V$O(B<em>$BI,$:(B</em> - $BDj5A$7$J$1$l$P$J$j$^$;$s!#(B - <directive>CacheRoot</directive> $B$NCM$r;XDj$7$J$1$l$P!"(B - $B@_Dj%U%!%$%k$N=hM}$G%(%i!<$K$J$j$^$9!#(B<directive - module="mod_disk_cache">CacheDirLevels</directive> $B%G%#%l%/%F%#%V$H(B <directive - module="mod_disk_cache">CacheDirLength</directive> $B%G%#%l%/%F%#%V$,(B - $B;XDj$5$l$?%k!<%H%G%#%l%/%H%j2<$N%G%#%l%/%H%j9=@.$rDj5A$7$^$9!#(B</p> + <p><directive>CacheRoot</directive> ディレクティブはキャッシュファイルを + 保管するためのディスク上のディレクトリを指定します。<module + >mod_disk_cache</module> モジュールが Apache サーバにロードされて + いるか、組み込まれていれば、このディレクティブは<em>必ず</em> + 定義しなければなりません。 + <directive>CacheRoot</directive> の値を指定しなければ、 + 設定ファイルの処理でエラーになります。<directive + module="mod_disk_cache">CacheDirLevels</directive> ディレクティブと <directive + module="mod_disk_cache">CacheDirLength</directive> ディレクティブが + 指定されたルートディレクトリ下のディレクトリ構成を定義します。</p> <example> CacheRoot c:/cacheroot @@ -72,22 +72,22 @@ <directivesynopsis> <name>CacheDirLevels</name> -<description>$B%-%c%C%7%e$N%5%V%G%#%l%/%H%j$N?<$5$N?t(B</description> +<description>キャッシュのサブディレクトリの深さの数</description> <syntax>CacheDirLevels <var>levels</var></syntax> <default>CacheDirLevels 3</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>CacheDirLevels</directive> $B%G%#%l%/%F%#%V$O%-%c%C%7%e$N(B - $B%5%V%G%#%l%/%H%j$N?<$5$r@_Dj$7$^$9!#%-%c%C%7%e%G!<%?$O(B <directive - module="mod_disk_cache">CacheRoot</directive> $B%G%#%l%/%H%j$+$i(B - $B$3$N%G%#%l%/%H%j$N?<$5J,2<$N%G%#%l%/%H%j$KJ]B8$5$l$^$9!#(B</p> + <p><directive>CacheDirLevels</directive> ディレクティブはキャッシュの + サブディレクトリの深さを設定します。キャッシュデータは <directive + module="mod_disk_cache">CacheRoot</directive> ディレクトリから + このディレクトリの深さ分下のディレクトリに保存されます。</p> <note> <p><directive>CacheDirLevels</directive>* - <directive module="mod_disk_cache">CacheDirLength</directive> $B$N(B - $B7k2L$O(B 20 $B0JFb$G$J$1$l$P$J$j$^$;$s!#(B</p> + <directive module="mod_disk_cache">CacheDirLength</directive> の + 結果は 20 以内でなければなりません。</p> </note> <example> @@ -98,20 +98,20 @@ <directivesynopsis> <name>CacheDirLength</name> -<description>$B%5%V%G%#%l%/%H%jL>$NJ8;z?t(B</description> +<description>サブディレクトリ名の文字数</description> <syntax>CacheDirLength <var>length</var></syntax> <default>CacheDirLength 2</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>CacheDirLength</directive> $B%G%#%l%/%F%#%V$O%-%c%C%7%e(B - $B3,AX$N3F%5%V%G%#%l%/%H%j$NJ8;z?t$r@_Dj$7$^$9!#(B</p> + <p><directive>CacheDirLength</directive> ディレクティブはキャッシュ + 階層の各サブディレクトリの文字数を設定します。</p> <note> <p><directive>CacheDirLevels</directive>* - <directive module="mod_disk_cache">CacheDirLength</directive> $B$N(B - $B7k2L$O(B 20 $B0JFb$G$J$1$l$P$J$j$^$;$s!#(B</p> + <directive module="mod_disk_cache">CacheDirLength</directive> の + 結果は 20 以内でなければなりません。</p> </note> <example> @@ -122,15 +122,15 @@ <directivesynopsis> <name>CacheMinFileSize</name> -<description>$B%-%c%C%7%e$KJ]4I$5$l$k%I%-%e%a%s%H$N:G>.8B$N(B ($B%P%$%H$G$N(B) $BBg$-$5(B</description> +<description>キャッシュに保管されるドキュメントの最小限の (バイトでの) 大きさ</description> <syntax>CacheMinFileSize <var>bytes</var></syntax> <default>CacheMinFileSize 1</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>CacheMinFileSize</directive> $B%G%#%l%/%F%#%V$O!"%I%-%e%a%s%H$r(B - $B%-%c%C%7%e$9$k$+$I$&$+$rH=Dj$9$k!":G>.$N%5%$%:$r%P%$%H?t$G@_Dj$7$^$9!#(B</p> + <p><directive>CacheMinFileSize</directive> ディレクティブは、ドキュメントを + キャッシュするかどうかを判定する、最小のサイズをバイト数で設定します。</p> <example> CacheMinFileSize 64 @@ -140,15 +140,15 @@ <directivesynopsis> <name>CacheMaxFileSize</name> -<description>$B%-%c%C%7%e$KJ]4I$5$l$k%I%-%e%a%s%H$N:GBg$N(B ($B%P%$%H$G$N(B) $B%5%$%:(B</description> +<description>キャッシュに保管されるドキュメントの最大の (バイトでの) サイズ</description> <syntax>CacheMaxFileSize <var>bytes</var></syntax> <default>CacheMaxFileSize 1000000</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>CacheMaxFileSize</directive> $B%G%#%l%/%F%#%V$O!"%I%-%e%a%s%H$r(B - $B%-%c%C%7%e$9$k$+$I$&$+$rH=Dj$9$k!":GBg$N%5%$%:$r%P%$%H?t$G@_Dj$7$^$9!#(B</p> + <p><directive>CacheMaxFileSize</directive> ディレクティブは、ドキュメントを + キャッシュするかどうかを判定する、最大のサイズをバイト数で設定します。</p> <example> CacheMaxFileSize 64000 diff --git a/docs/manual/mod/mod_dumpio.xml.ja b/docs/manual/mod/mod_dumpio.xml.ja index 9fbbc2da71..ac4c86bdfc 100644 --- a/docs/manual/mod/mod_dumpio.xml.ja +++ b/docs/manual/mod/mod_dumpio.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420993:559006 (outdated) --> @@ -23,45 +23,45 @@ <modulesynopsis metafile="mod_dumpio.xml.meta"> <name>mod_dumpio</name> -<description>$BK>$`$h$&$K$9$Y$F$N(B I/O $B$r%(%i!<%m%0$K%@%s%W$9$k(B</description> +<description>望むようにすべての I/O をエラーログにダンプする</description> <status>Extension</status> <sourcefile>mod_dumpio.c</sourcefile> <identifier>dumpio_module</identifier> <summary> - <p><code>mod_dumpio</code> $B$r;H$&$H!"(BApache $B$,<u$1<h$C$?$9$Y$F$NF~NO$H(B - Apache $B$K$h$jAw$i$l$?$9$Y$F$N=PNO$H$N!"N>J}$b$7$/$O$I$A$i$+0lJ}$r!"(B - $B%(%i!<%m%0%U%!%$%k$K%m%0<}=8(B <transnote>$B%@%s%W(B dump</transnote> - $B$G$-$^$9!#(B</p> - - <p>$B%G!<%?$N%m%.%s%0$O!"(BSSL $BI|9f2=$ND>8e(B ($BF~NO(B) $B$H(B SSL - $B0E9f2=$ND>A0(B ($B=PNO(B) $B$K9T$J$o$l$^$9!#$4A[A|$NDL$j!"(B - $B$3$N%b%8%e!<%k$O$H$F$D$b$J$$%G!<%?NL$r=PNO$7$^$9$N$G!"(B - $BLdBj$r%G%P%C%0$7$F$$$k$H$-$K$N$_;HMQ$9$k$h$&$K$7$F$/$@$5$$!#(B</p> + <p><code>mod_dumpio</code> を使うと、Apache が受け取ったすべての入力と + Apache により送られたすべての出力との、両方もしくはどちらか一方を、 + エラーログファイルにログ収集 <transnote>ダンプ dump</transnote> + できます。</p> + + <p>データのロギングは、SSL 復号化の直後 (入力) と SSL + 暗号化の直前 (出力) に行なわれます。ご想像の通り、 + このモジュールはとてつもないデータ量を出力しますので、 + 問題をデバッグしているときにのみ使用するようにしてください。</p> </summary> <section id="enable"> - <title>dumpio $B%5%]!<%H$rM-8z$K$9$k(B</title> + <title>dumpio サポートを有効にする</title> - <p>$B$3$N%b%8%e!<%k$rM-8z$K$9$k$K$O!"%b%8%e!<%k$,%3%s%Q%$%k$5$l$F$$$F!"(B - $B<B9T$9$k(B Apache $B$N@_Dj$G%5!<%P$KAH$_9~$^$l$F$$$kI,MW$,$"$j$^$9!#(B - $B%m%.%s%05!G=$O!"0J2<$N%G%#%l%/%F%#%V$r;H$C$FM-8z$K$7$?$j(B - $BL58z$K$7$?$j$G$-$^$9!#(B</p> + <p>このモジュールを有効にするには、モジュールがコンパイルされていて、 + 実行する Apache の設定でサーバに組み込まれている必要があります。 + ロギング機能は、以下のディレクティブを使って有効にしたり + 無効にしたりできます。</p> </section> <directivesynopsis> <name>DumpIOInput</name> -<description>$B%(%i!<%m%0$K$9$Y$F$NF~NO%G!<%?$r%@%s%W(B</description> +<description>エラーログにすべての入力データをダンプ</description> <syntax>DumpIOInput On|Off</syntax> <default>DumpIOInput Off</default> <contextlist><context>server config</context></contextlist> -<compatibility>DumpIOInput $B$O(B Apache 2.1.3 $B0J9_$N$_$G;HMQ2DG=(B</compatibility> +<compatibility>DumpIOInput は Apache 2.1.3 以降のみで使用可能</compatibility> <usage> - <p>$B$9$Y$F$NF~NO$N%@%s%W$rM-8z$K$7$^$9!#(B</p> + <p>すべての入力のダンプを有効にします。</p> - <example><title>$BNc(B</title> + <example><title>例</title> DumpIOInput On </example> </usage> @@ -71,16 +71,16 @@ <directivesynopsis> <name>DumpIOOutput</name> -<description>$B%(%i!<%m%0$K$9$Y$F$N=PNO%G!<%?$r%@%s%W(B</description> +<description>エラーログにすべての出力データをダンプ</description> <syntax>DumpIOOutput On|Off</syntax> <default>DumpIOOutput Off</default> <contextlist><context>server config</context></contextlist> -<compatibility>DumpIOOutput $B$O(B Apache 2.1.3 $B0J9_$G$N$_;HMQ2DG=(B</compatibility> +<compatibility>DumpIOOutput は Apache 2.1.3 以降でのみ使用可能</compatibility> <usage> - <p>$B$9$Y$F$N=PNO$N%@%s%W$rM-8z$K$7$^$9!#(B</p> + <p>すべての出力のダンプを有効にします。</p> - <example><title>$BNc(B</title> + <example><title>例</title> DumpIOOutput On </example> </usage> diff --git a/docs/manual/mod/mod_echo.xml.ja b/docs/manual/mod/mod_echo.xml.ja index fc2897fbb0..a40839c91a 100644 --- a/docs/manual/mod/mod_echo.xml.ja +++ b/docs/manual/mod/mod_echo.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:654507 (outdated) --> @@ -23,33 +23,33 @@ <modulesynopsis metafile="mod_echo.xml.meta"> <name>mod_echo</name> -<description>$B%W%m%H%3%k%b%8%e!<%k$N35MW$r<($9$?$a$NC1=c$J%(%3!<%5!<%P(B +<description>プロトコルモジュールの概要を示すための単純なエコーサーバ </description> <status>Experimental</status> <sourcefile>mod_echo.c</sourcefile> <identifier>echo_module</identifier> -<compatibility>Apache 2.0 $B0J9_(B</compatibility> +<compatibility>Apache 2.0 以降</compatibility> <summary> - <p>$BK\%b%8%e!<%k$O%3%s%;%W%H$rEA$($k$?$a$N%W%m%H%3%k%b%8%e!<%k$N(B - $B<BAuNc$H$J$C$F$$$^$9!#C1=c$J%(%3!<%5!<%P$rDs6!$7$^$9!#(B - Telnet $B$G@\B3$7!"J8;zNs$rAw?.$9$k$H!"%(%3!<$rJV$7$^$9!#(B</p> + <p>本モジュールはコンセプトを伝えるためのプロトコルモジュールの + 実装例となっています。単純なエコーサーバを提供します。 + Telnet で接続し、文字列を送信すると、エコーを返します。</p> </summary> <directivesynopsis> <name>ProtocolEcho</name> -<description>$B%(%3!<%5!<%P$NM-8zL58z$r@_Dj$7$^$9!#(B</description> +<description>エコーサーバの有効無効を設定します。</description> <syntax>ProtocolEcho On|Off</syntax> <contextlist><context>server config</context> <context>virtual host</context></contextlist> -<compatibility>Apache 2.0 $B0J9_(B</compatibility> +<compatibility>Apache 2.0 以降</compatibility> <usage> - <p><directive>ProtocolEcho</directive> $B%G%#%l%/%F%#%V$G(B - $B%(%3!<%5!<%P$NM-8zL58z$r@_Dj$7$^$9!#(B</p> + <p><directive>ProtocolEcho</directive> ディレクティブで + エコーサーバの有効無効を設定します。</p> - <example><title>$BNc(B</title> + <example><title>例</title> ProtocolEcho On </example> </usage> diff --git a/docs/manual/mod/mod_env.xml.ja b/docs/manual/mod/mod_env.xml.ja index 643e8642ef..7ce40f7f75 100644 --- a/docs/manual/mod/mod_env.xml.ja +++ b/docs/manual/mod/mod_env.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,23 +23,23 @@ <modulesynopsis metafile="mod_env.xml.meta"> <name>mod_env</name> -<description>CGI $B%9%/%j%W%H5Z$S(B SSI -$B%Z!<%8$KEO$5$l$k4D6-JQ?t$rJQ99$9$k5!G=$rDs6!$9$k(B</description> +<description>CGI スクリプト及び SSI +ページに渡される環境変数を変更する機能を提供する</description> <status>Base</status> <sourcefile>mod_env.c</sourcefile> <identifier>env_module</identifier> <summary> - <p>$B$3$N%b%8%e!<%k$K$h$j(B CGI $B%9%/%j%W%H$H(B SSI - $B%Z!<%8$KE,MQ$5$l$k4D6-JQ?t$r@)8f$9$k$3$H$,$G$-$k$h$&$K$J$j$^$9!#(B - $B4D6-JQ?t$O(B <program>httpd</program> $B%W%m%;%9$r5/F0$7$?%7%'%k$+$iEO$5$l$^$9!#$^$?!"(B - $B@_Dj%U%!%$%k$G4D6-JQ?t$r@_Dj$7$?$j!":o=|$7$?$j$9$k$3$H$,$G$-$^$9!#(B + <p>このモジュールにより CGI スクリプトと SSI + ページに適用される環境変数を制御することができるようになります。 + 環境変数は <program>httpd</program> プロセスを起動したシェルから渡されます。また、 + 設定ファイルで環境変数を設定したり、削除したりすることができます。 </p> </summary> -<seealso><a href="../env.html">$B4D6-JQ?t(B</a></seealso> +<seealso><a href="../env.html">環境変数</a></seealso> <directivesynopsis> <name>PassEnv</name> -<description>$B%7%'%k$+$i$N4D6-JQ?t$rEO$9(B</description> +<description>シェルからの環境変数を渡す</description> <syntax>PassEnv <var>env-variable</var> [<var>env-variable</var>] ...</syntax> <contextlist> @@ -49,10 +49,10 @@ <usage> - <p><program>httpd</program> $B%W%m%;%9$r5/F0$7$?%7%'%k$N4D6-$+$i(B CGI $B%9%/%j%W%H$H(B - SSI $B%Z!<%8$KEO$94D6-JQ?t$r0l$D0J>e;XDj$7$^$9!#(B</p> + <p><program>httpd</program> プロセスを起動したシェルの環境から CGI スクリプトと + SSI ページに渡す環境変数を一つ以上指定します。</p> - <example><title>$BNc(B</title> + <example><title>例</title> PassEnv LD_LIBRARY_PATH </example> </usage> @@ -60,17 +60,17 @@ <directivesynopsis> <name>SetEnv</name> -<description>$B4D6-JQ?t$r@_Dj$9$k(B</description> +<description>環境変数を設定する</description> <syntax>SetEnv <var>env-variable</var> <var>value</var></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>FileInfo</override> <usage> - <p>$B4D6-JQ?t$r@_Dj$7!"$=$l$r(B CGI $B%9%/%j%W%H$H(B SSI - $B%Z!<%8$KEO$9$h$&$K$7$^$9!#(B</p> + <p>環境変数を設定し、それを CGI スクリプトと SSI + ページに渡すようにします。</p> - <example><title>$BNc(B</title> + <example><title>例</title> SetEnv SPECIAL_PATH /foo/bin </example> </usage> @@ -78,7 +78,7 @@ <directivesynopsis> <name>UnsetEnv</name> -<description>$B4D6-$+$iJQ?t$r<h$j=|$/(B</description> +<description>環境から変数を取り除く</description> <syntax>UnsetEnv <var>env-variable</var> [<var>env-variable</var>] ...</syntax> <contextlist> @@ -87,10 +87,10 @@ <override>FileInfo</override> <usage> - <p>CGI $B%9%/%j%W%H$H(B SSI - $B%Z!<%8$KEO$5$l$k4D6-JQ?t$+$i;XDj$5$l$?4D6-JQ?t$r<h$j=|$-$^$9!#(B</p> + <p>CGI スクリプトと SSI + ページに渡される環境変数から指定された環境変数を取り除きます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> UnsetEnv LD_LIBRARY_PATH </example> </usage> diff --git a/docs/manual/mod/mod_expires.xml.ja b/docs/manual/mod/mod_expires.xml.ja index 493fd26912..ee95e3fe68 100644 --- a/docs/manual/mod/mod_expires.xml.ja +++ b/docs/manual/mod/mod_expires.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,38 +23,38 @@ <modulesynopsis metafile="mod_expires.xml.meta"> <name>mod_expires</name> -<description>$B%f!<%6$N;XDj$7$?4p=`$K4p$E$$$?(B <code>Expires</code> $B$H(B -<code>Cache-Control</code> HTTP $B%X%C%@$N@8@.(B</description> +<description>ユーザの指定した基準に基づいた <code>Expires</code> と +<code>Cache-Control</code> HTTP ヘッダの生成</description> <status>Extension</status> <sourcefile>mod_expires.c</sourcefile> <identifier>expires_module</identifier> <summary> - <p>$B$3$N%b%8%e!<%k$O%5!<%P1~Ez$N(B <code>Expires</code> HTTP $B%X%C%@(B - $B$H(B <code>Cache-Control</code> $B%X%C%@$N(B <code>max-age</code> $B%G%#%l%/%F%#%V$N(B - $B@_Dj$r@)8f$7$^$9!#85$N%U%!%$%k$,:n@.$5$l$?;~9o$^$?$O(B - $B%/%i%$%"%s%H$N%"%/%;%9;~9o$N$I$A$i$+$K4p$E$$$F4|8B@Z$lF|$r(B - $B@_Dj$9$k$3$H$,$G$-$^$9!#(B</p> - - <p>$B$3$l$i$N%X%C%@$O%/%i%$%"%s%H$KJ8=q$N(B - $BM-8z@-$H7QB3@-$r;X<($7$^$9!#J8=q$,%-%c%C%7%e$5$l$?>l9g$K$O!"(B - $B;XDj;~9o$KC#$9$k$^$G$O!"85$N>l=j$+$i<hF@$9$kBe$o$j$K(B - $B%-%c%C%7%e$5$l$F$$$k$b$N$r;H$&$3$H$,$G$-$^$9!#$=$N8e$O!"(B - $B%-%c%C%7%e$K$"$k%3%T!<$O4|8B@Z$l(B (expired) $B$GL58z$G$"$k$H$5$l!"(B - $B85$N>l=j$+$i?7$7$$$b$N$r<hF@$9$kI,MW$,$"$j$^$9!#(B</p> - - <p><code>max-age</code> $B0J30(B (<a + <p>このモジュールはサーバ応答の <code>Expires</code> HTTP ヘッダ + と <code>Cache-Control</code> ヘッダの <code>max-age</code> ディレクティブの + 設定を制御します。元のファイルが作成された時刻または + クライアントのアクセス時刻のどちらかに基づいて期限切れ日を + 設定することができます。</p> + + <p>これらのヘッダはクライアントに文書の + 有効性と継続性を指示します。文書がキャッシュされた場合には、 + 指定時刻に達するまでは、元の場所から取得する代わりに + キャッシュされているものを使うことができます。その後は、 + キャッシュにあるコピーは期限切れ (expired) で無効であるとされ、 + 元の場所から新しいものを取得する必要があります。</p> + + <p><code>max-age</code> 以外 (<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9">RFC - 2616 section 14.9</a> $B;2>H(B) $B$N(B <code>Cache-Control</code> $B$N%G%#%l%/%F%#%V$r(B - $BA`:n$9$k$K$O(B <directive - module="mod_headers">Header</directive> $B%G%#%l%/%F%#%V$r(B - $B;H$&$3$H$,$G$-$^$9!#(B</p></summary> + 2616 section 14.9</a> 参照) の <code>Cache-Control</code> のディレクティブを + 操作するには <directive + module="mod_headers">Header</directive> ディレクティブを + 使うことができます。</p></summary> -<section id="AltSyn"><title>$BBeBX4|4V;XDj9=J8(B</title> +<section id="AltSyn"><title>代替期間指定構文</title> - <p><directive module="mod_expires">ExpiresDefault</directive> $B%G%#%l%/%F%#%V$H(B - <directive module="mod_expires">ExpiresByType</directive> $B%G%#%l%/%F%#%V$O(B - $B0J2<$N$h$jFI$_0W$$9=J8$r;H$C$FDj5A$9$k$3$H$,$G$-$^$9(B:</p> + <p><directive module="mod_expires">ExpiresDefault</directive> ディレクティブと + <directive module="mod_expires">ExpiresByType</directive> ディレクティブは + 以下のより読み易い構文を使って定義することができます:</p> <example> ExpiresDefault "<base> [plus] {<num> @@ -63,19 +63,19 @@ {<num> <type>}*" </example> - <p><base> $B$O0J2<$N$I$l$+$G$9(B:</p> + <p><base> は以下のどれかです:</p> <ul> <li><code>access</code></li> - <li><code>now</code> ('<code>access</code>' $B$HEy2A(B)</li> + <li><code>now</code> ('<code>access</code>' と等価)</li> <li><code>modification</code></li> </ul> - <p><code>plus</code> $B%-!<%o!<%I$O>JN,2DG=$G$9!#(B<num> - $B$O(B (<code>atoi()</code> $B$,<u$1IU$1$k(B) $B@0?tCM!"(B - <type> $B$O0J2<$N$I$l$+$G$9(B:</p> + <p><code>plus</code> キーワードは省略可能です。<num> + は (<code>atoi()</code> が受け付ける) 整数値、 + <type> は以下のどれかです:</p> <ul> <li><code>years</code></li> @@ -87,8 +87,8 @@ <li><code>seconds</code></li> </ul> - <p>$BNc$($P!"0J2<$N%G%#%l%/%F%#%V$O$I$l$b%G%U%)%k%H$GJ8=q$,%"%/%;%9$N(B 1 $B%v7n8e$K(B - $B4|8B$,@Z$l$k$h$&$K$9$k$?$a$K;H$($^$9(B:</p> + <p>例えば、以下のディレクティブはどれもデフォルトで文書がアクセスの 1 ヶ月後に + 期限が切れるようにするために使えます:</p> <example> ExpiresDefault "access plus 1 month"<br /> @@ -96,9 +96,9 @@ ExpiresDefault "access plus 30 days" </example> - <p>$B4|8B@Z$l;~9o$O$$$/$D$+(B - '<num> <type>' $B@a$rDI2C$9$k$3$H$G$h$j:Y$+$/(B - $B@)8f$9$k$3$H$,$G$-$^$9(B:</p> + <p>期限切れ時刻はいくつか + '<num> <type>' 節を追加することでより細かく + 制御することができます:</p> <example> ExpiresByType text/html "access plus 1 month 15 @@ -107,14 +107,14 @@ minutes" </example> - <p>$B=$@5;~9o$K4p$E$$$?@_Dj$r;HMQ$7$F$$$k>l9g!"(BExpires $B%X%C%@$O(B - $B%G%#%9%/$N%U%!%$%k0J30$N%3%s%F%s%D$K$O(B<strong>$BDI2C$5$l$J$$(B</strong>$B$3$H$KCm0U(B - $B$7$F$/$@$5$$!#$=$N$h$&$J%3%s%F%s%D$K$O=$@5;~9o$OB8:_$7$J$$$+$i$G$9!#(B</p> + <p>修正時刻に基づいた設定を使用している場合、Expires ヘッダは + ディスクのファイル以外のコンテンツには<strong>追加されない</strong>ことに注意 + してください。そのようなコンテンツには修正時刻は存在しないからです。</p> </section> <directivesynopsis> <name>ExpiresActive</name> -<description><code>Expires</code> $B%X%C%@$N@8@.$rM-8z$K$9$k(B</description> +<description><code>Expires</code> ヘッダの生成を有効にする</description> <syntax>ExpiresActive On|Off</syntax> <contextlist><context>server config</context> <context>virtual host</context><context>directory</context> @@ -122,30 +122,30 @@ <override>Indexes</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$OBP1~$9$k%I%-%e%a%s%H$NNN0h$G(B - <code>Expires</code> $B$H(B <code>Cache-Control</code>$B%X%C%@$r(B - $BM-8z$K$9$k$+L58z$K$9$k$+$r7h$a$^$9!#(B - ($BNc$($P!"(B<code>.htaccess</code> $B%U%!%$%k$G$O$=$N%G%#%l%/%H%j$N(B - $BJ8=q$N$_$KE,MQ$5$l$k$H$$$&$3$H$G$9!#(B) <code>Off</code> $B$K(B - $B@_Dj$5$l$?>l9g$OBP1~NN0h$G$=$l$i$N%X%C%@$O(B - $B@8@.$5$l$^$;$s(B (<code>.htaccess</code> $B$,%5!<%P@_Dj%U%!%$%k$N@_Dj$r(B - $B>e=q$-$9$k!"$H$$$&$h$&$J2<0L%l%Y%k$G$N>e=q$-$,$5$l$F$$$J$1$l$P(B)$B!#(B - <code>On</code> $B$K@_Dj$5$l$F$$$l$P!"%X%C%@$O(B <directive - module="mod_expires">ExpiresByType</directive> $B%G%#%l%/%F%#%V$H(B - <directive module="mod_expires">ExpiresDefault</directive> $B%G%#%l%/%F%#%V(B - $B$N4p=`$K=>$C$FJ8=q$K%X%C%@$rDI2C$7$^$9(B ($B3F%G%#%l%/%F%#%V;2>H(B)$B!#(B</p> - - <p>$B$3$N%G%#%l%/%F%#%V$O(B <code>Expires</code> $B$H(B - <code>Cache-Control</code> $B%X%C%@$NB8:_$r(B - $BJ]>Z$9$k$o$1$G$O$J$$$3$H$KCm0U$7$F$/$@$5$$!#4p=`$,K~$?$5$l$F(B - $B$$$J$$>l9g$O%X%C%@$ODI2C$5$l$:!"7k2L$H$7$F$3$N%G%#%l%/%F%#%V$,(B - $B;XDj$5$l$F$$$J$+$C$?$+$N$h$&$K$5$(8+$($k$3$H$K$J$j$^$9!#(B</p> + <p>このディレクティブは対応するドキュメントの領域で + <code>Expires</code> と <code>Cache-Control</code>ヘッダを + 有効にするか無効にするかを決めます。 + (例えば、<code>.htaccess</code> ファイルではそのディレクトリの + 文書のみに適用されるということです。) <code>Off</code> に + 設定された場合は対応領域でそれらのヘッダは + 生成されません (<code>.htaccess</code> がサーバ設定ファイルの設定を + 上書きする、というような下位レベルでの上書きがされていなければ)。 + <code>On</code> に設定されていれば、ヘッダは <directive + module="mod_expires">ExpiresByType</directive> ディレクティブと + <directive module="mod_expires">ExpiresDefault</directive> ディレクティブ + の基準に従って文書にヘッダを追加します (各ディレクティブ参照)。</p> + + <p>このディレクティブは <code>Expires</code> と + <code>Cache-Control</code> ヘッダの存在を + 保証するわけではないことに注意してください。基準が満たされて + いない場合はヘッダは追加されず、結果としてこのディレクティブが + 指定されていなかったかのようにさえ見えることになります。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ExpiresByType</name> -<description>MIME $B%?%$%W$K$h$C$F@_Dj$5$l$k(B <code>Expires</code> $B%X%C%@$NCM(B</description> +<description>MIME タイプによって設定される <code>Expires</code> ヘッダの値</description> <syntax>ExpiresByType <var>MIME-type</var> <var><code>seconds</var></syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -153,31 +153,31 @@ <override>Indexes</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O;XDj$5$l$?%?%$%W$N%I%-%e%a%s%H(B - (<em>$BNc$($P(B</em> <code>text/html</code>) - $B$KBP$7$F@8@.$5$l$k(B <code>Expires</code> $B%X%C%@$H(B <code>Cache-Control</code> - $B%X%C%@$N(B <code>max-age</code> $B%G%#%l%/%F%#%V$NCM$rDj5A$7$^$9!#(B - $BFs$DL\$N0z?t$O4|8B@Z$l$NF|;~$r@8@.$9$k$?$a$N4p=`;~9o$KDI2C$5$l$k(B - $BIC?t$r@_Dj$7$^$9!#(B<code>Cache-Control: - max-age</code> $B$O4|8B@Z$l$N;~9o$+$i%j%/%(%9%H;~9o$r0z$$$?$b$N$rIC$G(B - $BI=$9$3$H$G@8@.$5$l$^$9!#(B</p> - - <p>$B4p=`;~9o$O%U%!%$%k$N:G=*=$@5;~9o$+!"%/%i%$%"%s%H$N%I%-%e%a%s%H$X$N(B - $B%"%/%;%9;~9o$G$9!#$I$A$i$r;H$&$Y$-$+$O(B <code><var><code></var></code> - $B$K$h$C$F;XDj$7$^$9!#(B<code>M</code> $B$O4p=`;~9o$H$7$F(B - $B%U%!%$%k$N:G=*=$@5;~9o$r$H$$$&0UL#$G!"(B<code>A</code> $B$O%/%i%$%"%s%H$N(B - $B%"%/%;%9;~9o$r;H$&$H$$$&0UL#$K$J$j$^$9!#(B</p> - - <p>$B8z2L$K$OHyL/$J0c$$$,$"$j$^$9!#(B<code>M</code> $B$,;HMQ$5$l$?>l9g$O!"(B - $B$9$Y$F$N%-%c%C%7%e$K$"$k8=:_$N%I%-%e%a%s%H%-%c%C%7%e$OF1;~$K4|8B$,(B - $B@Z$l$^$9!#$3$l$OF1$8(B URL $B$KKh=5>o$KCV$+$l$kJs$;$N$h$&$J$b$N$K$O(B - $BHs>o$KM-8z$G$9!#(B<code>A</code> $B$,;HMQ$5$l$?>l9g$O!"4|8B@Z$l$N(B - $B;~4V$O3F%/%i%$%"%s%H$h$C$F0[$J$j$^$9!#$3$l$O$"$^$jJQ99$5$l$J$$(B - $B2hA|%U%!%$%k$J$I!"FC$K4XO"$9$k%I%-%e%a%s%H72$,$9$Y$FF1$82hA|$r(B - $B;2>H$9$k$H$-(B (<em>$B$9$J$o$A(B</em>$B2hA|$,Hf3SE*C;$$4|4VFb$K7+$jJV$7(B - $B%"%/%;%9$5$l$k$H$-(B) $B$KM-8z$G$9!#(B</p> - - <example><title>$BNc(B:</title> + <p>このディレクティブは指定されたタイプのドキュメント + (<em>例えば</em> <code>text/html</code>) + に対して生成される <code>Expires</code> ヘッダと <code>Cache-Control</code> + ヘッダの <code>max-age</code> ディレクティブの値を定義します。 + 二つ目の引数は期限切れの日時を生成するための基準時刻に追加される + 秒数を設定します。<code>Cache-Control: + max-age</code> は期限切れの時刻からリクエスト時刻を引いたものを秒で + 表すことで生成されます。</p> + + <p>基準時刻はファイルの最終修正時刻か、クライアントのドキュメントへの + アクセス時刻です。どちらを使うべきかは <code><var><code></var></code> + によって指定します。<code>M</code> は基準時刻として + ファイルの最終修正時刻をという意味で、<code>A</code> はクライアントの + アクセス時刻を使うという意味になります。</p> + + <p>効果には微妙な違いがあります。<code>M</code> が使用された場合は、 + すべてのキャッシュにある現在のドキュメントキャッシュは同時に期限が + 切れます。これは同じ URL に毎週常に置かれる報せのようなものには + 非常に有効です。<code>A</code> が使用された場合は、期限切れの + 時間は各クライアントよって異なります。これはあまり変更されない + 画像ファイルなど、特に関連するドキュメント群がすべて同じ画像を + 参照するとき (<em>すなわち</em>画像が比較的短い期間内に繰り返し + アクセスされるとき) に有効です。</p> + + <example><title>例:</title> # enable expirations<br /> ExpiresActive On<br /> # expire GIF images after a month in the client's cache<br /> @@ -187,32 +187,32 @@ ExpiresByType text/html M604800 </example> - <p>$B$3$N%G%#%l%/%F%#%V$O(B <code>ExpiresActive On</code> $B$,;XDj$5$l$F$$$k(B - $B$H$-$N$_M-8z$G$"$k$3$H$KCm0U$7$F$/$@$5$$!#$3$l$O!"(B - $B;XDj$5$l$?(B MIME $B%?%$%W$KBP$7$F(B<em>$B$N$_(B</em> <directive - module="mod_expires">ExpiresDefault</directive> $B%G%#%l%/%F%#%V$G(B - $B@_Dj$5$l$?4|8B@Z$l4|F|$r>e=q$-$7$^$9!#(B</p> + <p>このディレクティブは <code>ExpiresActive On</code> が指定されている + ときのみ有効であることに注意してください。これは、 + 指定された MIME タイプに対して<em>のみ</em> <directive + module="mod_expires">ExpiresDefault</directive> ディレクティブで + 設定された期限切れ期日を上書きします。</p> - <p>$B$3$NJ8=q$NA0$NJ}$G@bL@$5$l$F$$$k(B<a href="#AltSyn">$BBeBX9=J8(B</a>$B$r(B - $B;H$C$F4|8B@Z$l4|F|$N7W;;J}K!$r;XDj$9$k$3$H$b$G$-$^$9!#(B</p> + <p>この文書の前の方で説明されている<a href="#AltSyn">代替構文</a>を + 使って期限切れ期日の計算方法を指定することもできます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ExpiresDefault</name> -<description>$B4|8B@Z$l4|F|$r7W;;$9$k%G%U%)%k%H%"%k%4%j%:%`(B</description> +<description>期限切れ期日を計算するデフォルトアルゴリズム</description> <syntax>ExpiresDefault <var><code>seconds</var></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>Indexes</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$OBP1~$9$kHO0O$N$9$Y$F$N%I%-%e%a%s%H$KBP$7$F(B - $B%G%U%)%k%H$N4|8B@Z$l4|F|$N7W;;%"%k%4%j%:%`$r@_Dj$7$^$9!#(B<directive - module="mod_expires">ExpiresByType</directive> $B%G%#%l%/%F%#%V$K$h$C$F(B - $B%?%$%WKh$K>e=q$-$9$k$3$H$,$G$-$^$9!#0z?t$N9=J8$O$=$N%G%#%l%/%F%#%V$N(B - $B@bL@$r;2>H$7$F$/$@$5$$!#$^$?!"(B<a href="#AltSyn">$BBeBX9=J8(B</a>$B$b(B - $B;2>H$7$F$/$@$5$$!#(B</p> + <p>このディレクティブは対応する範囲のすべてのドキュメントに対して + デフォルトの期限切れ期日の計算アルゴリズムを設定します。<directive + module="mod_expires">ExpiresByType</directive> ディレクティブによって + タイプ毎に上書きすることができます。引数の構文はそのディレクティブの + 説明を参照してください。また、<a href="#AltSyn">代替構文</a>も + 参照してください。</p> </usage> </directivesynopsis> </modulesynopsis> diff --git a/docs/manual/mod/mod_ext_filter.xml.ja b/docs/manual/mod/mod_ext_filter.xml.ja index c94ebd9773..b98bf35ff6 100644 --- a/docs/manual/mod/mod_ext_filter.xml.ja +++ b/docs/manual/mod/mod_ext_filter.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -23,39 +23,39 @@ <modulesynopsis metafile="mod_ext_filter.xml.meta"> <name>mod_ext_filter</name> -<description>$B%l%9%]%s%9$N%\%G%#$r%/%i%$%"%s%H$KAw$kA0$K30It%W%m%0%i%`$G=hM}$9$k(B</description> +<description>レスポンスのボディをクライアントに送る前に外部プログラムで処理する</description> <status>Extension</status> <sourcefile>mod_ext_filter.c</sourcefile> <identifier>ext_filter_module</identifier> <summary> - <p><module>mod_ext_filter</module> $B$G$O(B <a href="../filter.html">$B%U%#%k%?(B</a> - $B$N47$l?F$7$s$@C1=c$J%W%m%0%i%_%s%0%b%G%k$,Ds6!$5$l$^$9!#$3$N%b%8%e!<%k$r(B - $B;H$($P!"I8=`F~NO$+$iFI$_9~$s$G!"I8=`=PNO$K=q$-=P$9%W%m%0%i%`(B - ($B$9$J$o$A(B Unix $B7A<0$N%U%#%k%?%3%^%s%I(B) $B$r(B Apache $B$N%U%#%k%?$K$9$k$3$H$,(B - $B$G$-$^$9!#$3$N%U%#%k%?$N5!9=$O!"(BApache API $B8~$1$K=q$+$l$?(B Apache - $B%5!<%P%W%m%;%9Fb$G<B9T$5$l$k@lMQ$N%U%#%k%?$h$j$b$:$C$HCY$$$G$9$,!"(B - $B0J2<$N$h$&$JMxE@$b$"$j$^$9!#(B</p> + <p><module>mod_ext_filter</module> では <a href="../filter.html">フィルタ</a> + の慣れ親しんだ単純なプログラミングモデルが提供されます。このモジュールを + 使えば、標準入力から読み込んで、標準出力に書き出すプログラム + (すなわち Unix 形式のフィルタコマンド) を Apache のフィルタにすることが + できます。このフィルタの機構は、Apache API 向けに書かれた Apache + サーバプロセス内で実行される専用のフィルタよりもずっと遅いですが、 + 以下のような利点もあります。</p> <ul> - <li>$B$:$C$H%7%s%W%k$J%W%m%0%i%_%s%0%b%G%k(B</li> + <li>ずっとシンプルなプログラミングモデル</li> - <li>$B%W%m%0%i%`$,I8=`F~NO$+$iFI$s$GI8=`=PNO$K=q$/$b$N$G$"$k8B$j!"(B - $B$I$s$J%W%m%0%i%`8@8l$d%9%/%j%W%H8@8l$G$b;H$&$3$H$,$G$-$k(B</li> + <li>プログラムが標準入力から読んで標準出力に書くものである限り、 + どんなプログラム言語やスクリプト言語でも使うことができる</li> - <li>$B4{B8$N%W%m%0%i%`$rJQ99$9$k$3$H$J$/(B Apache $B$N%U%#%k%?$H$7$F(B - $B;H$&$3$H$,$G$-$k(B</li> + <li>既存のプログラムを変更することなく Apache のフィルタとして + 使うことができる</li> </ul> - <p>$B@-G=$NLdBj$K$h$j<B1?MQ$KE,$5$J$$$H$7$F$b!"%U%#%k%?$N%W%m%H%?%$%WMQ$N(B - $B4D6-$H$7$F$O(B <module>mod_ext_filter</module> $B$O;H$($^$9!#(B</p> + <p>性能の問題により実運用に適さないとしても、フィルタのプロトタイプ用の + 環境としては <module>mod_ext_filter</module> は使えます。</p> </summary> -<seealso><a href="../filter.html">$B%U%#%k%?(B</a></seealso> +<seealso><a href="../filter.html">フィルタ</a></seealso> -<section id="examples"><title>$BNc(B</title> +<section id="examples"><title>例</title> - <section><title>$BB>$N%?%$%W$N%l%9%]%s%9$+$i(B HTML $B$r@8@.$9$k(B</title> + <section><title>他のタイプのレスポンスから HTML を生成する</title> <example> # mod_ext_filter directive to define a filter<br /> # to HTML-ize text/c files using the external<br /> @@ -86,9 +86,9 @@ </example> </section> - <section><title>$B%3%s%F%s%H%(%s%3!<%G%#%s%0$N%U%#%k%?$r<BAu$9$k(B</title> - <p>$BCm(B: $B$3$N(B gzip $B$NNc$O%G%bMQ$G$9!#<BMQE*$J<BAu$O(B - <module>mod_deflate</module> $B$r;2>H$7$F$/$@$5$$!#(B</p> + <section><title>コンテントエンコーディングのフィルタを実装する</title> + <p>注: この gzip の例はデモ用です。実用的な実装は + <module>mod_deflate</module> を参照してください。</p> <example> # mod_ext_filter directive to define the external filter<br /> @@ -108,7 +108,7 @@ </example> </section> - <section><title>$B%5!<%P$rCY$/$9$k(B</title> + <section><title>サーバを遅くする</title> <example> # mod_ext_filter directive to define a filter<br /> # which runs everything through cat; cat doesn't<br /> @@ -130,7 +130,7 @@ </example> </section> - <section><title>sed $B$r;H$C$F1~EzCf$N%F%-%9%H$rCV49$9$k(B</title> + <section><title>sed を使って応答中のテキストを置換する</title> <example> # mod_ext_filter directive to define a filter which<br /> # replaces text in the response<br /> @@ -150,7 +150,7 @@ </example> </section> - <section><title>$BJL$N%U%#%k%?$N%H%l!<%9(B</title> + <section><title>別のフィルタのトレース</title> <example> # Trace the data read and written by mod_deflate<br /> # for a particular client (IP 192.168.1.31)<br /> @@ -183,7 +183,7 @@ </Directory> </example> - <example><title>$B%G!<%?$r%H%l!<%9$9$k%U%#%k%?(B:</title> + <example><title>データをトレースするフィルタ:</title> #!/usr/local/bin/perl -w<br /> use strict;<br /> <br /> @@ -206,138 +206,138 @@ <directivesynopsis> <name>ExtFilterDefine</name> -<description>$B30It%U%#%k%?$rDj5A(B</description> +<description>外部フィルタを定義</description> <syntax>ExtFilterDefine <var>filtername</var> <var>parameters</var></syntax> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>ExtFilterDefine</directive> $B$O!"<B9T$9$k%W%m%0%i%`$d(B - $B0z?t$J$I!"30It%U%#%k%?$NFC@-$rDj5A$7$^$9!#(B</p> + <p><directive>ExtFilterDefine</directive> は、実行するプログラムや + 引数など、外部フィルタの特性を定義します。</p> - <p><var>filtername</var> $B$ODj5A$9$k%U%#%k%?$NL>A0$r;XDj$7$^$9!#(B - $B$3$NL>A0$O8e$G(B <directive module="core">SetOutputFilter</directive> - $B%G%#%l%/%F%#%V$G;XDj$G$-$^$9!#L>A0$OEPO?$5$l$k$9$Y$F$N%U%#%k%?$G(B - $B0l0U$G$J$/$F$O$J$j$^$;$s!#(B<em>$B8=;~E@$G$O!"%U%#%k%?$NEPO?(B API $B$+$i$O(B - $B%(%i!<$OJs9p$5$l$^$;$s!#$G$9$+$i!"=EJ#$9$kL>A0$r;H$C$F$7$^$C$?$H$-$G$b(B - $B%f!<%6$K$O$=$N$3$H$OJs9p$5$l$^$;$s!#(B</em></p> + <p><var>filtername</var> は定義するフィルタの名前を指定します。 + この名前は後で <directive module="core">SetOutputFilter</directive> + ディレクティブで指定できます。名前は登録されるすべてのフィルタで + 一意でなくてはなりません。<em>現時点では、フィルタの登録 API からは + エラーは報告されません。ですから、重複する名前を使ってしまったときでも + ユーザにはそのことは報告されません。</em></p> - <p>$BB3$/%Q%i%a!<%?$N=gHV$O4X78L5$/!"$=$l$i$O<B9T$9$k30It%3%^%s%I$H!"(B - $BB>$NFC@-$rDj5A$7$^$9!#(B<code>cmd=</code> $B$@$1$,I,?\$N%Q%i%a!<%?$G$9!#(B - $B;XDj2DG=$J%Q%i%a!<%?$O(B:</p> + <p>続くパラメータの順番は関係無く、それらは実行する外部コマンドと、 + 他の特性を定義します。<code>cmd=</code> だけが必須のパラメータです。 + 指定可能なパラメータは:</p> <dl> <dt><code>cmd=<var>cmdline</var></code></dt> - <dd><code>cmd=</code> $B%-!<%o!<%I$O<B9T$9$k30It%3%^%s%I$r;XDj$7$^$9!#(B - $B%W%m%0%i%`L>$N8e$K0z?t$,$"$k>l9g$O!"%3%^%s%I9T$O0zMQId$G0O$`(B - $BI,MW$,$"$j$^$9(B (<em>$BNc$($P(B</em>$B!"(B<code>cmd="<var>/bin/mypgm</var> - <var>arg1</var> <var>arg2</var>"</code> $B$N$h$&$K(B)$B!#%W%m%0%i%`$O(B - $B%7%'%k7PM3$G$J$/!"D>@\<B9T$5$l$^$9$N$G!"DL>o$N%7%'%kMQ$N(B - $B%(%9%1!<%W$OI,MW$"$j$^$;$s!#%W%m%0%i%`$N0z?t$O6uGr$G6h@Z$i$l$^$9!#(B - $B%W%m%0%i%`$N0z?t$N0lIt$H$J$kI,MW$N$"$k6uGr$O%P%C%/%9%Z!<%9$G%(%9%1!<%W(B - $B$G$-$^$9!#0z?t$N0lIt$K$J$k%P%C%/%9%i%C%7%e$O%P%C%/%9%i%C%7%e$G(B - $B%(%9%1!<%W$9$kI,MW$,$"$j$^$9!#I8=`$N(B CGI $B4D6-JQ?t$K2C$($F!"(B - $B4D6-JQ?t(B DOCUMENT_URI, DOCUMENT_PATH_INFO, and - QUERY_STRING_UNESCAPED $B$,%W%m%0%i%`$N$?$a$K@_Dj$5$l$^$9!#(B</dd> + <dd><code>cmd=</code> キーワードは実行する外部コマンドを指定します。 + プログラム名の後に引数がある場合は、コマンド行は引用符で囲む + 必要があります (<em>例えば</em>、<code>cmd="<var>/bin/mypgm</var> + <var>arg1</var> <var>arg2</var>"</code> のように)。プログラムは + シェル経由でなく、直接実行されますので、通常のシェル用の + エスケープは必要ありません。プログラムの引数は空白で区切られます。 + プログラムの引数の一部となる必要のある空白はバックスペースでエスケープ + できます。引数の一部になるバックスラッシュはバックスラッシュで + エスケープする必要があります。標準の CGI 環境変数に加えて、 + 環境変数 DOCUMENT_URI, DOCUMENT_PATH_INFO, and + QUERY_STRING_UNESCAPED がプログラムのために設定されます。</dd> <dt><code>mode=<var>mode</var></code></dt> - <dd>$B1~Ez$r=hM}$9$k%U%#%k%?$K$O(B <code>mode=output</code> ($B%G%U%)%k%H(B) - $B$r;H$$$^$9!#%j%/%(%9%H$r=hM}$9$k%U%#%k%?$K$O(B <code>mode=input</code> - $B$r;H$$$^$9!#(B<code>mode=input</code> $B$O(B Apache 2.1 $B$+$i$N?7$7$$5!G=$G$9!#(B</dd> + <dd>応答を処理するフィルタには <code>mode=output</code> (デフォルト) + を使います。リクエストを処理するフィルタには <code>mode=input</code> + を使います。<code>mode=input</code> は Apache 2.1 からの新しい機能です。</dd> <dt><code>intype=<var>imt</var></code></dt> - <dd>$B$3$N%Q%i%a!<%?$O%U%#%k%?$5$l$k$Y$-%I%-%e%a%s%H$N(B - $B%$%s%?!<%M%C%H%a%G%#%"%?%$%W(B (<em>$B$9$J$o$A(B</em>$B!"(BMIME $B%?%$%W(B) $B$r(B - $B;XDj$7$^$9!#%G%U%)%k%H$G$O$9$Y$F$N%I%-%e%a%s%H$,%U%#%k%?$5$l$^$9!#(B - <code>intype=</code> $B$,;XDj$5$l$F$$$l$P!"%U%#%k%?$O;XDj$5$l$F$$$J$$(B - $B%I%-%e%a%s%H$K$OE,MQ$5$l$J$/$J$j$^$9!#(B</dd> + <dd>このパラメータはフィルタされるべきドキュメントの + インターネットメディアタイプ (<em>すなわち</em>、MIME タイプ) を + 指定します。デフォルトではすべてのドキュメントがフィルタされます。 + <code>intype=</code> が指定されていれば、フィルタは指定されていない + ドキュメントには適用されなくなります。</dd> <dt><code>outtype=<var>imt</var></code></dt> - <dd>$B$3$N%Q%i%a!<%?$O%U%#%k%?$5$l$?%I%-%e%a%s%H$N(B - $B%$%s%?!<%M%C%H%a%G%#%"%?%$%W(B (<em>$B$9$J$o$A(B</em>$B!"(BMIME $B%?%$%W(B) $B$r(B - $B;XDj$7$^$9!#%U%#%k%?F0:n$K$H$b$J$C$F%$%s%?!<%M%C%H%a%G%#%"%?%$%W$,(B - $BJQ$o$k>l9g$KM-MQ$G$9!#%G%U%)%k%H$G$O%$%s%?!<%M%C%H%a%G%#%"%?%$%W$O(B - $BJQ99$5$l$^$;$s!#(B</dd> + <dd>このパラメータはフィルタされたドキュメントの + インターネットメディアタイプ (<em>すなわち</em>、MIME タイプ) を + 指定します。フィルタ動作にともなってインターネットメディアタイプが + 変わる場合に有用です。デフォルトではインターネットメディアタイプは + 変更されません。</dd> <dt><code>PreservesContentLength</code></dt> - <dd><code>PreservesContentLength</code> $B%-!<%o!<%I$O%U%#%k%?$,(B - content length <transnote>$B%3%s%F%s%H$ND9$5(B</transnote> - $B$rJQ99$7$J$$$H$$$&$3$H$r;XDj$7$^$9!#$[$H$s$I$N%U%#%k%?$O(B - content length $B$rJQ99$9$k$?$a!"$3$l$O%G%U%)%k%H$G$O$"$j$^$;$s!#(B - $B%U%#%k%?$,D9$5$rJQ$($J$$$H$-$O!"$3$N%-!<%o!<%I$r;XDj$9$k$H(B - $B$h$$$G$7$g$&!#(B</dd> + <dd><code>PreservesContentLength</code> キーワードはフィルタが + content length <transnote>コンテントの長さ</transnote> + を変更しないということを指定します。ほとんどのフィルタは + content length を変更するため、これはデフォルトではありません。 + フィルタが長さを変えないときは、このキーワードを指定すると + よいでしょう。</dd> <dt><code>ftype=<var>filtertype</var></code></dt> - <dd>$B$3$N%Q%i%a!<%?$O%U%#%k%?$,EPO?$5$l$k$Y$-%U%#%k%?%?%$%W$N(B - $B?tCM$r;XDj$7$^$9!#$[$H$s$I$N>l9g$O!"%G%U%)%k%H$N(B AP_FTYPE_RESOURCE $B$G(B - $B==J,$G$9!#%U%#%k%?$,%U%#%k%?%A%'!<%s$NJL$N>l=j$GF0:n$9$kI,MW$,$"$k(B - $B>l9g$O!"$3$N%Q%i%a!<%?$r;XDj$9$kI,MW$,$"$j$^$9!#;XDj2DG=$JCM$O(B - util_filter.h $B$N(B AP_FTYPE_foo $BDj5A$r;2>H$7$F$/$@$5$$!#(B</dd> + <dd>このパラメータはフィルタが登録されるべきフィルタタイプの + 数値を指定します。ほとんどの場合は、デフォルトの AP_FTYPE_RESOURCE で + 十分です。フィルタがフィルタチェーンの別の場所で動作する必要がある + 場合は、このパラメータを指定する必要があります。指定可能な値は + util_filter.h の AP_FTYPE_foo 定義を参照してください。</dd> <dt><code>disableenv=<var>env</var></code></dt> - <dd>$B@_Dj$5$l$F$$$?>l9g$K%U%#%k%?$rL58z$K$9$k$?$a$N4D6-JQ?t$r(B - $B;XDj$7$^$9!#(B</dd> + <dd>設定されていた場合にフィルタを無効にするための環境変数を + 指定します。</dd> <dt><code>enableenv=<var>env</var></code></dt> - <dd>$B$3$N%Q%i%a!<%?$O%U%#%k%?$,M-8z$K$J$k$?$a$K@_Dj$5$l$F$$$J$1$l$P(B - $B$J$i$J$$4D6-JQ?t$r;XDj$7$^$9!#(B</dd> + <dd>このパラメータはフィルタが有効になるために設定されていなければ + ならない環境変数を指定します。</dd> </dl> </usage> </directivesynopsis> <directivesynopsis> <name>ExtFilterOptions</name> -<description><module>mod_ext_filter</module> $B$N%*%W%7%g%s$r@_Dj(B</description> +<description><module>mod_ext_filter</module> のオプションを設定</description> <syntax>ExtFilterOptions <var>option</var> [<var>option</var>] ...</syntax> <default>ExtFilterOptions DebugLevel=0 NoLogStderr</default> <contextlist><context>directory</context></contextlist> <usage> - <p><directive>ExtFilterOptions</directive> $B%G%#%l%/%F%#%V$O(B - <module>mod_ext_filter</module> $B$NFCJL$J=hM}MQ$N%*%W%7%g%s$r(B - $B;XDj$7$^$9!#(B<var>Option</var> $B$K$O0J2<$N$I$l$+$r;XDj$7$^$9!#(B</p> + <p><directive>ExtFilterOptions</directive> ディレクティブは + <module>mod_ext_filter</module> の特別な処理用のオプションを + 指定します。<var>Option</var> には以下のどれかを指定します。</p> <dl> <dt><code>DebugLevel=<var>n</var></code></dt> <dd> - <code>DebugLevel</code> $B$G(B <module>mod_ext_filter</module> - $B$N@8@.$9$k%G%P%C%0%a%C%;!<%8$N%l%Y%k$r@_Dj$G$-$^$9!#(B - $B%G%U%)%k%H$G$O!"%G%P%C%0%a%C%;!<%8$O@8@.$5$l$^$;$s!#(B - $B$3$l$O(B <code>DebugLevel=0</code> $B$H@_Dj$9$k$N$HF1$8$G$9!#(B - $B?t;z$,Bg$-$/$J$l$P$J$k$[$I!"$h$jB?$/$N%G%P%C%0%a%C%;!<%8$,(B - $B@8@.$5$l!"%5!<%P$N@-G=$OMn$A$^$9!#?tCM$N<B:]$N0UL#$O(B - <code>mod_ext_filter.c</code> $B$N@hF,6a$/$N(B DBGLVL_ $BDj?t$N(B - $BDj5A$G@bL@$5$l$F$$$^$9!#(B - - <p>$BCm(B: $B%G%P%C%0%a%C%;!<%8$r(B Apache $B$N%(%i!<%m%0$K(B - $BJ]B8$9$k$h$&$K$9$k$?$a$K$O!"(Bcore $B$N%G%#%l%/%F%#%V(B + <code>DebugLevel</code> で <module>mod_ext_filter</module> + の生成するデバッグメッセージのレベルを設定できます。 + デフォルトでは、デバッグメッセージは生成されません。 + これは <code>DebugLevel=0</code> と設定するのと同じです。 + 数字が大きくなればなるほど、より多くのデバッグメッセージが + 生成され、サーバの性能は落ちます。数値の実際の意味は + <code>mod_ext_filter.c</code> の先頭近くの DBGLVL_ 定数の + 定義で説明されています。 + + <p>注: デバッグメッセージを Apache のエラーログに + 保存するようにするためには、core のディレクティブ <directive module="core">LogLevel</directive> - $B$r;H$&I,MW$,$"$j$^$9!#(B</p> + を使う必要があります。</p> </dd> <dt><code>LogStderr | NoLogStderr</code></dt> - <dd><code>LogStderr</code> $B%-!<%o!<%I$O30It%U%#%k%?%W%m%0%i%`$K$h$j(B - $BI8=`%(%i!<(B <transnote>stderr</transnote> $B$K=q$+$l$?%a%C%;!<%8$r(B - Apache $B$N%(%i!<%m%0$KJ]B8$9$k$h$&$K$7$^$9!#(B<code>NoLogStderr</code> $B$O(B - $B5U$KJ]B8$7$J$$$h$&$K$7$^$9!#(B</dd> + <dd><code>LogStderr</code> キーワードは外部フィルタプログラムにより + 標準エラー <transnote>stderr</transnote> に書かれたメッセージを + Apache のエラーログに保存するようにします。<code>NoLogStderr</code> は + 逆に保存しないようにします。</dd> </dl> - <example><title>$BNc(B</title> + <example><title>例</title> ExtFilterOptions LogStderr DebugLevel=0 </example> - <p>$B$3$NNc$G$O!"%U%#%k%?$NI8=`=PNO$K=q$+$l$?%a%C%;!<%8$O(B - Apache $B$N%(%i!<%m%0$KJ]B8$5$l$^$9!#(B<module>mod_ext_filter</module> $B$+$i$O(B - $B%G%P%C%0%a%C%;!<%8$O@8@.$5$l$^$;$s!#(B</p> + <p>この例では、フィルタの標準出力に書かれたメッセージは + Apache のエラーログに保存されます。<module>mod_ext_filter</module> からは + デバッグメッセージは生成されません。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_headers.xml.ja b/docs/manual/mod/mod_headers.xml.ja index 19ca573855..77615fc199 100644 --- a/docs/manual/mod/mod_headers.xml.ja +++ b/docs/manual/mod/mod_headers.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:568323 (outdated) --> @@ -23,83 +23,83 @@ <modulesynopsis metafile="mod_headers.xml.meta"> <name>mod_headers</name> -<description>HTTP $B%j%/%(%9%H$N%X%C%@$H1~Ez$N%X%C%@$N%+%9%?%^%$%:(B</description> +<description>HTTP リクエストのヘッダと応答のヘッダのカスタマイズ</description> <status>Extension</status> <sourcefile>mod_headers.c</sourcefile> <identifier>headers_module</identifier> <compatibility><directive module="mod_headers">RequestHeader</directive> -$B$O(B Apache 2.0 $B0J9_$N$_$G;HMQ2DG=(B</compatibility> +は Apache 2.0 以降のみで使用可能</compatibility> <summary> - <p>$B$3$N%b%8%e!<%k$O(B HTTP $B$N%j%/%(%9%H%X%C%@$H1~Ez%X%C%@$r@)8f$7!"(B - $BJQ99$9$k$?$a$N%G%#%l%/%F%#%V$rDs6!$7$^$9!#%X%C%@$rDI2C$7$?$j!"(B - $BCV$-49$($?$j!":o=|$7$?$j$9$k$3$H$,$G$-$^$9!#(B</p> + <p>このモジュールは HTTP のリクエストヘッダと応答ヘッダを制御し、 + 変更するためのディレクティブを提供します。ヘッダを追加したり、 + 置き換えたり、削除したりすることができます。</p> </summary> -<section id="order"><title>$B=hM}$N=gHV(B</title> +<section id="order"><title>処理の順番</title> - <p><module>mod_header</module> $B$N%G%#%l%/%F%#%V$O%5!<%P@_Dj$N$[$\$I$3$K$G$b(B - $B=q$/$3$H$,$G$-!"1F6A$9$kHO0O$r(B<a - href="../sections.html">$B@_DjMQ%;%/%7%g%s(B</a>$B$G0O$`$3$H$G8BDj$9$k(B - $B$3$H$,$G$-$^$9!#(B</p> + <p><module>mod_header</module> のディレクティブはサーバ設定のほぼどこにでも + 書くことができ、影響する範囲を<a + href="../sections.html">設定用セクション</a>で囲むことで限定する + ことができます。</p> - <p>$B=hM}$N=gHV$O=EMW$G!"@_Dj%U%!%$%kCf$N=gHV$H!"(B<a - href="../sections.html">$B@_DjMQ%;%/%7%g%s(B</a>$BFb$N0LCV$H$NN>J}$K(B - $B1F6A$5$l$^$9!#0J2<$NFs$D$N%X%C%@$O=gHV$,5U$K$J$k$H(B - $B0c$&7k2L$K$J$j$^$9(B:</p> + <p>処理の順番は重要で、設定ファイル中の順番と、<a + href="../sections.html">設定用セクション</a>内の位置との両方に + 影響されます。以下の二つのヘッダは順番が逆になると + 違う結果になります:</p> <example> RequestHeader append MirrorID "mirror 12"<br /> RequestHeader unset MirrorID </example> - <p>$B$3$N=gHV$N>l9g$O!"(B<code>MirrorID</code> $B%X%C%@$O@_Dj$5$l$^$;$s!#(B - $B5U$K$J$C$F$$$k$H!"(BMirrorID $B%X%C%@$O(B "mirror 12" $B$K@_Dj$5$l$^$9!#(B</p> + <p>この順番の場合は、<code>MirrorID</code> ヘッダは設定されません。 + 逆になっていると、MirrorID ヘッダは "mirror 12" に設定されます。</p> </section> -<section id="early"><title>$BAa4|=hM}!"8e4|=hM}(B</title> - <p><module>mod_headers</module> $B$G$O!"%j%/%(%9%H$NAa4|$+8e4|$+$N(B - $B$I$A$i$GE,MQ$9$k$+$rA*$Y$^$9!#DL>o$O8e4|%b!<%I$G!"(B - $B%3%s%F%s%D@8@.$,<B9T$5$l$kD>A0$K%j%/%(%9%H%X%C%@$,%;%C%H$5$l!"(B - $B%l%9%]%s%9$H$7$FAw=P$5$l$kD>A0$K%l%9%]%s%9%X%C%@$,%;%C%H$5$l$^$9!#(B - $B1?MQCf$N%5!<%P$G$OI,$:8e4|%b!<%I$r;H$C$F$/$@$5$$!#(B</p> - - <p>$BAa4|%b!<%I$O3+H/<T8~$1$N%F%9%H(B/$B%G%P%C%0MQ$K@_7W$5$l$F$$$^$9!#(B - <code>early</code> $B%-!<%o!<%I;XDj$5$l$?%G%#%l%/%F%#%V$K$h$C$F!"(B - $B%j%/%(%9%H=hM}$N3+;OCOE@$K$J$j$^$9!#(B - $B$D$^$j!"0[$J$k%j%/%(%9%H$r;n$7$?$j%F%9%H%1!<%9$r%;%C%H%"%C%W$9$k$N$K(B - $B3hMQ$G$-$k0lJ}$G!"%l%9%]%s%9$r@8@.$9$kA0$KB>$N%b%8%e!<%k$K$h$C$F(B - $B%X%C%@$,=q$-49$($i$l$F$7$^$&$+$b$7$l$J$$$H$$$&$3$H$r0UL#$7$^$9!#(B</p> - - <p>early $B%G%#%l%/%F%#%V$G$O%j%/%(%9%H%Q%9$N@_Dj$,2r7h$5$l$kA0$K(B - $B=hM}$5$l$k$N$G!"%a%$%s%5!<%P$+%P!<%A%c%k%[%9%H%3%s%F%-%9%H$G$N$_!"(B - $BAa4|%X%C%@$r%;%C%H$G$-$^$9!#(Bearly $B%G%#%l%/%F%#%V$O%j%/%(%9%H%Q%9$K(B - $B0MB8$9$k$3$H$O$G$-$^$;$s$N$G!"(B<code><Directory></code> $B$d(B - <code><Location></code> $B$H$$$C$?%3%s%F%-%9%HFb$G$O;HMQ(B - $B$G$-$^$;$s!#(B</p> +<section id="early"><title>早期処理、後期処理</title> + <p><module>mod_headers</module> では、リクエストの早期か後期かの + どちらで適用するかを選べます。通常は後期モードで、 + コンテンツ生成が実行される直前にリクエストヘッダがセットされ、 + レスポンスとして送出される直前にレスポンスヘッダがセットされます。 + 運用中のサーバでは必ず後期モードを使ってください。</p> + + <p>早期モードは開発者向けのテスト/デバッグ用に設計されています。 + <code>early</code> キーワード指定されたディレクティブによって、 + リクエスト処理の開始地点になります。 + つまり、異なるリクエストを試したりテストケースをセットアップするのに + 活用できる一方で、レスポンスを生成する前に他のモジュールによって + ヘッダが書き換えられてしまうかもしれないということを意味します。</p> + + <p>early ディレクティブではリクエストパスの設定が解決される前に + 処理されるので、メインサーバかバーチャルホストコンテキストでのみ、 + 早期ヘッダをセットできます。early ディレクティブはリクエストパスに + 依存することはできませんので、<code><Directory></code> や + <code><Location></code> といったコンテキスト内では使用 + できません。</p> </section> -<section id="examples"><title>$BNc(B</title> +<section id="examples"><title>例</title> <ol> - <li>$B%j%/%(%9%H%X%C%@Cf$N(B "TS" $B$G;O$^$k%U%#!<%k%I$r$9$Y$F1~Ez%X%C%@$K(B - $B%3%T!<$7$^$9(B: + <li>リクエストヘッダ中の "TS" で始まるフィールドをすべて応答ヘッダに + コピーします: <example> Header echo ^TS </example> </li> <li> - $B%j%/%(%9%H$r<u$1IU$1$?;~9o$H%j%/%(%9%H$r=hM}$7$?;~4V$rF~$l$?%X%C%@!"(B - <code>MyHeader</code> $B$r1~Ez$KDI2C$7$^$9!#$3$N%X%C%@$O%/%i%$%"%s%H$,(B - $B%5!<%P$NIi2Y$rD>4QE*$KCN$k$?$a$d!"%/%i%$%"%s%H(B-$B%5!<%P4V$N(B - $B%\%H%k%M%C%/$rD4$Y$k$?$a$K;H$&$3$H$,$G$-$^$9!#(B + リクエストを受け付けた時刻とリクエストを処理した時間を入れたヘッダ、 + <code>MyHeader</code> を応答に追加します。このヘッダはクライアントが + サーバの負荷を直観的に知るためや、クライアント-サーバ間の + ボトルネックを調べるために使うことができます。 <example> Header add MyHeader "%D %t" </example> - <p>$B>e5-$N@_Dj$G$O!"0J2<$N$h$&$J%X%C%@$,1~Ez$KDI2C$5$l$k$3$H$K$J$j$^$9(B:</p> + <p>上記の設定では、以下のようなヘッダが応答に追加されることになります:</p> <example> MyHeader: D=3775428 t=991424704447256 @@ -107,31 +107,31 @@ </li> <li> - Joe $B$K$"$$$5$D$r$7$^$9(B: + Joe にあいさつをします: <example> Header add MyHeader "Hello Joe. It took %D microseconds for Apache to serve this request." </example> - <p>$B0J2<$N$h$&$J%X%C%@$,1~Ez$KDI2C$5$l$k$3$H$K$J$j$^$9(B</p> + <p>以下のようなヘッダが応答に追加されることになります</p> <example> MyHeader: Hello Joe. It took D=3775428 microseconds for Apache to serve this request. </example> </li> - <li>$B%j%/%(%9%H$K(B "MyRequestHeader" $B$,$"$k$H$-$K8B$j(B <code>MyHeader</code> $B$r1~Ez$K(B - $BIU$1$^$9!#$3$l$O!"%/%i%$%"%s%H$NMW5a$K1~$($F%X%C%@$r:n@.$9$k$H$-$K(B - $BLr$KN)$A$^$9!#$3$NNc$G$O(B <module>mod_setenvif</module> $B%b%8%e!<%k$,I,MW$J$3$H$K(B - $BCm0U$7$F$/$@$5$$!#(B + <li>リクエストに "MyRequestHeader" があるときに限り <code>MyHeader</code> を応答に + 付けます。これは、クライアントの要求に応えてヘッダを作成するときに + 役に立ちます。この例では <module>mod_setenvif</module> モジュールが必要なことに + 注意してください。 <example> SetEnvIf MyRequestHeader value HAVE_MyRequestHeader<br /> Header add MyHeader "%D %t mytext" env=HAVE_MyRequestHeader </example> - <p>$B$b$7(B HTTP $B%j%/%(%9%H$K(B <code>MyRequestHeader: value</code> $B%X%C%@$,(B - $B$"$k$H!"1~Ez$K$O0J2<$N$h$&$J%X%C%@$,IU2C$5$l$^$9!#(B</p> + <p>もし HTTP リクエストに <code>MyRequestHeader: value</code> ヘッダが + あると、応答には以下のようなヘッダが付加されます。</p> <example> MyHeader: D=3775428 t=991424704447256 mytext @@ -142,7 +142,7 @@ <directivesynopsis> <name>RequestHeader</name> -<description>HTTP $B%j%/%(%9%H%X%C%@$N@_Dj(B</description> +<description>HTTP リクエストヘッダの設定</description> <syntax>RequestHeader set|append|add|unset <var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -150,186 +150,186 @@ <override>FileInfo</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B HTTP $B%j%/%(%9%H%X%C%@$rCV49!"DI2C!":o=|$G$-$^$9!#(B - $B%X%C%@$O%3%s%F%s%H%O%s%I%i$,<B9T$5$l$kD>A0$K<B9T$5$l!"(B - $BF~$C$FMh$k%X%C%@$rJQ99$9$k$3$H$,2DG=$K$J$C$F$$$^$9!#(B - $B9T$J$&=hM}$OBh(B 1 $B0z?t$K$h$j7h$^$j$^$9!#$3$l$K$O0J2<$NCM$r;XDj(B - $B$9$k$3$H$,$G$-$^$9(B:</p> + <p>このディレクティブは HTTP リクエストヘッダを置換、追加、削除できます。 + ヘッダはコンテントハンドラが実行される直前に実行され、 + 入って来るヘッダを変更することが可能になっています。 + 行なう処理は第 1 引数により決まります。これには以下の値を指定 + することができます:</p> <dl> <dt><code>set</code></dt> - <dd>$B%j%/%(%9%H%X%C%@$r@_Dj$7$^$9!#F1$8L>A0$N%X%C%@$,B8:_$7$F$$$k$H!"(B - $B$=$l$rCV$-49$($^$9!#(B</dd> + <dd>リクエストヘッダを設定します。同じ名前のヘッダが存在していると、 + それを置き換えます。</dd> <dt><code>append</code></dt> - <dd>$B%j%/%(%9%H%X%C%@$O!"4{$KB8:_$9$kF1$8L>A0$N%X%C%@$KDI2C$5$l$^$9!#(B - $B?7$7$$CM$,4{B8$N%X%C%@$KDI2C$5$l$k$H$-$K$O!"4{B8$N%X%C%@$N(B - $B8e$K%3%s%^$G6h@Z$i$l$FDI2C$5$l$^$9!#$3$l$O%X%C%@$KJ#?t$NCM$r(B - $B;XDj$9$k$H$-$N(B HTTP $B$NI8=`$NJ}K!$G$9!#(B</dd> + <dd>リクエストヘッダは、既に存在する同じ名前のヘッダに追加されます。 + 新しい値が既存のヘッダに追加されるときには、既存のヘッダの + 後にコンマで区切られて追加されます。これはヘッダに複数の値を + 指定するときの HTTP の標準の方法です。</dd> <dt><code>add</code></dt> - <dd>$B%X%C%@$,4{$KB8:_$7$F$$$k$H$-$G$5$($b!"%j%/%(%9%H%X%C%@$r(B - $B4{B8$N%X%C%@$KDI2C$7$^$9!#$3$l$K$h$j!"Fs$D(B ($B$+$=$l0J>e(B) $B$N(B - $B%X%C%@$NL>A0$,F1$8$K$J$k$3$H$,$"$j$^$9!#$=$N7k2L!"A[Dj$G$-$J$$(B - $B$3$H$,5/$3$k2DG=@-$,$"$j$^$9$N$G!"0lHLE*$K$O(B <code>append</code> $B$NJ}$r(B - $B;H$&J}$,NI$$$G$7$g$&!#(B</dd> + <dd>ヘッダが既に存在しているときでさえも、リクエストヘッダを + 既存のヘッダに追加します。これにより、二つ (かそれ以上) の + ヘッダの名前が同じになることがあります。その結果、想定できない + ことが起こる可能性がありますので、一般的には <code>append</code> の方を + 使う方が良いでしょう。</dd> <dt><code>unset</code></dt> - <dd>$B$b$7;XDj$5$l$?L>A0$N%j%/%(%9%H%X%C%@$,B8:_$7$F$$$l$P!":o=|$5$l$^$9!#(B - $BF1$8L>A0$NJ#?t$N%X%C%@$,$"$k$H$-$O!"$9$Y$F:o=|$5$l$^$9!#(B - <var>value</var> $B$r$D$1$F$O$$$1$^$;$s!#(B</dd> + <dd>もし指定された名前のリクエストヘッダが存在していれば、削除されます。 + 同じ名前の複数のヘッダがあるときは、すべて削除されます。 + <var>value</var> をつけてはいけません。</dd> </dl> - <p>$B$3$N0z?t$N8e$K$O%X%C%@L>(B (<em>header</em>) $B$,B3$-$^$9!#(B - $B%X%C%@L>$K$O:G8e$K%3%m%s$r4^$a$k$3$H$b$G$-$^$9$,!"L5$/$F$b9=$$$^$;$s!#(B - $BBgJ8;z>.J8;z$O6hJL$5$l$^$;$s!#(B<code>add</code>, - <code>append</code>, <code>set</code> $B$N>l9g$O!"(B<em>value</em> $B$,;0$DL\$N(B - $B0z?t$H$7$F;XDj$5$l$^$9!#(B<em>value</em> $B$K6uGr$,$"$k>l9g$OFs=E0zMQId$G(B - $B0O$`I,MW$,$"$j$^$9!#(Bunset $B$N>l9g$O!"(B<em>value</em> $B$O;XDj$7$^$;$s!#(B - <var>value</var> $B$OJ8;zNs!"%U%)!<%^%C%H;XDj;R!"$"$k$$$O!"$=$N:.9g$G$9!#(B - $B;H$&$3$H$N$G$-$k%U%)!<%^%C%H;XDj;R$O!"(B<directive - module="mod_headers">Header</directive> $B$HF1$8$G$9$N$G!"(B - $B>\:Y$O$=$A$i$r$4Mw$/$@$5$$!#(B</p> - - <p><directive>RequestHeader</directive> $B%G%#%l%/%F%#%V$O!"(B - $B$I$&$$$C$?>r7o2<$G%"%/%7%g%s$r9T$&$+$r;XDj$9$kDI2C0z?t(B - $B$"$k$$$O!"(B<a href="#early">$BAa4|=hM}(B</a> $B$r;XDj$9$k(B <code>early</code> - $B%-!<%o!<%I$r@_Dj$9$k$3$H$,$G$-$^$9!#(B - <code>env=<var>...</var></code> $B$N0z?t$G@_Dj$5$l$F$$$k(B - <a href="../env.html">$B4D6-JQ?t(B</a> $B$,B8:_$7$F$$$k(B - ($B$"$k$$$O(B <code>env=!<var>...</var></code> $B$G;XDj$5$l$?4D6-JQ?t$,(B - $BB8:_$7$J$$(B) $B>l9g!"(B<directive>RequestHeader</directive> $B%G%#%l%/%F%#%V$O(B - $BM-8z$K$J$j$^$9!#$=$l0J30$N>l9g!"%G%#%l%/%F%#%V$O8zNO$r;}$A$^$;$s!#(B</p> - - <p><a href="#early">early</a> $B%b!<%I$G$J$$>l9g$K8B$j!"(B - <directive>RequestHeader</directive> $B%G%#%l%/%F%#%V$O(B - fixup $B%U%'!<%:$G%j%/%(%9%H$,%O%s%I%i$K07$o$l$kD>A0$K(B - $B=hM}$5$l$^$9!#$3$l$K$h$j!"%V%i%&%6$d(B Apache $B$NF~NO%U%#%k%?$K$h$j(B - $B@8@.$5$l$?%X%C%@$r>e=q$-$7$?$j=$@5$7$?$j$G$-$k$h$&$K$J$C$F$$$^$9!#(B</p> + <p>この引数の後にはヘッダ名 (<em>header</em>) が続きます。 + ヘッダ名には最後にコロンを含めることもできますが、無くても構いません。 + 大文字小文字は区別されません。<code>add</code>, + <code>append</code>, <code>set</code> の場合は、<em>value</em> が三つ目の + 引数として指定されます。<em>value</em> に空白がある場合は二重引用符で + 囲む必要があります。unset の場合は、<em>value</em> は指定しません。 + <var>value</var> は文字列、フォーマット指定子、あるいは、その混合です。 + 使うことのできるフォーマット指定子は、<directive + module="mod_headers">Header</directive> と同じですので、 + 詳細はそちらをご覧ください。</p> + + <p><directive>RequestHeader</directive> ディレクティブは、 + どういった条件下でアクションを行うかを指定する追加引数 + あるいは、<a href="#early">早期処理</a> を指定する <code>early</code> + キーワードを設定することができます。 + <code>env=<var>...</var></code> の引数で設定されている + <a href="../env.html">環境変数</a> が存在している + (あるいは <code>env=!<var>...</var></code> で指定された環境変数が + 存在しない) 場合、<directive>RequestHeader</directive> ディレクティブは + 有効になります。それ以外の場合、ディレクティブは効力を持ちません。</p> + + <p><a href="#early">early</a> モードでない場合に限り、 + <directive>RequestHeader</directive> ディレクティブは + fixup フェーズでリクエストがハンドラに扱われる直前に + 処理されます。これにより、ブラウザや Apache の入力フィルタにより + 生成されたヘッダを上書きしたり修正したりできるようになっています。</p> </usage> </directivesynopsis> <directivesynopsis> <name>Header</name> -<description>HTTP $B1~Ez%X%C%@$N@_Dj(B</description> +<description>HTTP 応答ヘッダの設定</description> <syntax>Header [<var>condition</var>] set|append|add|unset|echo <var>header</var> [<var>value</var>] [early|env=[!]<var>variable</var>]</syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>FileInfo</override> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B HTTP $B1~Ez%X%C%@$rCV49!"DI2C!":o=|$G$-$^$9!#(B - $B%X%C%@$O%3%s%F%s%H%O%s%I%i$d=PNO%U%#%k%?$,<B9T$5$l$?D>8e$K<B9T$5$l!"(B - $B=P$F9T$/%X%C%@$rJQ99$G$-$k$h$&$K$J$C$F$$$^$9!#(B</p> + <p>このディレクティブは HTTP 応答ヘッダを置換、追加、削除できます。 + ヘッダはコンテントハンドラや出力フィルタが実行された直後に実行され、 + 出て行くヘッダを変更できるようになっています。</p> - <p>$B%*%W%7%g%s$N(B <var>condition</var> $B$O(B <code>onsuccess</code> $B$+(B - <code>always</code> $B$N$I$A$i$+$r;XDj$G$-$^$9!#$3$l$OFbIt%X%C%@%F!<%V%k$N$I$l$r(B - $BA`:n$9$k$+$r7hDj$7$^$9!#(B<code>onsuccess</code> $B$O(B <code>2<var>xx</var></code> - $B%9%F!<%?%9%3!<%I$N!"(B<code>always</code> $B$OA4$F$N%9%F!<%?%9%3!<%I(B - (<code>2<var>xx</var></code> $B$r4^$`(B) $B$N0UL#$K$J$j$^$9!#(B - $B$"$k%b%8%e!<%k$G%;%C%H$5$l$k%X%C%@$r%"%s%;%C%H$7$?$$>l9g$OFC$K!"(B - $B$I$N%F!<%V%k$,1F6A$r<u$1$k$+$r<B:]$K;n$7$?$[$&$,$h$$$G$7$g$&!#(B</p> + <p>オプションの <var>condition</var> は <code>onsuccess</code> か + <code>always</code> のどちらかを指定できます。これは内部ヘッダテーブルのどれを + 操作するかを決定します。<code>onsuccess</code> は <code>2<var>xx</var></code> + ステータスコードの、<code>always</code> は全てのステータスコード + (<code>2<var>xx</var></code> を含む) の意味になります。 + あるモジュールでセットされるヘッダをアンセットしたい場合は特に、 + どのテーブルが影響を受けるかを実際に試したほうがよいでしょう。</p> - <p>$B9T$J$&=hM}$OFsHVL\$N$N0z?t$G7h$^$j$^$9!#(B - $B$3$N0z?t$K$O<!$NCM$r;XDj$G$-$^$9(B:</p> + <p>行なう処理は二番目のの引数で決まります。 + この引数には次の値を指定できます:</p> <dl> <dt><code>set</code></dt> - <dd>$B1~Ez%X%C%@$r@_Dj$7$^$9!#F1$8L>A0$N%X%C%@$,B8:_$9$k>l9g$O$=$l$r(B - $BCV$-49$($^$9!#(B<em>value</em> $B$K$O%U%)!<%^%C%HJ8;zNs$r(B - $B;XDj$9$k$3$H$b$G$-$^$9!#(B</dd> + <dd>応答ヘッダを設定します。同じ名前のヘッダが存在する場合はそれを + 置き換えます。<em>value</em> にはフォーマット文字列を + 指定することもできます。</dd> <dt><code>append</code></dt> - <dd>$B1~Ez%X%C%@$r4{$KB8:_$9$kF1$8L>A0$N%X%C%@$KDI2C$7$^$9!#(B - $B?7$7$$CM$,4{B8$N%X%C%@$KDI2C$5$l$k$H$-$K$O!"4{B8$N%X%C%@$N(B - $B8e$K%3%s%^$G6h@Z$i$l$FDI2C$5$l$^$9!#$3$l$O%X%C%@$KJ#?t$NCM$r(B - $B;XDj$9$k$H$-$N(B HTTP $B$NI8=`$NJ}K!$G$9!#(B</dd> + <dd>応答ヘッダを既に存在する同じ名前のヘッダに追加します。 + 新しい値が既存のヘッダに追加されるときには、既存のヘッダの + 後にコンマで区切られて追加されます。これはヘッダに複数の値を + 指定するときの HTTP の標準の方法です。</dd> <dt><code>add</code></dt> - <dd>$B%X%C%@$,4{$KB8:_$7$F$$$k$H$-$G$5$($b!"1~Ez%X%C%@$r(B - $B4{B8$N%X%C%@$KDI2C$7$^$9!#$3$l$K$h$j!"Fs$D(B ($B$+$=$l0J>e(B) $B$N(B - $B%X%C%@$NL>A0$,F1$8$K$J$k$3$H$,$"$j$^$9!#$=$N7k2L!"A[Dj$G$-$J$$(B - $B$3$H$,5/$3$k2DG=@-$,$"$j$^$9$N$G!"0lHLE*$K$O(B <code>append</code> $B$NJ}$r(B - $B;H$&J}$,NI$$$G$7$g$&!#(B</dd> + <dd>ヘッダが既に存在しているときでさえも、応答ヘッダを + 既存のヘッダに追加します。これにより、二つ (かそれ以上) の + ヘッダの名前が同じになることがあります。その結果、想定できない + ことが起こる可能性がありますので、一般的には <code>append</code> の方を + 使う方が良いでしょう。</dd> <dt><code>unset</code></dt> - <dd>$B$b$7;XDj$5$l$?L>A0$N1~Ez%X%C%@$,B8:_$7$F$$$l$P!":o=|$5$l$^$9!#(B - $BF1$8L>A0$N%X%C%@$,J#?t$"$k$H$-$O!"$9$Y$F:o=|$5$l$^$9!#(B - <var>value</var> $B$r$D$1$F$O$$$1$^$;$s!#(B</dd> + <dd>もし指定された名前の応答ヘッダが存在していれば、削除されます。 + 同じ名前のヘッダが複数あるときは、すべて削除されます。 + <var>value</var> をつけてはいけません。</dd> <dt><code>echo</code></dt> - <dd>$B;XDj$5$l$?$b$N$HF1$8L>A0$N%j%/%(%9%H%X%C%@$r1~Ez%X%C%@$G(B - $B$=$N$^$^JV$7$^$9!#(B<var>header</var> $B$K$O@55,I=8=$b;XDj$G$-$^$9!#(B - <var>value</var> $B$r$D$1$F$O$$$1$^$;$s!#(B</dd> + <dd>指定されたものと同じ名前のリクエストヘッダを応答ヘッダで + そのまま返します。<var>header</var> には正規表現も指定できます。 + <var>value</var> をつけてはいけません。</dd> </dl> - <p>$B$3$N0z?t$N8e$K$O%X%C%@L>(B (<var>header</var>) $B$,B3$-$^$9!#(B - $B%X%C%@L>$K$O:G8e$K%3%m%s$r4^$a$k$3$H$b$G$-$^$9$,!"L5$/$F$b9=$$$^$;$s!#(B + <p>この引数の後にはヘッダ名 (<var>header</var>) が続きます。 + ヘッダ名には最後にコロンを含めることもできますが、無くても構いません。 <code>set</code>, <code>append</code>, <code>add</code>, - <code>unset</code> $B$G$OBgJ8;z>.J8;z$O(B - $B6hJL$5$l$^$;$s!#(Becho $B$N(B <em>header</em> $BL>$OBgJ8;z>.J8;z$r6hJL$7!"(B - $B@55,I=8=$r;XDj$9$k$3$H$b$G$-$^$9!#(B</p> + <code>unset</code> では大文字小文字は + 区別されません。echo の <em>header</em> 名は大文字小文字を区別し、 + 正規表現を指定することもできます。</p> <p><code>add</code>, <code>append</code>, - <code>set</code> $B$G$O(B <var>value</var> $B$r;0$DL\$N(B - $B0z?t$H$7$F;XDj$7$^$9!#(B<var>value</var> $B$K6uGr$,$"$k>l9g$OFs=E0zMQId$G(B - $B0O$`I,MW$,$"$j$^$9!#(B<var>value</var> $B$OJ8;z$N$_$+$i$J$kJ8;zNs!"(B - $B%U%)!<%^%C%H;X<(;R$r4^$`J8;zNs!"$b$7$/$ON>J}$+$i$J$kJ8;zNs$r;XDj$G$-$^$9!#(B - <var>value</var> $B$O0J2<$N%U%)!<%^%C%H;X<(;R$r%5%]!<%H$7$^$9(B:</p> + <code>set</code> では <var>value</var> を三つ目の + 引数として指定します。<var>value</var> に空白がある場合は二重引用符で + 囲む必要があります。<var>value</var> は文字のみからなる文字列、 + フォーマット指示子を含む文字列、もしくは両方からなる文字列を指定できます。 + <var>value</var> は以下のフォーマット指示子をサポートします:</p> <table border="1" style="zebra"> <columnspec><column width=".25"/><column width=".75"/></columnspec> - <tr><th>$B%U%)!<%^%C%H(B</th><th>$B2r@b(B</th></tr> + <tr><th>フォーマット</th><th>解説</th></tr> <tr><td><code>%%</code></td> - <td>$B%Q!<%;%s%H5-9f(B</td></tr> + <td>パーセント記号</td></tr> <tr><td><code>%t</code></td> - <td>$B%j%/%(%9%H$r<u$1<h$C$?;~9o$r!"(B - Universal Coordinated Time $B$G$N;O$^$j$N;~9o(B (Jan. 1, 1970) $B$+$i7P2a$7$?(B - $B;~4V$r%^%$%/%mIC$H$7$F8=$7$?$b$N!#CM$N:G=i$K$O(B - <code>t=</code> $B$,IU2C$5$l$^$9!#(B</td></tr> + <td>リクエストを受け取った時刻を、 + Universal Coordinated Time での始まりの時刻 (Jan. 1, 1970) から経過した + 時間をマイクロ秒として現したもの。値の最初には + <code>t=</code> が付加されます。</td></tr> <tr><td><code>%D</code></td> - <td>$B%j%/%(%9%H$r<u$1<h$C$?;~9o$H!"%X%C%@$rAw$j=P$7$?(B - $B;~4V$H$N:9!#$3$l$O!"%j%/%(%9%H$,B8:_$7$F$$$?4|4V$r8=$7$^$9!#(B - $BCM$N:G=i$K$O(B <code>D=</code> $B$,IU2C$5$l$^$9!#(B</td></tr> + <td>リクエストを受け取った時刻と、ヘッダを送り出した + 時間との差。これは、リクエストが存在していた期間を現します。 + 値の最初には <code>D=</code> が付加されます。</td></tr> <tr><td><code>%{FOOBAR}e</code></td> - <td><a href="../env.html">$B4D6-JQ?t(B</a> - <code>FOOBAR</code> $B$NCM$G$9!#(B</td></tr> + <td><a href="../env.html">環境変数</a> + <code>FOOBAR</code> の値です。</td></tr> <tr><td><code>%{FOOBAR}s</code></td> - <td><module>mod_ssl</module> $B$,M-8z$J>l9g!"(B - <a href="mod_ssl.html#envvars">SSL $B4D6-JQ?t(B</a> <code>FOOBAR</code> - $B$NFbMF(B</td></tr> + <td><module>mod_ssl</module> が有効な場合、 + <a href="mod_ssl.html#envvars">SSL 環境変数</a> <code>FOOBAR</code> + の内容</td></tr> </table> - <note><title>$BCm(B</title> - <p><code>%s</code> $B%U%)!<%^%C%H;XDj;R$O(B 2.1 $B0J9_$G$N$_MxMQ$G$-$^$9!#(B - <code>SSLOptions +StdEnvVars</code> $B$rM-8z$K$9$k$3$H$K$h$k%*!<%P!<%X%C%I$r(B - $BHr$1$k$?$a!"(B<code>%e</code> $B$NBe$o$j$H$7$F;H$($^$9!#(B - $BB>$NM}M3$J$I$,$"$C$F!"$I$&$7$F$b(B <code>SSLOptions +StdEnvVars</code> - $B$rM-8z$K$7$J$1$l$P$J$i$J$$>l9g$O!"(B<code>%e</code> $B$N$[$&$,(B - <code>%s</code> $B$h$j$b=hM}8zN($ONI$$$G$9!#(B</p> + <note><title>注</title> + <p><code>%s</code> フォーマット指定子は 2.1 以降でのみ利用できます。 + <code>SSLOptions +StdEnvVars</code> を有効にすることによるオーバーヘッドを + 避けるため、<code>%e</code> の代わりとして使えます。 + 他の理由などがあって、どうしても <code>SSLOptions +StdEnvVars</code> + を有効にしなければならない場合は、<code>%e</code> のほうが + <code>%s</code> よりも処理効率は良いです。</p> </note> - <p><directive>Header</directive> $B%G%#%l%/%F%#%V$K$ODI2C$N0z?t$r;}$?$;$k$3$H$,(B - $B$G$-$F!"$I$&$$$C$?%"%/%7%g%s$,9T$o$l$?$+$N>r7o$r;XDj$7$?$j!"(B - <a href="#early">$BAa4|=hM}(B</a> $B$r;XDj$9$k(B <code>early</code> $B%-!<%o!<%I$r(B - $B;XDj$G$-$^$9!#(B - <code>env=...</code> $B0z?t$G;XDj$5$l$?(B <a - href="../env.html">$B4D6-JQ?t(B</a> $B$,B8:_$9$k(B ($B$b$7$/$O(B <code>env=!...</code> - $B$,;XDj$5$l$F$$$F4D6-JQ?t$,B8:_$7$J$$(B) $B>l9g$O!"(B<directive>Header</directive> - $B%G%#%l%/%F%#%V$G;XDj$5$l$?F0:n$,9T$J$o$l$^$9!#$=$&$G$J$$>l9g$O!"(B - $B%G%#%l%/%F%#%V$O$=$N%j%/%(%9%H$K$O2?$b$7$^$;$s!#(B</p> - - <p><a href="#early">$BAa4|=hM}(B</a>$B%b!<%I$N>l9g0J30$G$O!"(B + <p><directive>Header</directive> ディレクティブには追加の引数を持たせることが + できて、どういったアクションが行われたかの条件を指定したり、 + <a href="#early">早期処理</a> を指定する <code>early</code> キーワードを + 指定できます。 + <code>env=...</code> 引数で指定された <a + href="../env.html">環境変数</a> が存在する (もしくは <code>env=!...</code> + が指定されていて環境変数が存在しない) 場合は、<directive>Header</directive> + ディレクティブで指定された動作が行なわれます。そうでない場合は、 + ディレクティブはそのリクエストには何もしません。</p> + + <p><a href="#early">早期処理</a>モードの場合以外では、 <directive>Header</directive> - $B%G%#%l%/%F%#%V$O1~Ez$,%M%C%H%o!<%/$KAw$i$l$kD>A0$K(B - $B=hM}$5$l$^$9!#$3$l$O!"%X%C%@%U%#%k%?$K$h$jDI2C$5$l$k%X%C%@$r(B - $B=|$-!"$[$H$s$I$N%X%C%@$r@_Dj$7$?$j>e=q$-$7$?$j$9$k$3$H$,(B - $B2DG=!"$H$$$&$3$H$G$9!#(B</p> + ディレクティブは応答がネットワークに送られる直前に + 処理されます。これは、ヘッダフィルタにより追加されるヘッダを + 除き、ほとんどのヘッダを設定したり上書きしたりすることが + 可能、ということです。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_ident.xml.ja b/docs/manual/mod/mod_ident.xml.ja index ca290e9043..ca60e80f1b 100644 --- a/docs/manual/mod/mod_ident.xml.ja +++ b/docs/manual/mod/mod_ident.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420993 --> @@ -27,62 +27,62 @@ <status>Extension</status> <sourcefile>mod_ident.c</sourcefile> <identifier>ident_module</identifier> -<compatibility>Apache 2.1 $B$G;HMQ2DG=(B</compatibility> +<compatibility>Apache 2.1 で使用可能</compatibility> <summary> - <p>$B$3$N%b%8%e!<%k$O%j%b!<%H%[%9%H$N(B <a - href="http://www.ietf.org/rfc/rfc1413.txt">RFC 1413</a> $B8_49%G!<%b%s(B - $B$K%3%M%/%7%g%s$N=jM-<T$r?V$-$^$9!#(B</p> + <p>このモジュールはリモートホストの <a + href="http://www.ietf.org/rfc/rfc1413.txt">RFC 1413</a> 互換デーモン + にコネクションの所有者を訊きます。</p> </summary> <seealso><module>mod_log_config</module></seealso> <directivesynopsis> <name>IdentityCheck</name> -<description>$B%j%b!<%H%f!<%6$N(B RFC 1413 $B$K$h$k%"%$%G%s%F%#%F%#$N%m%.%s%0$r(B -$BM-8z$K$9$k(B</description> +<description>リモートユーザの RFC 1413 によるアイデンティティのロギングを +有効にする</description> <syntax>IdentityCheck On|Off</syntax> <default>IdentityCheck Off</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context></contextlist> -<compatibility>Apache 2.1 $B$G(B core $B$+$i0\F0(B</compatibility> +<compatibility>Apache 2.1 で core から移動</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"%/%i%$%"%s%H%^%7%s>e$G(B - identd $B$d$=$l$KN`;w$7$?%G!<%b%s$,F0:n$7$F$$$k$H$-$K!"(B - $B$=$l$>$l$N@\B3$KBP$7$F(B <a href="http://www.ietf.org/rfc/rfc1413.txt" - >RFC 1413</a> $B$K=`=h$7$?%j%b!<%H%f!<%6$N(B - $BL>A0$N%m%.%s%0$r9T$J$&$h$&$K$7$^$9!#(B - $B$3$N>pJs$O!"(B<code>%...l</code> <a href="mod_log_config.html#formats" - >$B%U%)!<%^%C%HJ8;zNs(B</a>$B$r;H$C$F%"%/%;%9%m%0$K<}=8$5$l$^$9!#(B</p> + <p>このディレクティブは、クライアントマシン上で + identd やそれに類似したデーモンが動作しているときに、 + それぞれの接続に対して <a href="http://www.ietf.org/rfc/rfc1413.txt" + >RFC 1413</a> に準処したリモートユーザの + 名前のロギングを行なうようにします。 + この情報は、<code>%...l</code> <a href="mod_log_config.html#formats" + >フォーマット文字列</a>を使ってアクセスログに収集されます。</p> <note> - $B$3$3$GF@$i$l$?>pJs$O4JC1$J%f!<%6DI@W$K;H$&0J30$O!"(B - $B$^$C$?$/?.Mj$9$k$Y$-$G$O$"$j$^$;$s!#(B</note> + ここで得られた情報は簡単なユーザ追跡に使う以外は、 + まったく信頼するべきではありません。</note> - <p>$B$9$Y$F$N%j%/%(%9%H$KBP$7$F%k%C%/%"%C%W$,9T$J$o$l$^$9$N$G!"(B - $B?<9o$JCY1d$NLdBj$r5/$3$9$+$b$7$l$J$$$3$H$KCm0U$7$F$/$@$5$$!#(B - ($BLuCm(B: $BNc$($P%/%i%$%"%s%HB&$K(B) $B%U%!%$%"%&%)!<%k$d%W%m%-%7%5!<%P$,$"$k$H!"(B - $B%k%C%/%"%C%W$,<:GT$7!"3F%j%/%(%9%H$K(B <directive module="mod_ident" - >IdentityCheckTimeout</directive>$B$GDj5A$5$l$F$$$kCY1d$,2C$o$k$3$H$K(B - $B$J$k2DG=@-$,$"$j$^$9!#(B - $B=>$C$F!"0lHLE*$K$O%$%s%?!<%M%C%H$+$i%"%/%;%92DG=$J%Q%V%j%C%/$J%5!<%P$G(B - $BM-1W$J$b$N$G$O$"$j$^$;$s!#(B</p> + <p>すべてのリクエストに対してルックアップが行なわれますので、 + 深刻な遅延の問題を起こすかもしれないことに注意してください。 + (訳注: 例えばクライアント側に) ファイアウォールやプロキシサーバがあると、 + ルックアップが失敗し、各リクエストに <directive module="mod_ident" + >IdentityCheckTimeout</directive>で定義されている遅延が加わることに + なる可能性があります。 + 従って、一般的にはインターネットからアクセス可能なパブリックなサーバで + 有益なものではありません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>IdentityCheckTimeout</name> -<description>Ident $B%j%/%(%9%H$,%?%$%`%"%&%H$9$k$^$G$N4|4V$r7h$a$k(B</description> +<description>Ident リクエストがタイムアウトするまでの期間を決める</description> <syntax>IdentityCheckTimeout <var>seconds</var></syntax> <default>IdentityCheckTimeout 30</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context></contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B ident $B%j%/%(%9%H$N%?%$%`%"%&%H;~4V$r7h$a$^$9!#(B - $B%G%U%)%k%H$NCM$G$"$k(B 30 $BIC$O!"<g$K%M%C%H%o!<%/CY1d$N9MN8$N$?$a$K(B <a - href="http://www.ietf.org/rfc/rfc1413.txt">RFC 1413</a> $B$K$h$j(B - $B?d>)$5$l$F$$$^$9!#$7$+$7!"$*$=$i$/%m!<%+%k%M%C%H%o!<%/$NB.EY$K(B - $B9g$o$;$F%?%$%`%"%&%HCM$rD4@a$9$k$N$,$h$$$G$7$g$&!#(B</p> + <p>このディレクティブは ident リクエストのタイムアウト時間を決めます。 + デフォルトの値である 30 秒は、主にネットワーク遅延の考慮のために <a + href="http://www.ietf.org/rfc/rfc1413.txt">RFC 1413</a> により + 推奨されています。しかし、おそらくローカルネットワークの速度に + 合わせてタイムアウト値を調節するのがよいでしょう。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_include.xml.ja b/docs/manual/mod/mod_include.xml.ja index b0344cfc5e..8021a30127 100644 --- a/docs/manual/mod/mod_include.xml.ja +++ b/docs/manual/mod/mod_include.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:656287 (outdated) --> @@ -23,93 +23,93 @@ <modulesynopsis metafile="mod_include.xml.meta"> <name>mod_include</name> -<description>$B%5!<%P$,%Q!<%9$9$k(B html $B%I%-%e%a%s%H(B (Server Side Includes)</description> +<description>サーバがパースする html ドキュメント (Server Side Includes)</description> <status>Base</status> <sourcefile>mod_include.c</sourcefile> <identifier>include_module</identifier> -<compatibility>Apache 2.0 $B$+$i=PNO%U%#%k%?$H$7$F<BAu$5$l$^$7$?!#(B</compatibility> +<compatibility>Apache 2.0 から出力フィルタとして実装されました。</compatibility> <summary> - <p>$B$3$N%b%8%e!<%k$O%U%!%$%k$,%/%i%$%"%s%H$KAw$i$l$kA0$K=hM}$9$k%U%#%k%?$r(B - $BDs6!$7$^$9!#=hM}$NFbMF$O(B<dfn>$BMWAG(B</dfn>$B$H8F$P$l$kFCJL$J7A<0$N(B SGML $B%3%a%s%H$K$h$j(B - $B@)8f$5$l$^$9!#$3$l$i$NMWAG$O>r7oJ,4t$d!"B>$N%U%!%$%k$d(B - $B%W%m%0%i%`$N=PNO$N<h$j9~$_!"4D6-JQ?t$N@_Dj$dI=<($r9T$J$&$3$H$,(B - $B$G$-$^$9!#(B</p> + <p>このモジュールはファイルがクライアントに送られる前に処理するフィルタを + 提供します。処理の内容は<dfn>要素</dfn>と呼ばれる特別な形式の SGML コメントにより + 制御されます。これらの要素は条件分岐や、他のファイルや + プログラムの出力の取り込み、環境変数の設定や表示を行なうことが + できます。</p> </summary> <seealso><directive module="core">Options</directive></seealso> <seealso><directive module="core">AcceptPathInfo</directive></seealso> -<seealso><a href="../filter.html">$B%U%#%k%?(B</a></seealso> -<seealso><a href="../howto/ssi.html">SSI $B%A%e!<%H%j%"%k(B</a></seealso> +<seealso><a href="../filter.html">フィルタ</a></seealso> +<seealso><a href="../howto/ssi.html">SSI チュートリアル</a></seealso> <section id="enabling"> - <title>Server-Side Includes $B$rM-8z$K$9$k(B</title> + <title>Server-Side Includes を有効にする</title> - <p>Server Side Includes $B$O(B <code>INCLUDES</code> - <a href="../filter.html">$B%U%#%k%?(B</a> $B$K$h$j<BAu$5$l$F$$$^$9!#(B - Server-side include $B$N%G%#%l%/%F%#%V$r4^$`%I%-%e%a%s%H$N3HD%;R$,(B - .shtml $B$N>l9g!"0J2<$N%G%#%l%/%F%#%V$G$O(B Apache $B$,$=$l$i$r(B - $B%Q!<%9$7$F!"$=$N7k2L$G$-$k%I%-%e%a%s%H$K(B <code>text/html</code> $B$N(B - MIME $B%?%$%W$r3d$jEv$F$^$9(B:</p> + <p>Server Side Includes は <code>INCLUDES</code> + <a href="../filter.html">フィルタ</a> により実装されています。 + Server-side include のディレクティブを含むドキュメントの拡張子が + .shtml の場合、以下のディレクティブでは Apache がそれらを + パースして、その結果できるドキュメントに <code>text/html</code> の + MIME タイプを割り当てます:</p> <example> AddType text/html .shtml<br /> AddOutputFilter INCLUDES .shtml </example> - <p>$B0J2<$N%G%#%l%/%F%#%V$O(B shtml $B%U%!%$%k$N$"$k%G%#%l%/%H%j$G;XDj$5$l$F$$$k(B - $BI,MW$,$"$j$^$9(B ($BDL>o$O(B <directive module="core" - type="section">Directory</directive> $B%;%/%7%g%s$G;XDj$7$^$9$,!"(B + <p>以下のディレクティブは shtml ファイルのあるディレクトリで指定されている + 必要があります (通常は <directive module="core" + type="section">Directory</directive> セクションで指定しますが、 <directive module="core">AllowOverride</directive> <code>Options</code> - $B$,@_Dj$5$l$F$$$k$H!"(B<code>.htaccess</code> $B%U%!%$%k$K=q$/$3$H$b$G$-$^$9(B):</p> + が設定されていると、<code>.htaccess</code> ファイルに書くこともできます):</p> <example> Options +Includes </example> - <p>$B8_49@-$rJ]$D$?$a$K!"(B<code>server-parsed</code> - <a href="../handler.html">$B%O%s%I%i(B</a> $B$b(B INCLUDES $B%U%#%k%?$r(B - $BM-8z$K$7$^$9!#(BMIME $B%?%$%W(B <code>text/x-server-parsed-html</code> $B$d(B - <code>text/x-server-parsed-html3</code> $B$N%I%-%e%a%s%H$KBP$7$F$b(B - Apache $B$O(B INCLUDES $B%U%#%k%?$rM-8z$K$7$^$9(B ($B=PNO$5$l$k$b$N$O(B - MIME $B%?%$%W(B <code>text/html</code> $B$K$J$j$^$9(B)$B!#(B</p> + <p>互換性を保つために、<code>server-parsed</code> + <a href="../handler.html">ハンドラ</a> も INCLUDES フィルタを + 有効にします。MIME タイプ <code>text/x-server-parsed-html</code> や + <code>text/x-server-parsed-html3</code> のドキュメントに対しても + Apache は INCLUDES フィルタを有効にします (出力されるものは + MIME タイプ <code>text/html</code> になります)。</p> - <p>$B>\$7$$>pJs$O(B <a + <p>詳しい情報は <a href="../howto/ssi.html">Tutorial on Server Side Includes</a>.</p> </section> <!-- /enabling --> <section id="pathinfo"> - <title>$B%5!<%P%5%$%I%$%s%/%k!<%I(B (SSI) $B$G$N(B PATH_INFO</title> - - <p>SSI $B$G=hM}$5$l$k%U%!%$%k$O%G%U%)%k%H$G$O(B <code>PATH_INFO</code> - ($B8eB3$N%Q%9L>>pJs(B) - $BIU$-$N%j%/%(%9%H$r<u$1F~$l$J$/$J$j$^$7$?!#(B<directive - module="core">AcceptPathInfo</directive> $B%G%#%l%/%F%#%V$G(B - <code>PATH_INFO</code> $BIU$-$N%j%/%(%9%H$r<u$1F~$l$k$h$&$K%5!<%P$r(B - $B@_Dj$G$-$^$9!#(B</p> + <title>サーバサイドインクルード (SSI) での PATH_INFO</title> + + <p>SSI で処理されるファイルはデフォルトでは <code>PATH_INFO</code> + (後続のパス名情報) + 付きのリクエストを受け入れなくなりました。<directive + module="core">AcceptPathInfo</directive> ディレクティブで + <code>PATH_INFO</code> 付きのリクエストを受け入れるようにサーバを + 設定できます。</p> </section> <!-- /pathinfo --> -<section id="elements"><title>$B4pK\MWAG(B</title> - <p>$B%I%-%e%a%s%H$O!"(BSGML $B$N%3%a%s%H$H$7$FFCJL$J%3%^%s%I$,Kd$a9~$^$l$?(B - HTML $B%I%-%e%a%s%H$H$7$F%Q!<%9$5$l$^$9!#%3%^%s%I$N9=J8$O<!$N$h$&$K(B - $B$J$C$F$$$^$9(B:</p> +<section id="elements"><title>基本要素</title> + <p>ドキュメントは、SGML のコメントとして特別なコマンドが埋め込まれた + HTML ドキュメントとしてパースされます。コマンドの構文は次のように + なっています:</p> <example> <!--#<var>element</var> <var>attribute</var>=<var>value</var> <var>attribute</var>=<var>value</var> ... --> </example> - <p>$BCM(B ($BLuCm(B: value) $B$OFs=E0zMQId$G0O$`$N$,0lHLE*$G$9$,!"(B - $B%7%s%0%k%/%*!<%H(B (') $B$H%P%C%/%/%*!<%H(B (`) $B$b;HMQ$G$-$^$9!#(B - $BB?$/$N%3%^%s%I$OB0@-(B-$BCM(B ($BLuCm(B: attribute-value) $B$NAH$r0l$D$@$1;XDj$G$-$^$9!#(B - $B%3%a%s%H$N=*$o$j(B (<code>--></code>) - $B$NA0$K$O!"(BSSI $B$N6g$N0lIt$@$H2r<a$5$l$J$$$h$&$K$9$k$?$a$K6uGr$r(B - $BF~$l$F$/$@$5$$!#:G=i$N(B <code><!--#</code> $B$O$^$H$a$F(B<em>$B0l$D(B</em>$B$N(B - $B6g$G!"6uGr$r$U$/$s$G$O$$$1$J$$$3$HCm0U$7$F$/$@$5$$!#(B</p> + <p>値 (訳注: value) は二重引用符で囲むのが一般的ですが、 + シングルクオート (') とバッククオート (`) も使用できます。 + 多くのコマンドは属性-値 (訳注: attribute-value) の組を一つだけ指定できます。 + コメントの終わり (<code>--></code>) + の前には、SSI の句の一部だと解釈されないようにするために空白を + 入れてください。最初の <code><!--#</code> はまとめて<em>一つ</em>の + 句で、空白をふくんではいけないこと注意してください。</p> - <p>$BMWAG(B ($BLuCm(B: element) $B$r0J2<$NI=$K<($7$^$9!#(B</p> + <p>要素 (訳注: element) を以下の表に示します。</p> <table border="1"> - <tr><th>$BMWAG(B</th><th>$B@bL@(B</th></tr> + <tr><th>要素</th><th>説明</th></tr> <tr><td><code><a href="#element.config">config</a></code></td> <td>configure output formats</td></tr> <tr><td><code><a href="#element.echo">echo</a></code></td> @@ -128,117 +128,117 @@ <td>set a value of a variable</td></tr> </table> - <p>SSI $BMWAG$O(B <module>mod_include</module> $B0J30$N%b%8%e!<%k$G(B - $BDj5A$5$l$k$3$H$b$"$j$^$9!#<B:]!"(B - <code><a href="#element.exec">exec</a></code> $BMWAG$O(B - <module>mod_cgi</module> $B$GDs6!$5$l$F$$$F!"$3$N%b%8%e!<%k$,(B - $B%m!<%I$5$l$k>l9g$K$N$_MxMQ2DG=$H$J$j$^$9!#(B</p> + <p>SSI 要素は <module>mod_include</module> 以外のモジュールで + 定義されることもあります。実際、 + <code><a href="#element.exec">exec</a></code> 要素は + <module>mod_cgi</module> で提供されていて、このモジュールが + ロードされる場合にのみ利用可能となります。</p> - <section id="element.config"><title>config $BMWAG(B</title> - <p>$B<!$N%3%^%s%I$O2r@O$NMM!9$JB&LL$r@)8f$7$^$9!#B0@-$O<!$NDL$j$G$9!#(B</p> + <section id="element.config"><title>config 要素</title> + <p>次のコマンドは解析の様々な側面を制御します。属性は次の通りです。</p> <dl> - <dt><code>echomsg</code> (<em>Apache 2.1 $B0J9_(B</em>)</dt> - <dd>$B;XDj$5$l$kCM$O!"(B<code><a href="#element.echo">echo</a></code> - $BMWAG$,L$Dj5A$NJQ?t$r%(%3!<$7$h$&$H$7$?:]$K!"(B - $B%/%i%$%"%s%H$KAw$i$l$k%a%C%;!<%8$K$J$j$^$9!#(B + <dt><code>echomsg</code> (<em>Apache 2.1 以降</em>)</dt> + <dd>指定される値は、<code><a href="#element.echo">echo</a></code> + 要素が未定義の変数をエコーしようとした際に、 + クライアントに送られるメッセージになります。 <directive module="mod_include">SSIUndefinedEcho</directive> - $B%G%#%l%/%F%#%V$r>e=q$-$7$^$9!#(B</dd> + ディレクティブを上書きします。</dd> <dt><code>errmsg</code></dt> - <dd>$B$3$NCM$,!"%I%-%e%a%s%H$N2r@OCf$K%(%i!<$,H/@8$7$?;~$K(B - $B%/%i%$%"%s%H$KAw?.$5$l$k%a%C%;!<%8$K$J$j$^$9!#(B + <dd>この値が、ドキュメントの解析中にエラーが発生した時に + クライアントに送信されるメッセージになります。 <directive module="mod_include">SSIErrorMsg</directive> - $B%G%#%l%/%F%#%V$r>e=q$-$7$^$9!#(B</dd> + ディレクティブを上書きします。</dd> <dt><code>sizefmt</code></dt> - <dd>$B$3$NCM$O!"%U%!%$%k$N%5%$%:$rI=<($9$k:]$K;HMQ$9$k(B - $B%U%)!<%^%C%H$r@_Dj$7$^$9!#CM$O(B $B%P%$%H%+%&%s%H$N(B - <code>bytes</code>$B$+!"(BKb $B$d(B Mb $B$rM%@hE*$K;HMQ$9$k(B - <code>abbrec</code> ($BNc$($P(B 1024 $B%P%$%H$O(B "1K" $B$HI=<($5$l$^$9(B) - $B$G$9!#(B</dd> + <dd>この値は、ファイルのサイズを表示する際に使用する + フォーマットを設定します。値は バイトカウントの + <code>bytes</code>か、Kb や Mb を優先的に使用する + <code>abbrec</code> (例えば 1024 バイトは "1K" と表示されます) + です。</dd> <dt><code>timefmt</code></dt> - <dd>$B$3$NCM$O(B <code>strftime(3)</code> $B%i%$%V%i%j%k!<%A%s$,(B - $BF|;~$r%W%j%s%H$9$k:]$KMQ$$$i$l$^$9!#(B</dd> + <dd>この値は <code>strftime(3)</code> ライブラリルーチンが + 日時をプリントする際に用いられます。</dd> </dl> </section> <!-- /config --> - <section id="element.echo"><title>echo $BMWAG(B</title> - <p>$B$3$N%3%^%s%I$O0J2<$GDj5A$5$l$F$$$k(B <a href="#includevars">include - $BJQ?t(B</a> $B$rI=<($7$^$9!#JQ?t$,@_Dj$5$l$F$$$J$$>l9g$O(B <directive - module="mod_include">SSIUndefinedEcho</directive> $B%G%#%l%/%F%#%V$G(B - $B7hDj$5$l$k7k2L$H$J$j$^$9!#F|IU$O$=$N;~E@$G$N(B <code>timefmt</code> $B$K=>$C$F(B - $BI=<($5$l$^$9!#B0@-$O<!$NDL$j$G$9!#(B</p> + <section id="element.echo"><title>echo 要素</title> + <p>このコマンドは以下で定義されている <a href="#includevars">include + 変数</a> を表示します。変数が設定されていない場合は <directive + module="mod_include">SSIUndefinedEcho</directive> ディレクティブで + 決定される結果となります。日付はその時点での <code>timefmt</code> に従って + 表示されます。属性は次の通りです。</p> <dl> <dt><code>var</code></dt> - <dd>$BCM$OI=<($9$kJQ?t$NL>A0$G$9!#(B</dd> + <dd>値は表示する変数の名前です。</dd> <dt><code>encoding</code></dt> - <dd><p>$BJQ?t$r=PNO$9$kA0$K!"JQ?tCf$NFCJLJ8;z$r$I$N$h$&$K%(%s%3!<%I$9$k$+$r(B - $B;XDj$7$^$9!#(B<code>none</code> $B$K@_Dj$5$l$F$$$k$H!"%(%s%3!<%I$O9T$J$o$l$^$;$s!#(B - <code>url</code> $B$K@_Dj$5$l$F$$$k$H!"(BURL $B%(%s%3!<%I(B (%-$B%(%s%3!<%I$H$b(B - $B8F$P$l$F$$$^$9!#$3$l$O%j%s%/Ey$N(B URL $B$N;HMQ$KE,@Z$G$9(B) $B$,(B - $B9T$J$o$l$^$9!#(B<code>echo</code> $BMWAG$N3+;O;~$O!"%G%U%)%k%H$O(B - <code>entity</code> $B$K@_Dj$5$l$F$$$^$9!#$3$l$O%(%s%F%#%F%#%(%s%3!<%I(B - ($BCJMn$d%F%-%9%H$J$I$N%V%m%C%/%l%Y%k$N(B HTML $B%(%l%a%s%H$N%3%s%F%-%9%H$K(B - $BE,$7$F$$$^$9(B) $B$r9T$J$$$^$9!#$3$l$O(B <code>encoding</code> $BB0@-(B - $B$r2C$($k$3$H$GJQ99$G$-$^$9!#JQ99$O<!$N(B <code>encoding</code> $BB0@-$+!"(B - $BMWAG$N=*N;$^$G8zNO$r;}$A$^$9!#(B</p> - - <p><code>encoding</code> $BB0@-$O%(%s%3!<%I$NJQ99$r$7$?$$(B <code>var</code> - $B$N(B<em>$BA0$K(B</em> $B$"$kI,MW$,$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B - $B$^$?!"(BISO-8859-1 $B%(%s%3!<%G%#%s%0$G(B - $BDj5A$5$l$F$$$kFCJL$JJ8;z$@$1$,%(%s%3!<%I$5$l$^$9!#(B - $BJL$NJ8;z$N%(%s%3!<%G%#%s%0$N>l9g$O!"$3$N%(%s%3!<%G%#%s%0$O(B - $BK>$_$N7k2L$K$J$i$J$$$+$b$7$l$^$;$s!#(B</p> + <dd><p>変数を出力する前に、変数中の特別文字をどのようにエンコードするかを + 指定します。<code>none</code> に設定されていると、エンコードは行なわれません。 + <code>url</code> に設定されていると、URL エンコード (%-エンコードとも + 呼ばれています。これはリンク等の URL の使用に適切です) が + 行なわれます。<code>echo</code> 要素の開始時は、デフォルトは + <code>entity</code> に設定されています。これはエンティティエンコード + (段落やテキストなどのブロックレベルの HTML エレメントのコンテキストに + 適しています) を行ないます。これは <code>encoding</code> 属性 + を加えることで変更できます。変更は次の <code>encoding</code> 属性か、 + 要素の終了まで効力を持ちます。</p> + + <p><code>encoding</code> 属性はエンコードの変更をしたい <code>var</code> + の<em>前に</em> ある必要があることに注意してください。 + また、ISO-8859-1 エンコーディングで + 定義されている特別な文字だけがエンコードされます。 + 別の文字のエンコーディングの場合は、このエンコーディングは + 望みの結果にならないかもしれません。</p> <note type="warning"> - $B%/%m%9%5%$%H%9%/%j%W%F%#%s%0$NLdBj$rHr$1$k$?$a$K!"(B - <em>$B>o$K(B</em>$B%f!<%6$+$i$N%G!<%?$r%(%s%3!<%I$9$Y$-$G$9!#(B + クロスサイトスクリプティングの問題を避けるために、 + <em>常に</em>ユーザからのデータをエンコードすべきです。 </note> </dd> </dl> </section> <!-- /echo --> - <section id="element.exec"><title>exec $BMWAG(B</title> - <p><code>exec</code> $B%3%^%s%I$O;XDj$5$l$?%7%'%k%3%^%s%I$d(B CGI $B%9%/%j%W%H$r(B - $B<B9T$7$^$9!#(B<module>mod_cgi</module> $B$,%5!<%P$KAH$_9~$^$l$F$$$k$$$J$1$l$P(B - $B$J$j$^$;$s!#(B<directive module="core">Option</directive> - <code>IncludesNOEXEC</code> $B$O$3$N%3%^%s%I$rL58z$K$7$^$9!#(B - $B;HMQ2DG=$JB0@-$O<!$NDL$j$G$9!#(B</p> + <section id="element.exec"><title>exec 要素</title> + <p><code>exec</code> コマンドは指定されたシェルコマンドや CGI スクリプトを + 実行します。<module>mod_cgi</module> がサーバに組み込まれているいなければ + なりません。<directive module="core">Option</directive> + <code>IncludesNOEXEC</code> はこのコマンドを無効にします。 + 使用可能な属性は次の通りです。</p> <dl> <dt><code>cgi</code></dt> - <dd><p>$BCM$O(B (%-$B%(%s%3!<%I$5$l$?(B) URL $B$r;XDj$7$^$9!#%Q%9$,(B - $B%9%i%C%7%e(B (/) $B$G;O$^$i$J$$$H$-$O!"%I%-%e%a%s%H$+$i$N(B - $BAjBP%Q%9$H$7$F07$o$l$^$9!#$3$N%Q%9$G;2>H$5$l$F$$$k%I%-%e%a%s%H$O(B - $B%5!<%P$,(B CGI $B%9%/%j%W%H$H$7$F07$C$F$$$J$/$F$b(B CGI $B%9%/%j%W%H$H$7$F(B - $B5/F0$5$l$^$9!#$?$@$7!"%9%/%j%W%H$N$"$k%G%#%l%/%H%j$G$O(B + <dd><p>値は (%-エンコードされた) URL を指定します。パスが + スラッシュ (/) で始まらないときは、ドキュメントからの + 相対パスとして扱われます。このパスで参照されているドキュメントは + サーバが CGI スクリプトとして扱っていなくても CGI スクリプトとして + 起動されます。ただし、スクリプトのあるディレクトリでは (<directive module="mod_alias">ScriptAlias</directive> - $B$d(B <directive module="core">Option</directive> <code>ExecCGI</code> - $B$K$h$C$F(B) CGI $B%9%/%j%W%H$N;HMQ$,5v2D$5$l$F$$$kI,MW$,$"$j$^$9!#(B</p> + や <directive module="core">Option</directive> <code>ExecCGI</code> + によって) CGI スクリプトの使用が許可されている必要があります。</p> - <p>CGI $B%9%/%j%W%H$K$O!"%/%i%$%"%s%H$+$i$N85!9$N%j%/%(%9%H$N(B - <code>PATH_INFO</code> $B$H%/%(%j!<J8;zNs(B (<code>QUERY_STRING</code>) $B$,EO$5$l$^$9!#(B - $B$3$l$i$O(B URL $B%Q%9$H$7$FFCDj(B<em>$B$G$-$J$$(B</em>$B$b$N$G$9!#(B - $B%9%/%j%W%H$OI8=`(B <a href="mod_cgi.html">CGI</a> $B4D6-$K2C$($F!"(Binclude $BJQ?t$r(B - $B;HMQ$9$k$3$H$,$G$-$^$9!#(B</p> + <p>CGI スクリプトには、クライアントからの元々のリクエストの + <code>PATH_INFO</code> とクエリー文字列 (<code>QUERY_STRING</code>) が渡されます。 + これらは URL パスとして特定<em>できない</em>ものです。 + スクリプトは標準 <a href="mod_cgi.html">CGI</a> 環境に加えて、include 変数を + 使用することができます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> <!--#exec cgi="/cgi-bin/example.cgi" --> </example> - <p>$B%9%/%j%W%H$,!"=PNO$NBe$o$j$K(B <code>Location:</code> $B%X%C%@$rJV$9$H!"(B - HTML $B$N%"%s%+!<(B ($BLuCm!'%j%s%/(B) $B$KJQ49$5$l$^$9!#(B</p> + <p>スクリプトが、出力の代わりに <code>Location:</code> ヘッダを返すと、 + HTML のアンカー (訳注:リンク) に変換されます。</p> - <p><code>exec cgi</code> $B$h$j$b!"(B + <p><code>exec cgi</code> よりも、 <code><a href="#includevirtual">include virtual</a></code> - $B$NJ}$r;H$&$h$&$K$7$F$/$@$5$$!#FC$K!"(BCGI $B$X$NDI2C$N0z?t$r(B - $B%/%(%j!<J8;zNs$r;H$C$FEO$9$3$H$O(B <code>exec cgi</code> $B$O(B - $B$G$-$^$;$s$,!"(B<code>include virtual</code> $B$O0J2<$N$h$&$K$7$F(B - $B2DG=$G$9!#(B</p> + の方を使うようにしてください。特に、CGI への追加の引数を + クエリー文字列を使って渡すことは <code>exec cgi</code> は + できませんが、<code>include virtual</code> は以下のようにして + 可能です。</p> <example> <!--#include virtual="/cgi-bin/example.cgi?argument=value" --> @@ -246,23 +246,23 @@ </dd> <dt><code>cmd</code></dt> - <dd><p>$B%5!<%P$O;XDj$5$l$?J8;zNs$r(B <code>/bin/sh</code> $B$r;H$C$F(B - $B<B9T$7$^$9!#%3%^%s%I$ODL>o$N(B CGI $BJQ?t$K2C$($F(B <a - href="#includevars">include $BJQ?t(B</a>$B$b;H$&$3$H$,$G$-$^$9!#(B</p> - - <p>$B$[$H$s$I$N>l9g!"(B<code><a href="#includevirtual">#include - virtual</a></code> $B$r;H$&J}$,(B <code>#exec cgi</code> $B$d(B <code>#exec - cmd</code> $B$r;H$&$h$j$bNI$$$G$9!#A0<T(B (<code>#include virtual</code>) - $B$OI8=`$N(B Apache $B$N%5%V%j%/%(%9%H5!9=$r;H$C$F%U%!%$%k$d%9%/%j%W%H$N(B - $B=PNO$r<h$j9~$_$^$9!#(B - $B$3$A$i$NJ}$,$h$/%F%9%H$5$l%a%s%F%J%s%9$5$l$?J}K!$G$9!#(B</p> - - <p>$B$5$i$K!"(BWin32 $B$N$h$&$J$$$/$D$+$N%W%i%C%H%U%)!<%`$d!"(B<a - href="../suexec.html">suexec</a> $B$r;H$C$F$$$k(B unix $B$G$O!"(B - <code>exec</code> $B%G%#%l%/%F%#%V$N%3%^%s%I$K(B - $B0z?t$rEO$7$?$j!"%3%^%s%I$K6uGr$rF~$l$k$3$H$O$G$-$^$;$s!#(B - $B$G$9$+$i!"0J2<$N$b$N$O(B unix $B$N(B suexec $B$G$J$$@_Dj$G$OF0:n$7$^$9$,!"(B - Win32 $B$d(B suexec $B$r;H$C$F$$$k(B unix $B$G$O4|BT$7$?7k2L$K$O$J$j$^$;$s(B:</p> + <dd><p>サーバは指定された文字列を <code>/bin/sh</code> を使って + 実行します。コマンドは通常の CGI 変数に加えて <a + href="#includevars">include 変数</a>も使うことができます。</p> + + <p>ほとんどの場合、<code><a href="#includevirtual">#include + virtual</a></code> を使う方が <code>#exec cgi</code> や <code>#exec + cmd</code> を使うよりも良いです。前者 (<code>#include virtual</code>) + は標準の Apache のサブリクエスト機構を使ってファイルやスクリプトの + 出力を取り込みます。 + こちらの方がよくテストされメンテナンスされた方法です。</p> + + <p>さらに、Win32 のようないくつかのプラットフォームや、<a + href="../suexec.html">suexec</a> を使っている unix では、 + <code>exec</code> ディレクティブのコマンドに + 引数を渡したり、コマンドに空白を入れることはできません。 + ですから、以下のものは unix の suexec でない設定では動作しますが、 + Win32 や suexec を使っている unix では期待した結果にはなりません:</p> <example> <!--#exec cmd="perl /path/to/perlscript arg1 arg2" --> @@ -271,169 +271,169 @@ </dl> </section> <!-- /exec --> - <section id="element.fsize"><title>fsize $BMWAG(B</title> - <p>$B$3$N%3%^%s%I$O;XDj$5$l$?%U%!%$%k$NBg$-$5$r(B <code>sizefmt</code> $B$N(B - $B=q<0;XDj$K4p$E$$$F=PNO$7$^$9!#B0@-$O<!$NDL$j$G$9!#(B</p> + <section id="element.fsize"><title>fsize 要素</title> + <p>このコマンドは指定されたファイルの大きさを <code>sizefmt</code> の + 書式指定に基づいて出力します。属性は次の通りです。</p> <dl> <dt><code>file</code></dt> - <dd>$BCM$O2r@O$5$l$F$$$k%I%-%e%a%s%H$NB8:_$9$k%G%#%l%/%H%j$+$i$N(B - $BAjBP%Q%9$G$9!#(B</dd> + <dd>値は解析されているドキュメントの存在するディレクトリからの + 相対パスです。</dd> <dt><code>virtual</code></dt> - <dd> $BCM$O(B (% $B%(%s%3!<%I$5$l$?(B) URL-path $B$G$9!#%9%i%C%7%e(B (/) $B$G(B - $B;O$^$i$J$$$H$-$O%I%-%e%a%s%H$+$i$NAjBP%Q%9$H$7$F07$o$l$^$9!#(B - CGI $B$N=PNO$N%5%$%:$O%W%j%s%H(B<em>$B$5$l$^$;$s(B</em>$B!#(BCGI - $B%9%/%j%W%H<+BN$N%5%$%:$,%W%j%s%H$5$l$k$3$H$KCm0U$7$F$/$@$5$$!#(B</dd> + <dd> 値は (% エンコードされた) URL-path です。スラッシュ (/) で + 始まらないときはドキュメントからの相対パスとして扱われます。 + CGI の出力のサイズはプリント<em>されません</em>。CGI + スクリプト自体のサイズがプリントされることに注意してください。</dd> </dl> </section> <!-- /fsize --> - <section id="element.flastmod"><title>flastmod $BMWAG(B</title> - <p>$B$3$N%3%^%s%I$O;XDj$5$l$?%U%!%$%k$N:G=*=$@5;~9o$r(B - <code>timefmt</code> $B=q<0;XDj$K=>$C$FI=<($7$^$9!#(B - $B;XDj2DG=$JB0@-$O(B <code>fsize</code> $B%3%^%s%I$HF1$8$G$9!#(B</p> + <section id="element.flastmod"><title>flastmod 要素</title> + <p>このコマンドは指定されたファイルの最終修正時刻を + <code>timefmt</code> 書式指定に従って表示します。 + 指定可能な属性は <code>fsize</code> コマンドと同じです。</p> </section> <!-- /flastmod --> - <section id="element.include"><title>include $BMWAG(B</title> - <p>$B$3$N%3%^%s%I$OJL$NJ8=q$d%U%!%$%k$N%F%-%9%H$r2r@O$7$F$$$k%U%!%$%k$K(B - $BA^F~$7$^$9!#A^F~$5$l$k%U%!%$%k$O%"%/%;%9@)8f$N4IM}2<$K$"$j$^$9!#(B - $B2r@O$7$F$$$k%U%!%$%k$NB8:_$9$k%G%#%l%/%H%j$K(B + <section id="element.include"><title>include 要素</title> + <p>このコマンドは別の文書やファイルのテキストを解析しているファイルに + 挿入します。挿入されるファイルはアクセス制御の管理下にあります。 + 解析しているファイルの存在するディレクトリに <a href="core.html#options">Option</a> <code>IncludesNOEXEC</code> - $B$,@_Dj$5$l$F$$$k>l9g!"(Btext MIME $B%?%$%W(B (<code>text/plain</code>, - <code>text/html</code> $BEy(B) $B$N%I%-%e%a%s%H$N$_%$%s%/%k!<%I$,9T$J$o$l$^$9!#(B - $B$=$NB>$N>l9g$O!"%/%(%j!<J8;zNs$b4^$a!"%3%^%s%I$G;XDj$5$l$?(B - $B40A4$J(B URL $B$r;H$C$FIaDL$K(B CGI $B%9%/%j%W%H$,8F$S=P$5$l$^$9!#(B</p> + が設定されている場合、text MIME タイプ (<code>text/plain</code>, + <code>text/html</code> 等) のドキュメントのみインクルードが行なわれます。 + その他の場合は、クエリー文字列も含め、コマンドで指定された + 完全な URL を使って普通に CGI スクリプトが呼び出されます。</p> - <p>$BB0@-$,J8=q$N0LCV$r;XDj$7$^$9!#(Binclude $B%3%^%s%I$KM?$($i$l$?$=$l$>$l$N(B - $BB0@-$KBP$7$FA^F~:n6H$,9T$J$o$l$^$9!#M-8z$JB0@-$O<!$NDL$j$G$9!#(B</p> + <p>属性が文書の位置を指定します。include コマンドに与えられたそれぞれの + 属性に対して挿入作業が行なわれます。有効な属性は次の通りです。</p> <dl> <dt><code>file</code></dt> - <dd>$BCM$O2r@O$5$l$F$$$k%I%-%e%a%s%H$NB8:_$9$k%G%#%l%/%H%j$+$i$N(B - $BAjBP%Q%9$G$9!#(B - <code>../</code> $B$r4^$s$G$$$?$j!"@dBP%Q%9$r;XDj$7$?$j$O$G$-$^$;$s!#(B - $B$G$9$+$i!"%I%-%e%a%s%H%k!<%H$N30$K$"$k%U%!%$%k$d!"%G%#%l%/%H%j9=B$$G(B - $B>e0L$K$"$k%U%!%$%k$rA^F~$9$k$3$H$O$G$-$^$;$s!#(B - $B>o$K$3$NB0@-$h$j$O!"(B<code>virtual</code> $BB0@-$r;H$&$h$&$K$7$F$/$@$5$$!#(B + <dd>値は解析されているドキュメントの存在するディレクトリからの + 相対パスです。 + <code>../</code> を含んでいたり、絶対パスを指定したりはできません。 + ですから、ドキュメントルートの外にあるファイルや、ディレクトリ構造で + 上位にあるファイルを挿入することはできません。 + 常にこの属性よりは、<code>virtual</code> 属性を使うようにしてください。 </dd> <dt><code><a id="includevirtual" name="includevirtual" >virtual</a></code></dt> - <dd><p>$BCM$O2r@O$5$l$F$$$k%I%-%e%a%s%H$+$i$N(B (% $B%(%s%3!<%I$5$l$?(B) URL - $B$G$9!#(BURL $B$K$O%9%-!<%`$d%[%9%HL>$r4^$a$k$3$H$O$G$-$^$;$s!#%Q%9$H!"(B - $B$b$7$"$l$P%/%(%j!<J8;zNs$r;XDj$G$-$k$@$1$G$9!#%9%i%C%7%e(B (/) $B$+$i(B - $B;O$^$i$J$$>l9g$O!"%I%-%e%a%s%H$+$i$NAjBP%Q%9$H$7$F07$o$l$^$9!#(B</p> + <dd><p>値は解析されているドキュメントからの (% エンコードされた) URL + です。URL にはスキームやホスト名を含めることはできません。パスと、 + もしあればクエリー文字列を指定できるだけです。スラッシュ (/) から + 始まらない場合は、ドキュメントからの相対パスとして扱われます。</p> - <p>URL $B$OB0@-$+$i:n$i$l!"$=$N(B URL $B$r%/%i%$%"%s%H$,%"%/%;%9$7$?$H$-$K(B - $B=PNO$5$l$kFbMF$,2r@O8e$N=PNO$K4^$a$i$l$^$9!#$G$9$+$i!"A^F~$5$l$k(B - $B%U%!%$%k$OF~$l;R9=B$$K$9$k$3$H$,$G$-$^$9!#(B</p> + <p>URL は属性から作られ、その URL をクライアントがアクセスしたときに + 出力される内容が解析後の出力に含められます。ですから、挿入される + ファイルは入れ子構造にすることができます。</p> - <p>$B;XDj$5$l$?(B URL $B$,(B CGI $B%W%m%0%i%`$G$"$C$?>l9g$O!"(B - $B%W%m%0%i%`$,<B9T$5$l!"$=$N=PNO$,2r@O$7$F$$$k%U%!%$%kCf$N(B - $B%G%#%l%/%F%#%V$,$"$C$?0LCV$KA^F~$5$l$^$9!#(BCGI $B$N(B url $B$K(B - $B%/%(%j!<(B URL $B$rF~$l$k$3$H$b$G$-$^$9!#(B</p> + <p>指定された URL が CGI プログラムであった場合は、 + プログラムが実行され、その出力が解析しているファイル中の + ディレクティブがあった位置に挿入されます。CGI の url に + クエリー URL を入れることもできます。</p> <example> <!--#include virtual="/cgi-bin/example.cgi?argument=value" --> </example> - <p>HTML $B%I%-%e%a%s%H$K(B CGI $B%W%m%0%i%`$N=PNO$r4^$a$kJ}K!$H$7$F$O!"(B - <code>include virtual</code> $B$NJ}$,(B <code>exec cgi</code> $B$h$j$b(B - $B9%$^$7$$J}K!$G$9!#(B</p> + <p>HTML ドキュメントに CGI プログラムの出力を含める方法としては、 + <code>include virtual</code> の方が <code>exec cgi</code> よりも + 好ましい方法です。</p> </dd> </dl> </section> <!-- /include --> - <section id="element.printenv"><title>printenv $BMWAG(B</title> - <p>$B$3$l$O!"B8:_$9$k$9$Y$F$NJQ?t$H$=$NCM$rI=<($7$^$9!#(BApache 1.3.12 $B$+$i!"(B - $BFCJL$JJ8;z$O=PNO$5$l$kA0$K%(%s%F%#%F%#%(%s%3!<%I(B ($B>\:Y$O(B <a - href="#element.echo"><code>echo</code></a> $BMWAG$r;2>H(B) - $B$5$l$k$h$&$K$J$j$^$7$?!#B0@-$O$"$j$^$;$s!#(B</p> + <section id="element.printenv"><title>printenv 要素</title> + <p>これは、存在するすべての変数とその値を表示します。Apache 1.3.12 から、 + 特別な文字は出力される前にエンティティエンコード (詳細は <a + href="#element.echo"><code>echo</code></a> 要素を参照) + されるようになりました。属性はありません。</p> - <example><title>$BNc(B</title> + <example><title>例</title> <!--#printenv --> </example> </section> <!-- /printenv --> - <section id="element.set"><title>set $BMWAG(B</title> - <p>$B$3$l$OJQ?t$NCM$r@_Dj$7$^$9!#B0@-$O<!$NDL$j$G$9!#(B</p> + <section id="element.set"><title>set 要素</title> + <p>これは変数の値を設定します。属性は次の通りです。</p> <dl> <dt><code>var</code></dt> - <dd>$B@_Dj$9$kJQ?t$NL>A0!#(B</dd> + <dd>設定する変数の名前。</dd> <dt><code>value</code></dt> - <dd>$BJQ?t$K@_Dj$9$kCM!#(B</dd> + <dd>変数に設定する値。</dd> </dl> - <example><title>$BNc(B</title> + <example><title>例</title> <!--#set var="category" value="help" --> </example> </section> <!-- /set --> </section> <!-- /basic elements --> <section id="includevars"> - <title>Include $BJQ?t(B</title> + <title>Include 変数</title> - <p>$BI8=`(B CGI $B4D6-$NJQ?t$K2C$($F!"(B<code>echo</code> $B%3%^%s%I$d!"(B - <code>if</code> $B$d(B <code>elif</code>, $B$=$l$K%I%-%e%a%s%H$+$i8F$S=P$5$l$k(B - $B$9$Y$F$N%W%m%0%i%`$+$i;HMQ$G$-$kJQ?t$,$"$j$^$9!#(B</p> + <p>標準 CGI 環境の変数に加えて、<code>echo</code> コマンドや、 + <code>if</code> や <code>elif</code>, それにドキュメントから呼び出される + すべてのプログラムから使用できる変数があります。</p> <dl> <dt><code>DATE_GMT</code></dt> - <dd>$B%0%j%K%C%8I8=`;~$K$h$k8=:_;~9o!#(B</dd> + <dd>グリニッジ標準時による現在時刻。</dd> <dt><code>DATE_LOCAL</code></dt> - <dd>$B%m!<%+%k$NI8=`;~$K$h$k8=:_;~9o!#(B</dd> + <dd>ローカルの標準時による現在時刻。</dd> <dt><code>DOCUMENT_NAME</code></dt> - <dd>$B%f!<%6$,%j%/%(%9%H$7$?(B ($B%G%#%l%/%H%j$r=|$$$?(B) $B%U%!%$%kL>!#(B</dd> + <dd>ユーザがリクエストした (ディレクトリを除いた) ファイル名。</dd> <dt><code>DOCUMENT_URI</code></dt> - <dd>$B%f!<%6$,%j%/%(%9%H$7$?(B (% $B%(%s%3!<%I$5$l$?(B) URL-path$B!#(B - $BA^F~%U%!%$%k$,F~$l;R$K$J$C$F$$$k>l9g$O!"2r@O$5$l$F$$$k(B - $B%I%-%e%a%s%H$N(B URL $B$G$O(B<em>$B$J$$(B</em>$B$3$H$KCm0U$7$F$/$@$5$$!#(B</dd> + <dd>ユーザがリクエストした (% エンコードされた) URL-path。 + 挿入ファイルが入れ子になっている場合は、解析されている + ドキュメントの URL では<em>ない</em>ことに注意してください。</dd> <dt><code>LAST_MODIFIED</code></dt> - <dd>$B%f!<%6$,%j%/%(%9%H$7$?%I%-%e%a%s%H$N:G=*=$@5;~9o!#(B</dd> + <dd>ユーザがリクエストしたドキュメントの最終修正時刻。</dd> <dt><code>QUERY_STRING_UNESCAPED</code></dt> - <dd>$B%/%(%j!<J8;zNs$,$"$k>l9g!"$3$NJQ?t$K$O(B (%-$B%G%3!<%I$5$l$?(B) - $B%/%(%j!<J8;zNs$,BeF~$5$l$F$$$F!"(Bshell $B$G;HMQ$G$-$k$h$&$K(B - <em>$B%(%9%1!<%W(B</em>$B$5$l$F$$$^$9(B (<code>&</code> - $B$H$$$C$?FC<lJ8;z$K$O%P%C%/%9%i%C%7%e$,D>A0$KCV$+$l$^$9(B)$B!#(B</dd> + <dd>クエリー文字列がある場合、この変数には (%-デコードされた) + クエリー文字列が代入されていて、shell で使用できるように + <em>エスケープ</em>されています (<code>&</code> + といった特殊文字にはバックスラッシュが直前に置かれます)。</dd> </dl> </section> -<section id="substitution"><title>$BJQ?tCV49(B</title> +<section id="substitution"><title>変数置換</title> - <p>$BJQ?tCV49$O$?$$$F$$$N>l9g(B SSI $B%G%#%l%/%F%#%V$N0z?t$H$7$FBEEv$J>l=j$K$"$k(B - $B0zMQId$G0O$^$l$?J8;zNsCf$G9T$J$o$l$^$9!#$3$l$K3:Ev$9$k$b$N$K$O!"(B + <p>変数置換はたいていの場合 SSI ディレクティブの引数として妥当な場所にある + 引用符で囲まれた文字列中で行なわれます。これに該当するものには、 <code>config</code>, <code>exec</code>, <code>flastmod</code>, <code>fsize</code>, - <code>include</code>, <code>echo</code>, <code>set</code> $B$N(B - $B3F%G%#%l%/%F%#%V$H!">r7oJ,4tMQ$N%*%Z%l!<%?$X$N0z?t$,$"$j$^$9!#(B - $B%I%k5-9f$O%P%C%/%9%i%C%7%e$r;H$&$3$H$G;H$&$3$H$,$G$-$^$9(B:</p> + <code>include</code>, <code>echo</code>, <code>set</code> の + 各ディレクティブと、条件分岐用のオペレータへの引数があります。 + ドル記号はバックスラッシュを使うことで使うことができます:</p> <example> <!--#if expr="$a = \$test" --> </example> - <p>$BJQ?tL>$H$7$F$_$J$5$l$kJ8;zNs$NCf$GJQ?t$X$N;2>H$rCV49$9$kI,MW$,$"$k$H$-$O!"(B - $B%7%'%k$G$NJQ?tCV49$N$h$&$K!"Cf3g8L$G3g$k$3$H$G6hJL$9$k$3$H$,$G$-$^$9(B:</p> + <p>変数名としてみなされる文字列の中で変数への参照を置換する必要があるときは、 + シェルでの変数置換のように、中括弧で括ることで区別することができます:</p> <example> <!--#set var="Zed" value="${REMOTE_HOST}_${REQUEST_METHOD}" --> </example> - <p>$B$3$NNc$G$O!"(B<code>REMOTE_HOST</code> $B$,(B - "<code>X</code>" $B$G(B <code>REQUEST_METHOD</code> $B$,(B - "<code>Y</code>" $B$N$H$-$KJQ?t(B <code>Zed</code> $B$r(B "<code>X_Y</code>" - $B$K@_Dj$7$^$9!#(B</p> + <p>この例では、<code>REMOTE_HOST</code> が + "<code>X</code>" で <code>REQUEST_METHOD</code> が + "<code>Y</code>" のときに変数 <code>Zed</code> を "<code>X_Y</code>" + に設定します。</p> - <p>$B0J2<$NNc$G$O!"(B<code>DOCUMENT_URI</code> $B$,(B <code>/foo/file.html</code> - $B$N$H$-$K(B "in foo" $B$r!"(B<code>/bar/file.html</code> $B$N$H$-$K(B "in bar" $B$r!"(B - $B$I$A$i$G$b$J$$$H$-$K$O(B "in neither" $B$rI=<($7$^$9!#(B</p> + <p>以下の例では、<code>DOCUMENT_URI</code> が <code>/foo/file.html</code> + のときに "in foo" を、<code>/bar/file.html</code> のときに "in bar" を、 + どちらでもないときには "in neither" を表示します。</p> <example> <!--#if expr='"$DOCUMENT_URI" = "/foo/file.html"' --><br /> @@ -453,9 +453,9 @@ </section> <section id="flowctrl"> - <title>$B%U%m!<@)8fMWAG(B</title> + <title>フロー制御要素</title> - <p>$B4pK\E*$J%U%m!<%3%s%H%m!<%kMWAG$O<!$NDL$j$G$9!#(B</p> + <p>基本的なフローコントロール要素は次の通りです。</p> <example> <!--#if expr="<var>test_condition</var>" --><br /> @@ -464,42 +464,42 @@ <!--#endif --> </example> - <p><code>if</code> $BMWAG$O%W%m%0%i%_%s%08@8l$N(B - if $BJ8$HF1$8$h$&$KF0:n$7$^$9!#>r7o$,I>2A$5$l!"7k2L$,??$G$"$l$P<!$N(B - <code>elif</code> $B$+(B <code>else</code> $B$+(B <code>endif</code> - $BMWAG$^$G$NJ8;zNs$,=PNO$KA^F~$5$l$^$9!#(B</p> + <p><code>if</code> 要素はプログラミング言語の + if 文と同じように動作します。条件が評価され、結果が真であれば次の + <code>elif</code> か <code>else</code> か <code>endif</code> + 要素までの文字列が出力に挿入されます。</p> - <p><code>elif</code> $B$d(B <code>else</code> $BJ8$O(B <var>test_condition</var> - $B$,56$N$H$-$K%F%-%9%H$r=PNO$KA^F~$9$k$?$a$K;H$o$l$^$9!#(B - $B$3$l$i$NMWAG$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p><code>elif</code> や <code>else</code> 文は <var>test_condition</var> + が偽のときにテキストを出力に挿入するために使われます。 + これらの要素はあってもなくても構いません。</p> - <p><code>endif</code> $BMWAG$O(B <code>if</code> - $BMWAG$r=*N;$5$;$^$9!#$3$NMWAG$OI,?\$G$9!#(B</p> + <p><code>endif</code> 要素は <code>if</code> + 要素を終了させます。この要素は必須です。</p> - <p><var>test_condition</var> $B$O0J2<$N$I$l$+$G$9(B:</p> + <p><var>test_condition</var> は以下のどれかです:</p> <dl> <dt><code><var>string</var></code></dt> - <dd><var>string</var> $B$,6u$G$J$$>l9g$K??$G$9(B</dd> + <dd><var>string</var> が空でない場合に真です</dd> <dt><code><var>string1</var> = <var>string2</var><br /> <var>string1</var> == <var>string2</var><br /> <var>string1</var> != <var>string2</var></code></dt> - <dd><p><var>string1</var> $B$H(B <var>string2</var> $B$rHf3S$7$^$9!#(B - <var>string2</var> $B$,(B <code>/<var>string</var>/</code> - $B$H$$$&7A<0$G$"$l$P!"@55,I=8=$H$7$FHf3S$5$l$^$9!#@55,I=8=$O(B - <a href="http://www.pcre.org">PCRE</a> $B%(%s%8%s$G<BAu$5$l$F$$$F!"(B - <a href="http://www.perl.com">perl 5</a> $B$HF1$89=J8$r;HMQ$7$^$9!#(B - <code>==</code> $B$OC1$K(B <code>=</code> $B$NJLL>$G!"$^$C$?$/F1$8F0:n$r(B - $B$7$^$9!#(B</p> + <dd><p><var>string1</var> と <var>string2</var> を比較します。 + <var>string2</var> が <code>/<var>string</var>/</code> + という形式であれば、正規表現として比較されます。正規表現は + <a href="http://www.pcre.org">PCRE</a> エンジンで実装されていて、 + <a href="http://www.perl.com">perl 5</a> と同じ構文を使用します。 + <code>==</code> は単に <code>=</code> の別名で、まったく同じ動作を + します。</p> - <p>$B@5$N%^%C%A%s%0(B (<code>=</code> $B$^$?$O(B <code>==</code>) $B$N>l9g$O!"(B - $B@55,I=8=$G%0%k!<%WJ,$1$5$l$?%Q!<%D$r%-%c%W%A%c$9$k$3$H$,$G$-$^$9!#(B - $B%-%c%W%A%c$5$l$?ItJ,$OFC<lJQ?t(B <code>$1</code> .. <code>$9</code> - $B$K3JG<$5$l$^$9!#(B</p> + <p>正のマッチング (<code>=</code> または <code>==</code>) の場合は、 + 正規表現でグループ分けされたパーツをキャプチャすることができます。 + キャプチャされた部分は特殊変数 <code>$1</code> .. <code>$9</code> + に格納されます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> <!--#if expr="$QUERY_STRING = /^sid=([a-zA-Z0-9]+)/" --><br /> <indent> <!--#set var="session" value="$1" --><br /> @@ -513,100 +513,100 @@ <var>string1</var> > <var>string2</var><br /> <var>string1</var> >= <var>string2</var></code></dt> - <dd><var>string1</var> $B$H(B <var>string2</var> $B$rHf3S$7$^$9!#(B - <em>$BJ8;zNs$H$7$F(B</em>$BHf3S$5$l$k(B (<code>strcmp(3)</code> $B$r;HMQ(B) - $B$3$H$KCm0U$7$F$/$@$5$$!#$G$9$+$i!"J8;zNs(B "100" $B$O(B "20" - $B$h$j$b>.$5$$$3$H$K$J$j$^$9!#(B</dd> + <dd><var>string1</var> と <var>string2</var> を比較します。 + <em>文字列として</em>比較される (<code>strcmp(3)</code> を使用) + ことに注意してください。ですから、文字列 "100" は "20" + よりも小さいことになります。</dd> <dt><code>( <var>test_condition</var> )</code></dt> - <dd><var>test_condition</var> $B$,??$N$H$-!"??(B</dd> + <dd><var>test_condition</var> が真のとき、真</dd> <dt><code>! <var>test_condition</var></code></dt> - <dd><var>test_condition</var> $B$,56$N$H$-!"??(B</dd> + <dd><var>test_condition</var> が偽のとき、真</dd> <dt><code><var>test_condition1</var> && <var>test_condition2</var></code></dt> - <dd><var>test_condition1</var> $B$+$D(B - <var>test_condition2</var> $B$,??$N$H$-!"??(B</dd> + <dd><var>test_condition1</var> かつ + <var>test_condition2</var> が真のとき、真</dd> <dt><code><var>test_condition1</var> || <var>test_condition2</var></code></dt> - <dd><var>test_condition1</var> $B$^$?$O(B - <var>test_condition2</var> $B$,??$N$H$-!"??(B</dd> + <dd><var>test_condition1</var> または + <var>test_condition2</var> が真のとき、真</dd> </dl> - <p>"<em>=</em>" $B$H(B "<em>!=</em>" $B$NJ}$,(B "<em>&&</em>" $B$h$j(B - $B$-$D$/B+G{$7$^$9!#(B"<em>!</em>" $B$NB+G{$,0lHV$-$D$/$J$C$F$$$^$9!#(B - $B$G$9$+$i0J2<$NFs$D$OEy2A$G$9(B:</p> + <p>"<em>=</em>" と "<em>!=</em>" の方が "<em>&&</em>" より + きつく束縛します。"<em>!</em>" の束縛が一番きつくなっています。 + ですから以下の二つは等価です:</p> <example> <!--#if expr="$a = test1 && $b = test2" --><br /> <!--#if expr="($a = test1) && ($b = test2)" --> </example> - <p>$B??56CM%*%Z%l!<%?(B <code>&&</code> $B$H(B <code>||</code> - $B$OF1$8M%@hEY$G$9!#(B - $B$3$l$i$N%*%Z%l!<%?$G0lJ}$K$h$j6/$$M%@hEY$r$D$1$?$$>l9g$K$O!"(B - $B3g8L$r;H$&I,MW$,$"$j$^$9!#(B</p> + <p>真偽値オペレータ <code>&&</code> と <code>||</code> + は同じ優先度です。 + これらのオペレータで一方により強い優先度をつけたい場合には、 + 括弧を使う必要があります。</p> - <p>$BJQ?t$d%*%Z%l!<%?$H$7$FG'<1$5$l$J$$$b$N$O$9$Y$FJ8;zNs$H$7$F(B - $B07$o$l$^$9!#J8;zNs$O0zMQId$G0O$`$3$H$b$G$-$^$9(B: <code>'string'</code> - $B$N$h$&$K!#0zMQId$G0O$^$l$F$$$J$$J8;zNs$K$O6uGr(B ($B%9%Z!<%9$H%?%V(B) - $B$r4^$a$k$3$H$O$G$-$^$;$s!#$=$l$i$OJQ?t$J$I$N6g$rJ,N%$9$k$?$a$K(B - $B;H$o$l$F$$$k$+$i$G$9!#J#?t$NJ8;zNs$,B3$$$F$$$k$H$-$O!"(B - $B6uGr$r4V$KF~$l$F0l$D$K$/$C$D$1$i$l$^$9!#$G$9$+$i!"(B</p> + <p>変数やオペレータとして認識されないものはすべて文字列として + 扱われます。文字列は引用符で囲むこともできます: <code>'string'</code> + のように。引用符で囲まれていない文字列には空白 (スペースとタブ) + を含めることはできません。それらは変数などの句を分離するために + 使われているからです。複数の文字列が続いているときは、 + 空白を間に入れて一つにくっつけられます。ですから、</p> <example> <p><code><var>string1</var> <var - >string2</var></code> $B$O(B <code><var>string1</var> <var - >string2</var></code> $B$K$J$j$^$9!#(B<br /> + >string2</var></code> は <code><var>string1</var> <var + >string2</var></code> になります。<br /> <br /> - $B$^$?!"(B<br /> + また、<br /> <br /> <code>'<var>string1</var> <var - >string2</var>'</code> $B$O(B <code><var + >string2</var>'</code> は <code><var >string1</var> <var>string2</var></code> - $B$K$J$j$^$9!#(B</p> + になります。</p> </example> - <note><title>$B??56CMI=8=$N:GE,2=(B</title> - <p>$B<0$,$b$C$HJ#;($K$J$j!"=hM}$NB.EYDc2<$,82Cx$K$J$C$?>l9g$O!"(B - $BI>2A%k!<%k$K=>$C$F:GE,2=$7$F$_$k$HNI$$$G$7$g$&!#(B</p> + <note><title>真偽値表現の最適化</title> + <p>式がもっと複雑になり、処理の速度低下が顕著になった場合は、 + 評価ルールに従って最適化してみると良いでしょう。</p> <ul> - <li>$BI>2A$O:8$+$i1&$K8~$+$C$F9T$o$l$^$9!#(B</li> - <li>$BFsCM??56CM%*%Z%l!<%?(B (<code>&&</code> $B$H(B <code>||</code>) - $B$O!"=PMh$k8B$jC;MmI>2A$5$l$^$9!#$D$^$j7k2L$H$7$F>e5-$N%k!<%k$O!"(B - <module>mod_include</module> $B$,:8$NI>2A<0$rI>2A$7$^$9!#(B - $B:8B&$G7k2L$r==J,7hDj$G$-$k>l9g$O!"I>2A$O$=$3$GDd;_$7$^$9!#(B - $B$=$&$G$J$$>l9g$O1&B&$rI>2A$7$F!":8$H1&$NN>J}$+$i7k2L$r7W;;$7$^$9!#(B</li> - <li>$BC;MmI>2A$OI>2A$NBP>]$K@55,I=8=$,4^$^$l$k>l9g!"%*%U$K$J$j$^$9!#(B - $B8eJ};2>H$9$kJQ?t(B (<code>$1</code> .. <code>$9</code>) - $B$rKd$a$k$?$a$K!"<B:]$KI>2A$9$kI,MW$,$"$k$+$i$G$9!#(B</li> + <li>評価は左から右に向かって行われます。</li> + <li>二値真偽値オペレータ (<code>&&</code> と <code>||</code>) + は、出来る限り短絡評価されます。つまり結果として上記のルールは、 + <module>mod_include</module> が左の評価式を評価します。 + 左側で結果を十分決定できる場合は、評価はそこで停止します。 + そうでない場合は右側を評価して、左と右の両方から結果を計算します。</li> + <li>短絡評価は評価の対象に正規表現が含まれる場合、オフになります。 + 後方参照する変数 (<code>$1</code> .. <code>$9</code>) + を埋めるために、実際に評価する必要があるからです。</li> </ul> - <p>$BFCDj$N<0$,$I$N$h$&$K07$o$l$k$+$rCN$j$?$$>l9g$O!"(B - <code>-DDEBUG_INCLUDE</code> $B%3%s%Q%$%i%*%W%7%g%s$rIU$1$F(B - <module>mod_include</module> $B$r%j%3%s%Q%$%k$9$k$HNI$$$G$7$g$&!#(B - $B$3$l$K$h$j!"A4$F$N%Q!<%9$5$l$?<0$KBP$7$F!";z6g2r@O>pJs!"(B - $B%Q!<%9%D%j!<$H!"(B - $B$=$l$,$I$N$h$&$K%/%i%$%"%s%H$KAw$i$l$?=PNO$^$GI>2A$5$l$?$+$r(B - $BA^F~$7$^$9!#(B</p> + <p>特定の式がどのように扱われるかを知りたい場合は、 + <code>-DDEBUG_INCLUDE</code> コンパイラオプションを付けて + <module>mod_include</module> をリコンパイルすると良いでしょう。 + これにより、全てのパースされた式に対して、字句解析情報、 + パースツリーと、 + それがどのようにクライアントに送られた出力まで評価されたかを + 挿入します。</p> </note> </section> <directivesynopsis> <name>SSIEndTag</name> -<description>include $BMWAG$r=*N;$5$;$kJ8;zNs(B</description> +<description>include 要素を終了させる文字列</description> <syntax>SSIEndTag <var>tag</var></syntax> <default>SSIEndTag "-->"</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>2.0.30 $B0J9_$GMxMQ2DG=(B</compatibility> +<compatibility>2.0.30 以降で利用可能</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B <module>mod_include</module> $B$,C5$9!"(B - include $BMWAG$N=*N;$r<($9J8;zNs$rJQ99$7$^$9!#(B</p> + <p>このディレクティブは <module>mod_include</module> が探す、 + include 要素の終了を示す文字列を変更します。</p> - <example><title>$BNc(B</title> + <example><title>例</title> SSIEndTag "%>" </example> @@ -616,20 +616,20 @@ <directivesynopsis> <name>SSIUndefinedEcho</name> -<description>$BL$Dj5A$NJQ?t$,(B echo $B$5$l$?$H$-$KI=<($5$l$kJ8;zNs(B</description> +<description>未定義の変数が echo されたときに表示される文字列</description> <syntax>SSIUndefinedEcho <var>string</var></syntax> <default>SSIUndefinedEcho "(none)"</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>All</override> -<compatibility>2.0.34 $B0J9_$GMxMQ2DG=(B</compatibility> +<compatibility>2.0.34 以降で利用可能</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$OJQ?t$,Dj5A$5$l$F$$$J$$$K$b4X$o$i$:(B - "echo" $B$5$l$?$H$-$K(B <module>mod_include</module> - $B$,I=<($9$kJ8;zNs$rJQ99$7$^$9!#(B</p> + <p>このディレクティブは変数が定義されていないにも関わらず + "echo" されたときに <module>mod_include</module> + が表示する文字列を変更します。</p> - <example><title>$BNc(B</title> + <example><title>例</title> SSIUndefinedEcho "<!-- undef -->" </example> </usage> @@ -637,26 +637,26 @@ <directivesynopsis> <name>SSIErrorMsg</name> -<description>SSI $B$N%(%i!<$,$"$C$?$H$-$KI=<($5$l$k%(%i!<%a%C%;!<%8(B</description> +<description>SSI のエラーがあったときに表示されるエラーメッセージ</description> <syntax>SSIErrorMsg <var>message</var></syntax> <default>SSIErrorMsg "[an error occurred while processing this directive]"</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>All</override> -<compatibility>$B%P!<%8%g%s(B 2.0.30 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>バージョン 2.0.30 以降で使用可能</compatibility> <usage> - <p><directive>SSIErrorMsg</directive> $B%G%#%l%/%F%#%V$O(B <module>mod_include</module> - $B$,%(%i!<$,5/$3$C$?$H$-$KI=<($9$k%a%C%;!<%8$rJQ99$7$^$9!#%W%m%@%/%7%g%s%5!<%P$G$O(B - $B%a%C%;!<%8$,%f!<%6$KI=<($5$l$J$$$h$&$K$9$k$?$a$K(B - $B%G%U%)%k%H%(%i!<%a%C%;!<%8$r(B <code>"<!-- Error -->"</code> - $B$KJQ$($k$H$$$&$h$&$J$3$H$r9M$($k$+$b$7$l$^$;$s!#(B</p> + <p><directive>SSIErrorMsg</directive> ディレクティブは <module>mod_include</module> + がエラーが起こったときに表示するメッセージを変更します。プロダクションサーバでは + メッセージがユーザに表示されないようにするために + デフォルトエラーメッセージを <code>"<!-- Error -->"</code> + に変えるというようなことを考えるかもしれません。</p> - <p>$B$3$N%G%#%l%/%F%#%V$O(B <code><!--#config - errmsg=<var>message</var> --></code> $BMWAG$HF1$88z2L$K$J$j$^$9!#(B</p> + <p>このディレクティブは <code><!--#config + errmsg=<var>message</var> --></code> 要素と同じ効果になります。</p> - <example><title>$BNc(B</title> + <example><title>例</title> SSIErrorMsg "<!-- Error -->" </example> </usage> @@ -664,32 +664,32 @@ directive]"</default> <directivesynopsis> <name>SSIStartTag</name> -<description>include $BMWAG$r3+;O$9$kJ8;zNs(B</description> +<description>include 要素を開始する文字列</description> <syntax>SSIStartTag <var>tag</var></syntax> <default>SSIStartTag "<!--#"</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>$B%P!<%8%g%s(B 2.0.30 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>バージョン 2.0.30 以降で使用可能</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B <module>mod_include</module> $B$,C5$9!"(Binclude - $BMWAG$N3+;O$r<($9J8;zNs$rJQ99$7$^$9!#(B</p> + <p>このディレクティブは <module>mod_include</module> が探す、include + 要素の開始を示す文字列を変更します。</p> - <p>$BFs$D$N%5!<%P$G(B ($B$b$7$+$9$k$HJL!9$NCJ3,$G(B) $B%U%!%$%k$N=PNO$r2r@O$7$F$$$F!"(B - $B$=$l$>$l$K0c$&%3%^%s%I$r=hM}$5$;$?$$!"(B - $B$H$$$&$h$&$J$H$-$K$3$N%*%W%7%g%s$r;H$$$^$9!#(B</p> + <p>二つのサーバで (もしかすると別々の段階で) ファイルの出力を解析していて、 + それぞれに違うコマンドを処理させたい、 + というようなときにこのオプションを使います。</p> - <example><title>$BNc(B</title> + <example><title>例</title> SSIStartTag "<%"<br /> SSIEndTag "%>" </example> - <p>$B>e$NNc$N$h$&$KBP1~$9$k(B - <directive module="mod_include">SSIEndTag</directive> $B$rJ;$;$F;H$&$H!"(B - $B2<$K<($9Nc$N$h$&$K(B SSI $B%G%#%l%/%F%#%V$r;H$($^$9(B:</p> + <p>上の例のように対応する + <directive module="mod_include">SSIEndTag</directive> を併せて使うと、 + 下に示す例のように SSI ディレクティブを使えます:</p> - <example><title>$B0c$&3+;O$H=*N;$N%?%0$r;H$C$?(B SSI $B%G%#%l%/%F%#%V(B</title> + <example><title>違う開始と終了のタグを使った SSI ディレクティブ</title> <%printenv %> </example> </usage> @@ -698,36 +698,36 @@ directive]"</default> <directivesynopsis> <name>SSITimeFormat</name> -<description>$BF|IU$1$r8=$9J8;zNs$N=q<0$r@_Dj$9$k(B</description> +<description>日付けを現す文字列の書式を設定する</description> <syntax>SSITimeFormat <var>formatstring</var></syntax> <default>SSITimeFormat "%A, %d-%b-%Y %H:%M:%S %Z"</default> <contextlist> <context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>All</override> -<compatibility>2.0.30 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>2.0.30 以降で使用可能</compatibility> <usage> -<p>$B$3$N%G%#%l%/%F%#%V$O(B <code>DATE</code> $B4D6-JQ?t$r(B echo $B$7$FF|IU$r8=$9J8;zNs$,(B - $BI=<($5$l$k$H$-$N=q<0$rJQ99$7$^$9!#(B<var>formatstring</var> $B$O(B - C $BI8=`%i%$%V%i%j$N(B <code>strftime(3)</code> $B$HF1$87A<0$G$9!#(B</p> +<p>このディレクティブは <code>DATE</code> 環境変数を echo して日付を現す文字列が + 表示されるときの書式を変更します。<var>formatstring</var> は + C 標準ライブラリの <code>strftime(3)</code> と同じ形式です。</p> - <p>$B$3$N%G%#%l%/%F%#%V$O(B <code><!--#config - timefmt=<var>formatstring</var> --></code> $BMWAG$HF1$88z2L$K$J$j$^$9!#(B</p> + <p>このディレクティブは <code><!--#config + timefmt=<var>formatstring</var> --></code> 要素と同じ効果になります。</p> - <example><title>$BNc(B</title> + <example><title>例</title> SSITimeFormat "%R, %B %d, %Y" </example> - <p>$B>e$N%G%#%l%/%F%#%V$G$O!"F|IU$O(B "22:26, June 14, 2002" $B$H$$$&(B - $B7A<0$GI=<($5$l$^$9!#(B</p> + <p>上のディレクティブでは、日付は "22:26, June 14, 2002" という + 形式で表示されます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>XBitHack</name> -<description>$B<B9T%S%C%H$,@_Dj$5$l$?%U%!%$%k$N(B SSI $B%G%#%l%/%F%#%V$r(B -$B2r@O$9$k(B</description> +<description>実行ビットが設定されたファイルの SSI ディレクティブを +解析する</description> <syntax>XBitHack on|off|full</syntax> <default>XBitHack off</default> <contextlist><context>server config</context><context>virtual host</context> @@ -735,32 +735,32 @@ directive]"</default> <override>Options</override> <usage> - <p><directive>XBitHack</directive> $B%G%#%l%/%F%#%V$ODL>o$N(B HTML - $B%I%-%e%a%s%H$N2r@O$r@)8f$7$^$9!#$3$N%G%#%l%/%F%#%V$O(B MIME $B%?%$%W(B - <code>text/html</code> $B$H4XO"IU$1$i$l$F$$$k%U%!%$%k$K$N$_1F6A$7$^$9!#(B - <directive>XBitHack</directive> $B$O0J2<$NCM$r$H$k$3$H$,$G$-$^$9!#(B</p> + <p><directive>XBitHack</directive> ディレクティブは通常の HTML + ドキュメントの解析を制御します。このディレクティブは MIME タイプ + <code>text/html</code> と関連付けられているファイルにのみ影響します。 + <directive>XBitHack</directive> は以下の値をとることができます。</p> <dl> <dt><code>off</code></dt> - <dd>$B<B9T2DG=%U%!%$%k$KBP$7$FFCJL$J07$$$r$7$^$;$s!#(B</dd> + <dd>実行可能ファイルに対して特別な扱いをしません。</dd> <dt><code>on</code></dt> - <dd>$B%f!<%6$N<B9T%S%C%H$,@_Dj$5$l$F$$$k(B <code>text/html</code> - $B%U%!%$%k$OA4$F%5!<%P$G2r@O$9$k(B html $B%I%-%e%a%s%H$H$7$F07$o$l$^$9!#(B</dd> + <dd>ユーザの実行ビットが設定されている <code>text/html</code> + ファイルは全てサーバで解析する html ドキュメントとして扱われます。</dd> <dt><code>full</code></dt> - <dd><code>on</code> $B$HF1MM$G$9$,!"%0%k!<%W<B9T%S%C%H$b%F%9%H$7$^$9!#(B - $B$b$7$=$l$,@_Dj$5$l$F$$$l$P!"JV$5$l$k%U%!%$%k$N(B <code>Last-modified</code> $B$N(B - $BF|IU$r%U%!%$%k$N:G=*=$@5;~9o$K$7$^$9!#$=$l$,@_Dj$5$l$F$$$J$$$H$-$O!"(B - last-modified $B$NF|IU$OAw$i$l$^$;$s!#$3$N%S%C%H$r@_Dj$9$k$H!"(B - $B%/%i%$%"%s%H$d%W%m%-%7$,%j%/%(%9%H$r%-%c%C%7%e$G$-$k$h$&$K$J$j$^$9!#(B - - <note><strong>$BCm0U(B</strong> $BB>$N(B CGI $B$r(B <code>#include</code> - $B$9$k$+$b$7$l$J$$$b$N$d!"3F%"%/%;%9$KBP$7$F0c$&=PNO$r@8@.$9$k(B - ($B$b$7$/$O8e$N%j%/%(%9%H$GJQ$o$k$+$b$7$l$J$$$b$N(B) - $B$9$Y$F$N(B SSI $B%9%/%j%W%H$KBP$7$F%0%k!<%W<B9T%S%C%H$,(B - $B@_Dj$5$l$F$$$J$$$3$H$r3NG'$G$-$J$$>l9g$O!"(Bfull $B$O;H$o$J$$J}$,NI$$(B - $B$G$7$g$&!#(B</note> + <dd><code>on</code> と同様ですが、グループ実行ビットもテストします。 + もしそれが設定されていれば、返されるファイルの <code>Last-modified</code> の + 日付をファイルの最終修正時刻にします。それが設定されていないときは、 + last-modified の日付は送られません。このビットを設定すると、 + クライアントやプロキシがリクエストをキャッシュできるようになります。 + + <note><strong>注意</strong> 他の CGI を <code>#include</code> + するかもしれないものや、各アクセスに対して違う出力を生成する + (もしくは後のリクエストで変わるかもしれないもの) + すべての SSI スクリプトに対してグループ実行ビットが + 設定されていないことを確認できない場合は、full は使わない方が良い + でしょう。</note> </dd> </dl> diff --git a/docs/manual/mod/mod_info.xml.ja b/docs/manual/mod/mod_info.xml.ja index 0ad8976597..ed715fe843 100644 --- a/docs/manual/mod/mod_info.xml.ja +++ b/docs/manual/mod/mod_info.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:450473 (outdated) --> @@ -23,14 +23,14 @@ <modulesynopsis metafile="mod_info.xml.meta"> <name>mod_info</name> -<description>$B%5!<%P$N@_Dj$NJq3gE*$J354Q$rDs6!$9$k(B</description> +<description>サーバの設定の包括的な概観を提供する</description> <status>Extension</status> <sourcefile>mod_info.c</sourcefile> <identifier>info_module</identifier> <summary> - <p><module>mod_info</module> $B$r@_Dj$9$k$K$O!"0J2<$r(B <code>httpd.conf</code> - $B%U%!%$%k$K2C$($^$9!#(B</p> + <p><module>mod_info</module> を設定するには、以下を <code>httpd.conf</code> + ファイルに加えます。</p> <example> <Location /server-info><br /> @@ -41,8 +41,8 @@ </example> <p><directive type="section" module="core">Location</directive> - $B$NCf$G(B <module>mod_access</module> $B$r;H$C$F!"%5!<%P@_Dj>pJs$X$N(B - $B%"%/%;%9$r@)8B$7$?$$$H;W$&$+$b$7$l$^$;$s(B :</p> + の中で <module>mod_access</module> を使って、サーバ設定情報への + アクセスを制限したいと思うかもしれません :</p> <example> <Location /server-info><br /> @@ -55,27 +55,27 @@ </Location> </example> - <p>$B0lC6@_Dj$9$k$H!"(B<code>http://your.host.example.com/server-info</code> - $B$K%"%/%;%9$9$k$3$H$G%5!<%P$N>pJs$rF@$i$l$k$h$&$K$J$j$^$9!#(B</p> + <p>一旦設定すると、<code>http://your.host.example.com/server-info</code> + にアクセスすることでサーバの情報を得られるようになります。</p> </summary> <section id="security"><title>Security Issues</title> - <p>$B0lC6(B <module>mod_info</module> $B$,%5!<%P$KFI$_9~$^$l$k$H!"(B - $BDs6!$7$F$$$k%O%s%I%i5!G=$O%G%#%l%/%H%jKh$N@_Dj%U%!%$%k(B (<em>$BNc$($P(B</em> - .htaccess) $B$r4^$`(B <em>$B$9$Y$F(B</em>$B$N@_Dj%U%!%$%k$GM-8z$K$J$j$^$9!#(B - $B$3$N%b%8%e!<%k$rM-8z$K$9$k$H$-$O%;%-%e%j%F%#$NLdBj$r9MN8$9$kI,MW$,(B - $B$"$k$G$7$g$&!#(B</p> - - <p>$BFC$K!"$3$N%b%8%e!<%k$O%7%9%F%`%Q%9!"%f!<%6L>(B/$B%Q%9%o!<%I!"(B - $B%G!<%?%Y!<%9L>$J$I!"B>$N(B Apache $B%b%8%e!<%k$N@_Dj%G%#%l%/%F%#%V$+$i(B - $B%;%-%e%j%F%#>eHyL/$J>pJs$rO3$i$92DG=@-$,$"$j$^$9!#(B - $B$G$9$+$i!"$3$N%b%8%e!<%k$O$-$A$s$H%"%/%;%9@)8f$5$l$?4D6-$G(B<strong>$B$N$_(B</strong>$B!"(B - $BCm0U$7$F;H$C$F$/$@$5$$!#(B</p> - - <p>$B@_Dj>pJs$X$N%"%/%;%9$r@)8B$9$k$?$a$K!"(B<module>mod_authz_host</module> $B$r(B - $B;H$&$N$,NI$$$G$7$g$&!#(B</p> + <p>一旦 <module>mod_info</module> がサーバに読み込まれると、 + 提供しているハンドラ機能はディレクトリ毎の設定ファイル (<em>例えば</em> + .htaccess) を含む <em>すべて</em>の設定ファイルで有効になります。 + このモジュールを有効にするときはセキュリティの問題を考慮する必要が + あるでしょう。</p> + + <p>特に、このモジュールはシステムパス、ユーザ名/パスワード、 + データベース名など、他の Apache モジュールの設定ディレクティブから + セキュリティ上微妙な情報を漏らす可能性があります。 + ですから、このモジュールはきちんとアクセス制御された環境で<strong>のみ</strong>、 + 注意して使ってください。</p> + + <p>設定情報へのアクセスを制限するために、<module>mod_authz_host</module> を + 使うのが良いでしょう。</p> - <example><title>$B%"%/%;%9@)8f(B</title> + <example><title>アクセス制御</title> <Location /server-info><br /> <indent> SetHandler server-info<br /> @@ -89,72 +89,72 @@ </example> </section> -<section id="queries"><title>$BI=<($5$l$k>pJs$NA*Br(B</title> - <p>$B%G%U%)%k%H$G$O!"%5!<%P>pJs$O$9$Y$F$NM-8z$J%b%8%e!<%k$H!"(B - $B3F%b%8%e!<%k$K$D$$$F!"%b%8%e!<%k$,M}2r$9$k%G%#%l%/%F%#%V!"(B - $B<BAu$7$F$$$k!"%U%C%/!"8=;~E@$G$N@_Dj$N4XO"$9$k%G%#%l%/%F%#%V$K(B - $B$J$C$F$$$^$9!#(B</p> +<section id="queries"><title>表示される情報の選択</title> + <p>デフォルトでは、サーバ情報はすべての有効なモジュールと、 + 各モジュールについて、モジュールが理解するディレクティブ、 + 実装している、フック、現時点での設定の関連するディレクティブに + なっています。</p> - <p><code>server-info</code> $B%j%/%(%9%H$X%/%(%j!<$rDI2C$9$k$3$H$G!"(B - $B@_Dj>pJs$NB>$NI=<(7A<0$rA*$V$3$H$,$G$-$^$9!#Nc$($P!"(B - <code>http://your.host.example.com/server-info?config</code> $B$O(B - $B$9$Y$F$N@_Dj%G%#%l%/%F%#%V$rI=<($7$^$9!#(B</p> + <p><code>server-info</code> リクエストへクエリーを追加することで、 + 設定情報の他の表示形式を選ぶことができます。例えば、 + <code>http://your.host.example.com/server-info?config</code> は + すべての設定ディレクティブを表示します。</p> <dl> <dt><code>?<module-name></code></dt> - <dd>$B;XDj$5$l$?%b%8%e!<%k$K4XO"$9$k>pJs$N$_(B</dd> + <dd>指定されたモジュールに関連する情報のみ</dd> <dt><code>?config</code></dt> - <dd>$B%b%8%e!<%k$G%=!<%H$;$:$K!"@_Dj%G%#%l%/%F%#%V$N$_(B</dd> + <dd>モジュールでソートせずに、設定ディレクティブのみ</dd> <dt><code>?hooks</code></dt> - <dd>$B3F%b%8%e!<%k$,;HMQ$9$k%U%C%/$N$_(B</dd> + <dd>各モジュールが使用するフックのみ</dd> <dt><code>?list</code></dt> - <dd>$BM-8z$J%b%8%e!<%k$N4JC1$J%j%9%H$N$_(B</dd> + <dd>有効なモジュールの簡単なリストのみ</dd> <dt><code>?server</code></dt> - <dd>$B4pK\%5!<%P>pJs$N$_(B</dd> + <dd>基本サーバ情報のみ</dd> </dl> </section> -<section id="limitations"><title>$B4{CN$N@)8B(B</title> - <p><module>mod_info</module> $B$O!"85$N@_Dj%U%!%$%k$rFI$`$N$G$O$J$/!"(B - $B4{$K%Q!<%9$5$l$?@_Dj$rFI$_9~$`$3$H$G>pJs$rDs6!$7$^$9!#=>$C$F!"(B - $B%Q!<%9:Q$_$N@_Dj>pJs$NLZ$,@8@.$5$l$kJ}K!$K$h$k@)8B$,$$$/$D$+$"$j$^$9(B:</p> +<section id="limitations"><title>既知の制限</title> + <p><module>mod_info</module> は、元の設定ファイルを読むのではなく、 + 既にパースされた設定を読み込むことで情報を提供します。従って、 + パース済みの設定情報の木が生成される方法による制限がいくつかあります:</p> <ul> - <li>$B%Q!<%9$5$l$?@_Dj$KJ]B8$5$l$:$K!"$9$0$K<B9T$5$l$k%G%#%l%/%F%#%V$O(B - $B0lMw$K8=$l$^$;$s!#$3$l$K$O(B + <li>パースされた設定に保存されずに、すぐに実行されるディレクティブは + 一覧に現れません。これには <directive module="core">ServerRoot</directive>, <directive module="mod_so">LoadModule</directive>, - <directive module="mod_so">LoadFile</directive> $B$,$"$j$^$9!#(B</li> + <directive module="mod_so">LoadFile</directive> があります。</li> <li><directive module="core">Include</directive>, <directive module="core"><IfModule></directive>, <directive module="core"><IfDefine></directive>, - $B$N$h$&$J@_Dj%U%!%$%k<+?H$r@)8f$9$k%G%#%l%/%F%#%V$OI=<($5$l$^$;$s!#(B - $B$=$N%G%#%l%/%F%#%V$NCf$K$"$j!"M-8z$K$J$C$F$$$k%G%#%l%/%F%#%V$O(B - $BI=<($5$l$^$9!#(B</li> - <li>$B%3%a%s%H$OI=<($5$l$^$;$s!#(B($B$3$l$O;EMM$@$H;W$C$F$/$@$5$$!#(B)</li> - <li><code>.htaccess</code> $B%U%!%$%k$N@_Dj%G%#%l%/%F%#%V$OI=<($5$l$^$;$s(B - ($B1J5WE*$J%5!<%P@_Dj$N0lIt$G$O$J$$$+$i$G$9(B)$B!#(B</li> + のような設定ファイル自身を制御するディレクティブは表示されません。 + そのディレクティブの中にあり、有効になっているディレクティブは + 表示されます。</li> + <li>コメントは表示されません。(これは仕様だと思ってください。)</li> + <li><code>.htaccess</code> ファイルの設定ディレクティブは表示されません + (永久的なサーバ設定の一部ではないからです)。</li> <li><directive module="core"><Directory></directive> - $B$N$h$&$J%3%s%F%J%G%#%l%/%F%#%V$OIaDL$KI=<($5$l$^$9$,!"(B - <module>mod_info</module> $B$OJD$8%?%0$N(B <directive module="core" - ></Directory></directive> $B$J$I$N?t$rCN$k$3$H$O$G$-$^$;$s!#(B</li> - <li><module>mod_perl</module> $B$N$h$&$J%5!<%I%Q!<%F%#%b%8%e!<%k(B - $B$N%G%#%l%/%F%#%V$OI=<($5$l$J$$$+$b$7$l$^$;$s!#(B</li> + のようなコンテナディレクティブは普通に表示されますが、 + <module>mod_info</module> は閉じタグの <directive module="core" + ></Directory></directive> などの数を知ることはできません。</li> + <li><module>mod_perl</module> のようなサードパーティモジュール + のディレクティブは表示されないかもしれません。</li> </ul> </section> <directivesynopsis> <name>AddModuleInfo</name> -<description>server-info $B%O%s%I%i$K$h$jI=<($5$l$k%b%8%e!<%k$N>pJs$K(B -$BDI2C$N>pJs$rIU$12C$($k(B</description> +<description>server-info ハンドラにより表示されるモジュールの情報に +追加の情報を付け加える</description> <syntax>AddModuleInfo <var>module-name</var> <var>string</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>Apache 1.3 $B0J9_(B</compatibility> +<compatibility>Apache 1.3 以降</compatibility> <usage> - <p>$B$3$l$O!"(B<var>string</var> $B$NFbMF$,%b%8%e!<%k(B <var>module-name</var> - $B$N(B<strong>$BDI2C>pJs(B</strong> $B$H$7$F(B HTML - $B$H$7$F2r<a$5$l!"I=<($5$l$k$h$&$K$7$^$9!#Nc(B:</p> + <p>これは、<var>string</var> の内容がモジュール <var>module-name</var> + の<strong>追加情報</strong> として HTML + として解釈され、表示されるようにします。例:</p> <example> AddModuleInfo mod_deflate.c 'See <a \<br /> diff --git a/docs/manual/mod/mod_log_config.xml.ja b/docs/manual/mod/mod_log_config.xml.ja index acad178e92..4dd6aef356 100644 --- a/docs/manual/mod/mod_log_config.xml.ja +++ b/docs/manual/mod/mod_log_config.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:579425 (outdated) --> @@ -23,316 +23,316 @@ <modulesynopsis metafile="mod_log_config.xml.meta"> <name>mod_log_config</name> -<description>$B%5!<%P$X$N%j%/%(%9%H$N%m%.%s%0(B</description> +<description>サーバへのリクエストのロギング</description> <status>Base</status> <sourcefile>mod_log_config.c</sourcefile> <identifier>log_config_module</identifier> <summary> <p> - $B$3$N%b%8%e!<%k$O%/%i%$%"%s%H$N%j%/%(%9%H$r=@Fp$K%m%0<}=8$9$k5!G=$r(B - $BDs6!$7$^$9!#%m%0$O%+%9%?%^%$%:2DG=$J=q<0$G=q$+$l!"%U%!%$%k$KD>@\(B - $B=q$$$?$j!"30It%W%m%0%i%`$KEO$7$?$j$9$k$3$H$,$G$-$^$9!#8D!9$N%j%/%(%9%H$r(B - $BFCD'$K1~$8$F%m%0$K=q$$$?$j=q$+$J$+$C$?$j$G$-$k$h$&$K!">r7o$K$h$k(B - $B%m%0<}=8$bDs6!$5$l$F$$$^$9!#(B</p> - - <p>$B$3$N%b%8%e!<%k$O;0$D$N%G%#%l%/%F%#%VDs6!$7$^$9(B: - $B%m%0%U%!%$%k$r:n@.$9$k$?$a$N(B <directive module="mod_log_config" + このモジュールはクライアントのリクエストを柔軟にログ収集する機能を + 提供します。ログはカスタマイズ可能な書式で書かれ、ファイルに直接 + 書いたり、外部プログラムに渡したりすることができます。個々のリクエストを + 特徴に応じてログに書いたり書かなかったりできるように、条件による + ログ収集も提供されています。</p> + + <p>このモジュールは三つのディレクティブ提供します: + ログファイルを作成するための <directive module="mod_log_config" >TransferLog</directive>, - $B?7$7$$=q<0$r(B $BDj5A$9$k(B <directive module="mod_log_config">LogFormat</directive>, - $B%m%0%U%!%$%k$H(B $B=q<0$r0lEY$KDj5A$9$k(B <directive module="mod_log_config" - >CustomLog</directive> $B$G$9!#(B - $B3F%j%/%(%9%H$,J#?t2s%m%0<}=8$5$l$k$h$&$K$9$k$?$a$K(B - <directive>TransferLog</directive> $B%G%#%l%/%F%#%V$H(B + 新しい書式を 定義する <directive module="mod_log_config">LogFormat</directive>, + ログファイルと 書式を一度に定義する <directive module="mod_log_config" + >CustomLog</directive> です。 + 各リクエストが複数回ログ収集されるようにするために + <directive>TransferLog</directive> ディレクティブと <directive>CustomLog</directive> - $B%G%#%l%/%F%#%V$OJ#?t2s;HMQ$9$k$3$H$,$G$-$^$9!#(B</p> + ディレクティブは複数回使用することができます。</p> </summary> -<seealso><a href="../logs.html">Apache $B%m%0%U%!%$%k(B</a></seealso> +<seealso><a href="../logs.html">Apache ログファイル</a></seealso> -<section id="formats"><title>$B%+%9%?%`%m%0=q<0(B</title> +<section id="formats"><title>カスタムログ書式</title> - <p><directive module="mod_log_config">LogFormat</directive> $B%G%#%l%/%F%#%V$H(B + <p><directive module="mod_log_config">LogFormat</directive> ディレクティブと <directive module="mod_log_config">CustomLog</directive> - $B%G%#%l%/%F%#%V$N=q<0$r;XDj$9$k0z?t$OJ8;zNs$G$9!#$3$NJ8;zNs$r;H$C$F$=$l$>$l$N(B - $B%j%/%(%9%H$,%m%0%U%!%$%k$K%m%0<}=8$5$l$^$9!#$=$NJ8;zNs$K$O(B - $B%m%0%U%!%$%k$K$=$N$^$^(B - $B=q$+$l$kJ8;zNs$d!"$=$l$>$l2~9T$H%?%V$rI=$9(B C $B8@8l(B - $B7A<0$N@)8fJ8;z(B "\n" $B$H(B "\t" - $B$H$r4^$a$k$3$H$,$G$-$^$9!#$=$N$^$^=PNO$5$;$?$$0zMQId$H%P%C%/%9%i%C%7%e$O(B - $B%P%C%/%9%i%C%7%e$G%(%9%1!<%W$9$kI,MW$,$"$j$^$9!#(B</p> - - <p>$B%j%/%(%9%H$NFCD'$=$N$b$N$O(B "<code>%</code>" - $B%G%#%l%/%F%#%V$r=q<0$NJ8;zNs$K=q$/$3$H$G(B - $B%m%0<}=8$5$l$^$9!#(B"%" - $B%G%#%l%/%F%#%V$O%m%0%U%!%$%kCf$G$O0J2<$N$h$&$J(B - $BCM$GCV49$5$l$^$9(B:</p> + ディレクティブの書式を指定する引数は文字列です。この文字列を使ってそれぞれの + リクエストがログファイルにログ収集されます。その文字列には + ログファイルにそのまま + 書かれる文字列や、それぞれ改行とタブを表す C 言語 + 形式の制御文字 "\n" と "\t" + とを含めることができます。そのまま出力させたい引用符とバックスラッシュは + バックスラッシュでエスケープする必要があります。</p> + + <p>リクエストの特徴そのものは "<code>%</code>" + ディレクティブを書式の文字列に書くことで + ログ収集されます。"%" + ディレクティブはログファイル中では以下のような + 値で置換されます:</p> <table border="1" style="zebra"> <columnspec><column width=".2"/><column width=".8"/></columnspec> - <tr><th>$B%U%)!<%^%C%HJ8;zNs(B</th> - <th>$B@bL@(B</th></tr> + <tr><th>フォーマット文字列</th> + <th>説明</th></tr> <tr><td><code>%%</code></td> - <td>$B%Q!<%;%s%H5-9f(B</td></tr> + <td>パーセント記号</td></tr> <tr><td><code>%a</code></td> - <td>$B%j%b!<%H(B IP $B%"%I%l%9(B</td></tr> + <td>リモート IP アドレス</td></tr> <tr><td><code>%A</code></td> - <td>$B%m!<%+%k(B IP $B%"%I%l%9(B</td></tr> + <td>ローカル IP アドレス</td></tr> <tr><td><code>%B</code></td> - <td>$B%l%9%]%s%9$N%P%$%H?t!#(BHTTP $B%X%C%@$O=|$/!#(B</td></tr> + <td>レスポンスのバイト数。HTTP ヘッダは除く。</td></tr> <tr><td><code>%b</code></td> - <td>$B%l%9%]%s%9$N%P%$%H?t!#(BHTTP $B%X%C%@$O=|$/!#(BCLF $B=q<0!#(B - <em>$B$9$J$o$A(B</em>$B!"(B1 $B%P%$%H$bAw$i$l$J$+$C$?$H$-$O(B 0 $B$G$O$J$/!"(B - '<code>-</code>' $B$K$J$k(B</td></tr> + <td>レスポンスのバイト数。HTTP ヘッダは除く。CLF 書式。 + <em>すなわち</em>、1 バイトも送られなかったときは 0 ではなく、 + '<code>-</code>' になる</td></tr> <tr><td><code>%{<var>Foobar</var>}C</code></td> - <td>$B%5!<%P$KAw$i$l$?%j%/%(%9%HCf$N%/%C%-!<(B <var>Foobar</var> $B$NCM(B</td></tr> + <td>サーバに送られたリクエスト中のクッキー <var>Foobar</var> の値</td></tr> <tr><td><code>%D</code></td> - <td>$B%j%/%(%9%H$r=hM}$9$k$N$K$+$+$C$?;~4V!"%^%$%/%mICC10L(B</td></tr> + <td>リクエストを処理するのにかかった時間、マイクロ秒単位</td></tr> <tr><td><code>%{<var>FOOBAR</var>}e</code></td> - <td>$B4D6-JQ?t(B <var>FOOBAR</var> $B$NFbMF(B</td></tr> + <td>環境変数 <var>FOOBAR</var> の内容</td></tr> <tr><td><code>%f</code></td> - <td>$B%U%!%$%kL>(B</td></tr> + <td>ファイル名</td></tr> <tr><td><code>%h</code></td> - <td>$B%j%b!<%H%[%9%H(B</td></tr> + <td>リモートホスト</td></tr> <tr><td><code>%H</code></td> - <td>$B%j%/%(%9%H%W%m%H%3%k(B</td></tr> + <td>リクエストプロトコル</td></tr> <tr><td><code>%{<var>Foobar</var>}i</code></td> - <td>$B%5!<%P$KAw$i$l$?%j%/%(%9%H$N(B <code><var>Foobar</var>:</code> - $B%X%C%@$NFbMF(B</td></tr> + <td>サーバに送られたリクエストの <code><var>Foobar</var>:</code> + ヘッダの内容</td></tr> <tr><td><code>%l</code></td> - <td>(identd $B$+$i$b$7Ds6!$5$l$F$$$l$P(B) $B%j%b!<%H%m%0L>!#(B - $B$3$l$O(B <module>mod_ident</module> $B$,%5!<%P$KB8:_$7$F!"(B + <td>(identd からもし提供されていれば) リモートログ名。 + これは <module>mod_ident</module> がサーバに存在して、 <directive module="mod_ident">IdentityCheck</directive> - $B%G%#%l%/%F%#%V$,(B <code>On</code> $B$K@_Dj$5$l$F$$$J$$8B$j!"(B - <code>-</code> $B$K$J$j$^$9!#(B</td></tr> + ディレクティブが <code>On</code> に設定されていない限り、 + <code>-</code> になります。</td></tr> <tr><td><code>%m</code></td> - <td>$B%j%/%(%9%H%a%=%C%I(B</td></tr> + <td>リクエストメソッド</td></tr> <tr><td><code>%{<var>Foobar</var>}n</code></td> - <td>$BB>$N%b%8%e!<%k$+$i$N%a%b(B <var>Foobar</var> $B$NFbMF(B</td></tr> + <td>他のモジュールからのメモ <var>Foobar</var> の内容</td></tr> <tr><td><code>%{<var>Foobar</var>}o</code></td> - <td>$B1~Ez$N(B <code><var>Foobar</var>:</code> $B%X%C%@$NFbMF(B</td></tr> + <td>応答の <code><var>Foobar</var>:</code> ヘッダの内容</td></tr> <tr><td><code>%p</code></td> - <td>$B%j%/%(%9%H$r07$C$F$$$k%5!<%P$N@5<0$J%]!<%H(B</td></tr> + <td>リクエストを扱っているサーバの正式なポート</td></tr> <tr><td><code>%P</code></td> - <td>$B%j%/%(%9%H$r07$C$?;R%W%m%;%9$N%W%m%;%9(B ID</td></tr> + <td>リクエストを扱った子プロセスのプロセス ID</td></tr> <tr><td><code>%{<var>format</var>}P</code></td> - <td>$B%j%/%(%9%H$r07$C$?%o!<%+!<$N%W%m%;%9(B ID $B$+%9%l%C%I(B ID$B!#(B - <var>format</var> $B$H$7$FM-8z$JCM$O(B <code>pid</code>, <code>tid</code>, - <code>hextid</code> $B$G$9!#(B<code>hextid</code> $B$r;H$&$K$O(B - APR 1.2.0 $B0J9_$,I,MW$G$9!#(B + <td>リクエストを扱ったワーカーのプロセス ID かスレッド ID。 + <var>format</var> として有効な値は <code>pid</code>, <code>tid</code>, + <code>hextid</code> です。<code>hextid</code> を使うには + APR 1.2.0 以降が必要です。 </td></tr> <tr><td><code>%q</code></td> - <td>$BLd$$9g$;J8;zNs(B ($BB8:_$9$k>l9g$OA0$K(B <code>?</code> $B$,DI2C$5$l$k!#(B - $B$=$&$G$J$$>l9g$O6uJ8;zNs(B)</td></tr> + <td>問い合せ文字列 (存在する場合は前に <code>?</code> が追加される。 + そうでない場合は空文字列)</td></tr> <tr><td><code>%r</code></td> - <td>$B%j%/%(%9%H$N:G=i$N9T(B</td></tr> + <td>リクエストの最初の行</td></tr> <tr><td><code>%s</code></td> - <td>$B%9%F!<%?%9!#FbIt$G%j%@%$%l%/%H$5$l$?%j%/%(%9%H$O!"85!9$N(B - $B%j%/%(%9%H$N%9%F!<%?%9(B --- $B:G8e$N%9%F!<%?%9$O(B <code>%>s</code> + <td>ステータス。内部でリダイレクトされたリクエストは、元々の + リクエストのステータス --- 最後のステータスは <code>%>s</code> </td></tr> <tr><td><code>%t</code></td> - <td>$B%j%/%(%9%H$r<uIU$1$?;~9o!#(B - CLF $B$N;~9o$N=q<0(B ($BI8=`$N1Q8l$N=q<0(B)</td></tr> + <td>リクエストを受付けた時刻。 + CLF の時刻の書式 (標準の英語の書式)</td></tr> <tr><td><code>%{<var>format</var>}t</code></td> - <td><var>format</var> $B$GM?$($i$l$?=q<0$K$h$k;~9o!#(Bformat $B$O(B - <code>strftime (3)</code> $B$N(B - $B=q<0$G$"$kI,MW$,$"$k!#(B($BCO0h2=$5$l$F$$$k2DG=@-$,$"$k(B)</td></tr> + <td><var>format</var> で与えられた書式による時刻。format は + <code>strftime (3)</code> の + 書式である必要がある。(地域化されている可能性がある)</td></tr> <tr><td><code>%T</code></td> - <td>$B%j%/%(%9%H$r07$&$N$K$+$+$C$?;~4V!"ICC10L(B</td></tr> + <td>リクエストを扱うのにかかった時間、秒単位</td></tr> <tr><td><code>%u</code></td> - <td>$B%j%b!<%H%f!<%6(B ($BG'>Z$K$h$k$b$N!#%9%F!<%?%9(B (<code>%s</code>) $B$,(B - 401 $B$N$H$-$O0UL#$,$J$$$b$N$G$"$k2DG=@-$,$"$k(B) + <td>リモートユーザ (認証によるもの。ステータス (<code>%s</code>) が + 401 のときは意味がないものである可能性がある) </td></tr> <tr><td><code>%U</code></td> - <td>$B%j%/%(%9%H$5$l$?(B URL $B%Q%9!#%/%(%jJ8;zNs$O4^$^$J$$(B</td></tr> + <td>リクエストされた URL パス。クエリ文字列は含まない</td></tr> <tr><td><code>%v</code></td> - <td>$B%j%/%(%9%H$r07$C$F$$$k%5!<%P$N@5<0$J(B <directive + <td>リクエストを扱っているサーバの正式な <directive module="core">ServerName</directive></td></tr> <tr><td><code>%V</code></td> <td><directive module="core" - >UseCanonicalName</directive> $B$N@_Dj$K$h$k%5!<%PL>(B</td></tr> + >UseCanonicalName</directive> の設定によるサーバ名</td></tr> <tr><td><code>%X</code></td> - <td>$B1~Ez$,40N;$7$?$H$-$N@\B3%9%F!<%?%9(B: + <td>応答が完了したときの接続ステータス: <table> <columnspec><column width=".2"/><column width=".6"/></columnspec> <tr><td><code>X</code> =</td> - <td>$B1~Ez$,40N;$9$kA0$K@\B3$,0[>o=*N;(B</td></tr> + <td>応答が完了する前に接続が異常終了</td></tr> <tr><td><code>+</code> =</td> - <td>$B1~Ez$,Aw$i$l$?8e$K@\B3$r;}B3$9$k$3$H$,2DG=(B</td></tr> + <td>応答が送られた後に接続を持続することが可能</td></tr> <tr><td><code>-</code> = </td> - <td>$B1~Ez$,Aw$i$l$?8e$K@\B3$,@Z$i$l$k(B</td></tr> + <td>応答が送られた後に接続が切られる</td></tr> </table> - <p>($B$3$N%G%#%l%/%F%#%V$O(B Apache - 1.3 $B$N8e4|$N%P!<%8%g%s$G$O(B <code>%c</code> $B$K3d$jEv$F$i$l$F(B - $B$$$^$7$?$,!"$3$l$ONr;KE*$K(B ssl $B$,;HMQ$7$F$$$k(B + <p>(このディレクティブは Apache + 1.3 の後期のバージョンでは <code>%c</code> に割り当てられて + いましたが、これは歴史的に ssl が使用している <code>%{<var>var</var>}c</code> - $B9=J8$H>WFM$7$F$$$^$7$?!#(B)</p></td></tr> + 構文と衝突していました。)</p></td></tr> <tr><td><code>%I</code></td> - <td>$B%j%/%(%9%H$H%X%C%@$r4^$`!"<u$1<h$C$?%P%$%H?t!#(B - 0 $B$K$O$J$i$J$$!#(B - $B$3$l$r;HMQ$9$k$?$a$K$O(B <module>mod_logio</module> $B$,I,MW(B</td></tr> + <td>リクエストとヘッダを含む、受け取ったバイト数。 + 0 にはならない。 + これを使用するためには <module>mod_logio</module> が必要</td></tr> <tr><td><code>%O</code></td> - <td>$B%X%C%@$r4^$`!"Aw?.$7$?%P%$%H?t!#(B0 $B$K$O$J$i$J$$!#(B - $B$3$l$r;HMQ$9$k$?$a$K$O(B <module>mod_logio</module> $B$,I,MW(B</td></tr> + <td>ヘッダを含む、送信したバイト数。0 にはならない。 + これを使用するためには <module>mod_logio</module> が必要</td></tr> </table> - <section id="modifiers"><title>$B=$>~;R(B</title> - - <p>$BFCDj$NMWAG$O(B "%" $B$ND>8e$K(B HTTP $B%9%F!<%?%9%3!<%I$r%+%s%^6h@Z$j$G(B - $B;XDj$9$k$3$H$G!"I=<($r@)8B$9$k$3$H$,$G$-$^$9!#Nc$($P(B - <code>"%400,501{User-agent}i"</code> $B$G$O!"(B - 400 $B$H(B 500 $BHV%(%i!<$G$N$_(B <code>User-agent</code> $B$r%m%0$7$^$9!#(B - $BB>$N%9%F!<%?%9%3!<%I$G$O(B <code>"-"</code> $B$H$$$&J8;zNs$,(B - $B%m%0$5$l$^$9!#%9%F!<%?%9%3!<%I$N%j%9%H$O(B "<code>!</code>" - $B$GH]Dj$r;XDj$9$k$3$H$,$G$-$^$9(B : - <code>"%!200,304,302{Referer}i"</code> $B$O!";XDj$5$l$?(B - 3 $B$D$N%3!<%I$N(B<em>$B$I$l$K$b3:Ev$7$J$$(B</em>$B%j%/%(%9%HA4$F$G(B - <code>Referer</code> $B$r%m%0$7$^$9!#(B</p> - - <p>$B=$>~;R(B "<" $B$H(B ">" $B$OFbIt%j%@%$%l%/%H$5$l$?%j%/%(%9%H$N%m%0$K(B - $B85$N%j%/%(%9%H$+:G=*E*$J%j%/%(%9%H$N$I$A$i$r;HMQ$9$k$+$r(B - $B;XDj$9$k$?$a$K;H$$$^$9!#%G%U%)%k%H$G$O!"(B<code>%</code> $B%G%#%l%/%F%#%V$N(B - <code>%s, %U, %T, %D, %r</code> $B$O85$N%j%/%(%9%H$r!"B>$O:G=*E*$J%j%/%(%9%H$r(B - $B;HMQ$7$^$9!#Nc$($P!"%j%/%(%9%H$N:G=*%9%F!<%?%9$r5-O?$9$k$K$O(B - <code>%>s</code> $B$r!"FbItE*$KG'>Z$5$l$F$$$J$$%j%=!<%9$X%j%@%$%l%/%H$5$l$?(B - $B%j%/%(%9%H$G85$N%j%/%(%9%H$GG'>Z$5$l$?%f!<%6$r5-O?$9$k$?$a$K$O(B - <code>%<u</code> $B$r;H$&$3$H$,$G$-$^$9!#(B</p> + <section id="modifiers"><title>修飾子</title> + + <p>特定の要素は "%" の直後に HTTP ステータスコードをカンマ区切りで + 指定することで、表示を制限することができます。例えば + <code>"%400,501{User-agent}i"</code> では、 + 400 と 500 番エラーでのみ <code>User-agent</code> をログします。 + 他のステータスコードでは <code>"-"</code> という文字列が + ログされます。ステータスコードのリストは "<code>!</code>" + で否定を指定することができます : + <code>"%!200,304,302{Referer}i"</code> は、指定された + 3 つのコードの<em>どれにも該当しない</em>リクエスト全てで + <code>Referer</code> をログします。</p> + + <p>修飾子 "<" と ">" は内部リダイレクトされたリクエストのログに + 元のリクエストか最終的なリクエストのどちらを使用するかを + 指定するために使います。デフォルトでは、<code>%</code> ディレクティブの + <code>%s, %U, %T, %D, %r</code> は元のリクエストを、他は最終的なリクエストを + 使用します。例えば、リクエストの最終ステータスを記録するには + <code>%>s</code> を、内部的に認証されていないリソースへリダイレクトされた + リクエストで元のリクエストで認証されたユーザを記録するためには + <code>%<u</code> を使うことができます。</p> </section> - <section id="format-notes"><title>$B$=$NB>Cm0UE@(B</title> - - <p>$B%;%-%e%j%F%#>e$NM}M3$K$h$j(B 2.0.46 $B$h$j!"(B - <code>%r</code>, <code>%i</code>, <code>%o</code> $B$KF~$C$F$$$k!"(B - $B0u;zIT2DG=$JJ8;z$HB>$NFCJL$JJ8;z$O!"(B<code>\x<var>hh</var></code> - $B$H$$$&7A<0$NJ8;zNs$G%(%9%1!<%W$5$l$k$h$&$K$J$j$^$7$?!#(B<var>hh</var> $B$O(B - $B$=$N$^$^$N%P%$%H$NCM$N(B 16 $B?J$G$NCM$G$9!#$3$N5,B'$NNc30$K$O!"(B - $B%P%C%/%9%i%C%7%e$r;H$C$F%(%9%1!<%W$5$l$k(B <code>"</code> $B$H(B <code>\</code> $B$H!"(B - C $B7A<0$NI=5-K!$,;H$o$l$k6uGrJ8;z(B (<code>\n</code>, <code>\t</code> $B$J$I(B) - $B$,$"$j$^$9!#(B2.0.46 $B0JA0$N%P!<%8%g%s$G$O%(%9%1!<%W=hM}$O9T$o$l$^$;$s$N$G!"(B - $B@8%m%0%U%!%$%k$r07$&:]$KCm0U$,I,MW$G$9!#(B</p> - - <p>httpd 2.0 $B$G$O(B 1.3 $B$H$O0[$J$j!"(B<code>%b</code> $B$H(B <code>%B</code> - $B%U%)!<%^%C%HJ8;zNs$O%/%i%$%"%s%H$KAw?.$5$l$?%P%$%H?t$=$N$b$N$G$O$J$/!"(B - HTTP $B%l%9%]%s%9$N%P%$%H?t$G$9(B ($B$3$l$i$O0[$J$k$b$N$G!"$?$H$($P!"(B - $B%3%M%/%7%g%s$,ESCf$GGK4~$5$l$?>l9g$d!"(BSSL $B;HMQ;~$K0lCW$7$^$;$s(B) $B!#(B - <module>mod_logio</module> $B$GDs6!$5$l$F$$$k(B <code>%O</code> - $B%U%)!<%^%C%HJ8;zNs$G!"%M%C%H%o!<%/7PM3$G<B:]$KE>Aw$5$l$?%P%$%H?t$r(B - $B5-O?$G$-$^$9!#(B</p> + <section id="format-notes"><title>その他注意点</title> + + <p>セキュリティ上の理由により 2.0.46 より、 + <code>%r</code>, <code>%i</code>, <code>%o</code> に入っている、 + 印字不可能な文字と他の特別な文字は、<code>\x<var>hh</var></code> + という形式の文字列でエスケープされるようになりました。<var>hh</var> は + そのままのバイトの値の 16 進での値です。この規則の例外には、 + バックスラッシュを使ってエスケープされる <code>"</code> と <code>\</code> と、 + C 形式の表記法が使われる空白文字 (<code>\n</code>, <code>\t</code> など) + があります。2.0.46 以前のバージョンではエスケープ処理は行われませんので、 + 生ログファイルを扱う際に注意が必要です。</p> + + <p>httpd 2.0 では 1.3 とは異なり、<code>%b</code> と <code>%B</code> + フォーマット文字列はクライアントに送信されたバイト数そのものではなく、 + HTTP レスポンスのバイト数です (これらは異なるもので、たとえば、 + コネクションが途中で破棄された場合や、SSL 使用時に一致しません) 。 + <module>mod_logio</module> で提供されている <code>%O</code> + フォーマット文字列で、ネットワーク経由で実際に転送されたバイト数を + 記録できます。</p> </section> - <section id="examples"><title>$BNc(B</title> + <section id="examples"><title>例</title> - <p>$B$h$/;H$o$l$k%U%)!<%^%C%HJ8;zNs$O(B:</p> + <p>よく使われるフォーマット文字列は:</p> <dl> <dt>Common Log Format (CLF)</dt> <dd><code>"%h %l %u %t \"%r\" %>s %b"</code></dd> - <dt>$B%P!<%A%c%k%[%9%HIU$-(B Common Log Format</dt> + <dt>バーチャルホスト付き Common Log Format</dt> <dd><code>"%v %h %l %u %t \"%r\" %>s %b"</code></dd> - <dt>NCSA extended/combined $B%m%0=q<0(B</dt> + <dt>NCSA extended/combined ログ書式</dt> <dd><code>"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""</code></dd> - <dt>Referer $B%m%0=q<0(B</dt> + <dt>Referer ログ書式</dt> <dd><code>"%{Referer}i -> %U"</code></dd> - <dt>Agent ($B%V%i%&%6(B) $B%m%0=q<0(B</dt> + <dt>Agent (ブラウザ) ログ書式</dt> <dd><code>"%{User-agent}i"</code></dd> </dl> </section> </section> -<section id="security"><title>$B%;%-%e%j%F%#$K4X$7$F(B</title> - <p>$B%m%0%U%!%$%k$,J]B8$5$l$F$$$k%G%#%l%/%H%j$,%5!<%P$r5/F0$7$?0J30$N%f!<%6$G(B - $B=q$-9~$_2DG=$J$H$-$K%;%-%e%j%F%#$NLdBj$,H/@8$9$kM}M3$N>\:Y$O(B<a - href="../misc/security_tips.html#serverroot">$B%;%-%e%j%F%#$N$3$D(B</a> - $B$r;2>H$7$F$/$@$5$$!#(B</p> +<section id="security"><title>セキュリティに関して</title> + <p>ログファイルが保存されているディレクトリがサーバを起動した以外のユーザで + 書き込み可能なときにセキュリティの問題が発生する理由の詳細は<a + href="../misc/security_tips.html#serverroot">セキュリティのこつ</a> + を参照してください。</p> </section> <directivesynopsis> <name>BufferedLogs</name> -<description>$B%G%#%9%/$K=q$-=P$9A0$K%a%b%j$K%m%0%(%s%H%j$r%P%C%U%!$9$k(B</description> +<description>ディスクに書き出す前にメモリにログエントリをバッファする</description> <syntax>BufferedLogs On|Off</syntax> <default>BufferedLogs Off</default> <contextlist><context>server config</context></contextlist> <status>Experimental</status> -<compatibility>2.0.41 $B0J9_(B</compatibility> +<compatibility>2.0.41 以降</compatibility> <usage> - <p><directive>BufferedLogs</directive> $B%G%#%l%/%F%#%V$r;H$&$H(B - <module>mod_log_config</module> $B$N5sF0$,JQ2=$7$F!"(B - $BJ#?t$N%m%0$r=q$-=P$9:]$K!"$=$l$>$l$N%j%/%(%9%H=hM}8eKh$K(B - $B=q$-=P$9$N$G$O$J$/!"$$$C$?$s%a%b%j$KC_$($F$+$i!"(B - $B$^$H$a$F%G%#%9%/$K=q$-=P$9$h$&$K$J$j$^$9!#(B - $B$3$N7k2L%G%#%9%/%"%/%;%9$,$h$j8zN(E*$K$J$j!"(B - $B9b$$%Q%U%)!<%^%s%9$NF@$i$l$k%7%9%F%`$b$"$k$G$7$g$&!#(B - $B$3$N%G%#%l%/%F%#%V$O%5!<%PA4BN$G0lEY$@$1@_Dj$G$-$^$9(B; - $B%P!<%A%c%k%[%9%H$4$H$K@_Dj$9$k$3$H$O$G$-$^$;$s!#(B</p> - - <note>$B$3$N%G%#%l%/%F%#%V$O<B83E*$J$b$N$G$9$N$G!"(B - $B;HMQ$9$k:]$OCm0U$7$F$/$@$5$$!#(B</note> + <p><directive>BufferedLogs</directive> ディレクティブを使うと + <module>mod_log_config</module> の挙動が変化して、 + 複数のログを書き出す際に、それぞれのリクエスト処理後毎に + 書き出すのではなく、いったんメモリに蓄えてから、 + まとめてディスクに書き出すようになります。 + この結果ディスクアクセスがより効率的になり、 + 高いパフォーマンスの得られるシステムもあるでしょう。 + このディレクティブはサーバ全体で一度だけ設定できます; + バーチャルホストごとに設定することはできません。</p> + + <note>このディレクティブは実験的なものですので、 + 使用する際は注意してください。</note> </usage> </directivesynopsis> <directivesynopsis> <name>CookieLog</name> -<description>$B%/%C%-%s%0$N%m%.%s%0$N$?$a$N%U%!%$%kL>$r@_Dj$9$k(B</description> +<description>クッキングのロギングのためのファイル名を設定する</description> <syntax>CookieLog <var>filename</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>$B$3$N%G%#%l%/%F%#%V$OHs?d>)(B</compatibility> +<compatibility>このディレクティブは非推奨</compatibility> <usage> <p><directive>CookieLog</directive> - $B%G%#%l%/%F%#%V$O%/%C%-!<$N%m%.%s%0$N$?$a$N%U%!%$%kL>$r(B - $B@_Dj$7$^$9!#(Bfilename $B$O(B <directive + ディレクティブはクッキーのロギングのためのファイル名を + 設定します。filename は <directive module="core">ServerRoot</directive> - $B$+$i$NAjBP%Q%9$G$9!#$3$N%G%#%l%/%F%#%V$O(B <code - >mod_cookies</code> $B$H$N8_49@-$N$?$a$@$1$K(B - $BB8:_$7!";HMQ$O?d>)$5$l$F$$$^$;$s!#(B</p> + からの相対パスです。このディレクティブは <code + >mod_cookies</code> との互換性のためだけに + 存在し、使用は推奨されていません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>CustomLog</name> -<description>$B%m%0%U%!%$%k$NL>A0$H=q<0$r@_Dj$9$k(B</description> +<description>ログファイルの名前と書式を設定する</description> <syntax>CustomLog <var>file</var>|<var>pipe</var> <var>format</var>|<var>nickname</var> [env=[!]<var>environment-variable</var>]</syntax> @@ -340,45 +340,45 @@ </contextlist> <usage> - <p><directive>CustomLog</directive> $B%G%#%l%/%F%#%V$O%5!<%P$X$N%j%/%(%9%H$r(B - $B%m%0<}=8$9$k$?$a$K;H$o$l$^$9!#%m%0$N=q<0$,;XDj$5$l!"(B - $B4D6-JQ?t$r;H$C$F%m%.%s%0$,>r7o$K1~$8$F9T$J$o$l$k$h$&$K$9$k$3$H$b$G$-$^$9!#(B</p> + <p><directive>CustomLog</directive> ディレクティブはサーバへのリクエストを + ログ収集するために使われます。ログの書式が指定され、 + 環境変数を使ってロギングが条件に応じて行なわれるようにすることもできます。</p> - <p>$B%m%0$,=q$+$l$k>l=j$r;XDj$9$k:G=i$N0z?t$O0J2<$NFs$D$N7A<0$NCM$r(B - $B$H$k$3$H$,$G$-$^$9(B:</p> + <p>ログが書かれる場所を指定する最初の引数は以下の二つの形式の値を + とることができます:</p> <dl> <dt><var>file</var></dt> <dd><directive module="core">ServerRoot</directive> - $B$+$i$NAjBP%Q%9$GI=$5$l$k%U%!%$%kL>!#(B</dd> + からの相対パスで表されるファイル名。</dd> <dt><var>pipe</var></dt> - <dd>$B%Q%$%WJ8;z(B "<code>|</code>" $B$H!"$=$N8e$KI8=`F~NO$+$i%m%0$N(B - $B>pJs$r<u$1$H$k%W%m%0%i%`$X$N%Q%9$,B3$$$?$b$N!#(B - - <note type="warning"><title>$B%;%-%e%j%F%#(B</title> - <p>$B$b$7%W%m%0%i%`$,;HMQ$5$l$?>l9g!"(B - <program>httpd</program> $B$,5/F0$5$l$?%f!<%6$H$7$F<B9T$5$l$^$9!#$3$l$O%5!<%P$,(B - root $B$K$h$C$F5/F0$5$l$?>l9g$O(B root $B$K$J$j$^$9!#%W%m%0%i%`$,(B - $B0BA4$G$"$k$h$&$KN10U$7$F$/$@$5$$!#(B</p> + <dd>パイプ文字 "<code>|</code>" と、その後に標準入力からログの + 情報を受けとるプログラムへのパスが続いたもの。 + + <note type="warning"><title>セキュリティ</title> + <p>もしプログラムが使用された場合、 + <program>httpd</program> が起動されたユーザとして実行されます。これはサーバが + root によって起動された場合は root になります。プログラムが + 安全であるように留意してください。</p> </note> - <note type="warning"><title>$BCm(B</title> - <p>Unix $B$G$J$$%W%i%C%H%U%)!<%`$G%U%!%$%k$N%Q%9$rF~NO$7$F$$$k$H$-$O!"(B - $B;HMQ$7$F$$$k%W%i%C%H%U%)!<%`$,%P%C%/%9%i%C%7%e$N;HMQ$r5v2D$7$F$$$?(B - $B$H$7$F!"DL>o$N%9%i%C%7%e$@$1$r;H$&$h$&$K5$$r$D$1$F$/$@$5$$!#(B - $B0lHLE*$K!"@_Dj%U%!%$%kCf$G$O>o$KIaDL$N%9%i%C%7%e$N$_$r;H$&$h$&$K$9$k(B - $BJ}$,NI$$$G$9!#(B</p> + <note type="warning"><title>注</title> + <p>Unix でないプラットフォームでファイルのパスを入力しているときは、 + 使用しているプラットフォームがバックスラッシュの使用を許可していた + として、通常のスラッシュだけを使うように気をつけてください。 + 一般的に、設定ファイル中では常に普通のスラッシュのみを使うようにする + 方が良いです。</p> </note></dd> </dl> - <p>$BFs$D$a$N0z?t$O%m%0%U%!%$%k$K2?$,=q$+$l$k$+$r;XDj$7$^$9!#(B - $BA0$K$"$k(B <directive - module="mod_log_config">LogFormat</directive> $B%G%#%l%/%F%#%V$K$h$j(B - $BDj5A$5$l$?(B <var>nickname</var> $B$+!"(B<a href="#formats">$B%m%0$N=q<0(B</a> - $B$N$H$3$m$G@bL@$5$l$F$$$k!"L@<(E*$J(B <var>format</var> $BJ8;zNs$N(B - $B$I$A$i$+$r;XDj$9$k$3$H$,$G$-$^$9!#(B</p> + <p>二つめの引数はログファイルに何が書かれるかを指定します。 + 前にある <directive + module="mod_log_config">LogFormat</directive> ディレクティブにより + 定義された <var>nickname</var> か、<a href="#formats">ログの書式</a> + のところで説明されている、明示的な <var>format</var> 文字列の + どちらかを指定することができます。</p> - <p>$BNc$($P!"0J2<$NFs$D$N%G%#%l%/%F%#%V72$OA4$/F1$88z2L$r$b$?$i$7$^$9(B:</p> + <p>例えば、以下の二つのディレクティブ群は全く同じ効果をもたらします:</p> <example> # CustomLog with format nickname<br /> @@ -389,18 +389,18 @@ CustomLog logs/access_log "%h %l %u %t \"%r\" %>s %b" </example> - <p>$B;0$DL\$N0z?t$O>JN,2DG=$G!"%5!<%P$N4D6-$K$"$kJQ?t$,$"$k$+$J$$$+$K(B - $B1~$8$F%j%/%(%9%H$r%m%0<}=8$9$k$+$I$&$+$r@)8f$9$k$?$a$K;H$&$3$H$,$G$-$^$9!#(B - $B;XDj$5$l$?(B<a href="../env.html">$B4D6-JQ?t(B</a>$B$,%j%/%(%9%H$KBP$7$F(B - $B@_Dj$5$l$F$$$?>l9g(B ('<code>env=!<var>name</var></code>' $BJ8$,;H$o$l$?$H$-$O(B - $B@_Dj$5$l$F$$$J$$>l9g(B)$B!"%j%/%(%9%H$,%m%0<}=8$5$l$^$9!#(B</p> - - <p>$B4D6-JQ?t$O(B <module>mod_setenvif</module> $B%b%8%e!<%k$H(B - <module>mod_rewrite</module> $B%b%8%e!<%k$NN>J}$b$7$/$O(B - $BJRJ}$rMQ$$$F%j%/%(%9%H$4$H$K@_Dj$9$k$3$H$,$G$-$^$9!#(B - $BNc$($P!"%5!<%P$K$"$k$9$Y$F$N(B GIF $B2hA|$X$N%j%/%(%9%H$rJL$N%m%0%U%!%$%k(B - $B$K$O5-O?$7$?$$$1$l$I!"%a%$%s%m%0$K$O5-O?$7$?$/$J$$!"$H$$$&$H$-$O(B - $B0J2<$N$b$N$r;H$&$3$H$,$G$-$^$9(B:</p> + <p>三つ目の引数は省略可能で、サーバの環境にある変数があるかないかに + 応じてリクエストをログ収集するかどうかを制御するために使うことができます。 + 指定された<a href="../env.html">環境変数</a>がリクエストに対して + 設定されていた場合 ('<code>env=!<var>name</var></code>' 文が使われたときは + 設定されていない場合)、リクエストがログ収集されます。</p> + + <p>環境変数は <module>mod_setenvif</module> モジュールと + <module>mod_rewrite</module> モジュールの両方もしくは + 片方を用いてリクエストごとに設定することができます。 + 例えば、サーバにあるすべての GIF 画像へのリクエストを別のログファイル + には記録したいけれど、メインログには記録したくない、というときは + 以下のものを使うことができます:</p> <example> SetEnvIf Request_URI \.gif$ gif-image<br /> @@ -408,8 +408,8 @@ CustomLog nongif-requests.log common env=!gif-image </example> - <p>$B8E$$(B RefererIgnore $B%G%#%l%/%F%#%V$HF1$85sF0$r$5$;$?$$>l9g$O!"(B - $B<!$N$h$&$K$7$^$9(B:</p> + <p>古い RefererIgnore ディレクティブと同じ挙動をさせたい場合は、 + 次のようにします:</p> <example> SetEnvIf Referer example\.com localreferer<br /> @@ -420,7 +420,7 @@ <directivesynopsis> <name>LogFormat</name> -<description>$B%m%0%U%!%$%k$G;HMQ$9$k=q<0$r@_Dj$9$k(B</description> +<description>ログファイルで使用する書式を設定する</description> <syntax>LogFormat <var>format</var>|<var>nickname</var> [<var>nickname</var>]</syntax> <default>LogFormat "%h %l %u %t \"%r\" %>s %b"</default> @@ -428,35 +428,35 @@ </contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%"%/%;%9%m%0%U%!%$%k$N=q<0$r;XDj$7$^$9!#(B</p> - - <p><directive>LogFormat</directive> $B%G%#%l%/%F%#%V$OFs$D$N7A<0$N$I$A$i$+$r(B - $B$H$k$3$H$,$G$-$^$9!#:G=i$N7A<0$G$O0l$D$N0z?t$N$_$,;XDj$5$l!"(B - $BB3$/(B <directive>TransferLog</directive> - $B$G;XDj$5$l$?%m%0$G;H$o$l$k%m%0$N=q<0$r@_Dj$7$^$9!#$3$NC1FH$N0z?t$G$O(B - $B>e$N(B<a href="#formats">$B%+%9%?%`%m%0=q<0(B</a>$B$G@bL@$5$l$F$$$k$h$&$K(B - <var>format</var> $B$rL@<(E*$K;XDj$9$k$3$H$,$G$-$^$9!#(B - $B$b$7$/$O!"2<$G@bL@$5$l$F$$$k$h$&$KA0$K(B <directive>LogFormat</directive> - $B%G%#%l%/%F%#%V$GDj5A$5$l$?%m%0$N=q<0$r(B <var>nickname</var>$B$r;H$C$F(B - $B;2>H$9$k$3$H$b$G$-$^$9!#(B</p> - - <p><directive>LogFormat</directive> $B%G%#%l%/%F%#%V$NFs$D$a$N7A<0$O(B - <var>format</var> $B$K(B <var>nickname</var> $B$rM?$($^$9!#(B - $B%U%)!<%^%C%HJ8;zNsA4BN$r:F$S=q$/$+$o$j$K!"(B - $B$3$N(B <var>nickname</var> $B$rB3$-$N(B <directive - >LogFormat</directive> $B%G%#%l%/%F%#%V$d(B - <directive>CustomLog</directive> $B%G%#%l%/%F%#%V$G;H$&$3$H$,$G$-$^$9!#(B - Nickname $B$rDj5A$9$k(B <directive>LogFormat</directive> $B%G%#%l%/%F%#%V$O(B - <strong>$BB>$K$O2?$b$7$^$;$s(B</strong> -- $B$9$J$o$A!"%K%C%/%M!<%`$rDj5A(B - $B$9$k(B<em>$B$@$1(B</em>$B$G!"<B:]$K=q<0$rE,MQ$7$F%G%U%)%k%H$K$9$k$H$$$&$3$H$O9T$J$$$^$;$s!#(B - $B$G$9$+$i!"$3$l$OB3$/(B <directive module="mod_log_config">TransferLog</directive> - $B%G%#%l%/%F%#%V$K$O1F6A$rM?$($^$;$s!#(B - $B$5$i$K!"(B<directive>LogFormat</directive> $B%G%#%l%/%F%#%V$O4{B8$N(B nickname $B$r(B - $B;H$C$FJL$N(B nickname $B$rDj5A$9$k$3$H$O$G$-$^$;$s!#(BNickname $B$K$O(B - $B%Q!<%;%s%H5-9f(B (<code>%</code>) $B$,4^$^$l$F$$$F$O$$$1$J$$$3$H$K$bCm0U(B - $B$7$F$/$@$5$$!#(B</p> - - <example><title>$BNc(B</title> + <p>このディレクティブはアクセスログファイルの書式を指定します。</p> + + <p><directive>LogFormat</directive> ディレクティブは二つの形式のどちらかを + とることができます。最初の形式では一つの引数のみが指定され、 + 続く <directive>TransferLog</directive> + で指定されたログで使われるログの書式を設定します。この単独の引数では + 上の<a href="#formats">カスタムログ書式</a>で説明されているように + <var>format</var> を明示的に指定することができます。 + もしくは、下で説明されているように前に <directive>LogFormat</directive> + ディレクティブで定義されたログの書式を <var>nickname</var>を使って + 参照することもできます。</p> + + <p><directive>LogFormat</directive> ディレクティブの二つめの形式は + <var>format</var> に <var>nickname</var> を与えます。 + フォーマット文字列全体を再び書くかわりに、 + この <var>nickname</var> を続きの <directive + >LogFormat</directive> ディレクティブや + <directive>CustomLog</directive> ディレクティブで使うことができます。 + Nickname を定義する <directive>LogFormat</directive> ディレクティブは + <strong>他には何もしません</strong> -- すなわち、ニックネームを定義 + する<em>だけ</em>で、実際に書式を適用してデフォルトにするということは行ないません。 + ですから、これは続く <directive module="mod_log_config">TransferLog</directive> + ディレクティブには影響を与えません。 + さらに、<directive>LogFormat</directive> ディレクティブは既存の nickname を + 使って別の nickname を定義することはできません。Nickname には + パーセント記号 (<code>%</code>) が含まれていてはいけないことにも注意 + してください。</p> + + <example><title>例</title> LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common </example> </usage> @@ -464,23 +464,23 @@ <directivesynopsis> <name>TransferLog</name> -<description>$B%m%0%U%!%$%k$N0LCV$r;XDj(B</description> +<description>ログファイルの位置を指定</description> <syntax>TransferLog <var>file</var>|<var>pipe</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"%m%0=q<0$rD>@\;XDj$G$-$J$$$3$H$H!"(B - $B>r7oIU$-%m%.%s%0$,L5$$$3$H$r=|$/$H!"(B<directive module="mod_log_config" - >CustomLog</directive> $B$HA4$/F1$80z?t$H8z2L$,$"$j$^$9!#(B - $BD>@\%m%0=q<0$r;XDj$9$kBe$o$j$K!"%m%0$N=q<0$O$=$3$^$G$G0lHV:G8e$K;XDj$5$l$?(B - $B%K%C%/%M!<%`$rDj5A$7$J$$(B - <directive module="mod_log_config">LogFormat</directive> $B%G%#%l%/%F%#%V(B - $B$GDj5A$5$l$?$b$N$r;H$$$^$9!#(B - $B$b$7B>$N=q<0$,A4$/;XDj$5$l$F$$$J$$$H$-$O(B Common Log Format - $B$,;H$o$l$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p>このディレクティブは、ログ書式を直接指定できないことと、 + 条件付きロギングが無いことを除くと、<directive module="mod_log_config" + >CustomLog</directive> と全く同じ引数と効果があります。 + 直接ログ書式を指定する代わりに、ログの書式はそこまでで一番最後に指定された + ニックネームを定義しない + <directive module="mod_log_config">LogFormat</directive> ディレクティブ + で定義されたものを使います。 + もし他の書式が全く指定されていないときは Common Log Format + が使われます。</p> + + <example><title>例</title> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""<br /> TransferLog logs/access_log </example> diff --git a/docs/manual/mod/mod_log_forensic.xml.ja b/docs/manual/mod/mod_log_forensic.xml.ja index a89c1786f8..1bf9cd25f7 100644 --- a/docs/manual/mod/mod_log_forensic.xml.ja +++ b/docs/manual/mod/mod_log_forensic.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420993:533344 (outdated) --> @@ -23,50 +23,50 @@ <modulesynopsis metafile="mod_log_forensic.xml.meta"> <name>mod_log_forensic</name> -<description>$B%5!<%P$KAw$i$l$?%j%/%(%9%H$N(B forensic $B%m%.%s%0(B</description> +<description>サーバに送られたリクエストの forensic ロギング</description> <status>Extension</status> <sourcefile>mod_log_forensic.c</sourcefile> <identifier>log_forensic_module</identifier> -<compatibility><module>mod_unique_id</module> $B$O%P!<%8%g%s(B 2.1 $B$+$i$OI,?\$G$O(B -$B$J$/$J$C$?(B</compatibility> +<compatibility><module>mod_unique_id</module> はバージョン 2.1 からは必須では +なくなった</compatibility> <summary> - <p>$B$3$N%b%8%e!<%k$O%/%i%$%"%s%H%j%/%(%9%H$N(B forensic $B%m%.%s%0$r(B - $B9T$J$$$^$9!#%m%0<}=8$O%j%/%(%9%H$N=hM}$NA0$H8e$K9T$J$o$l$^$9$N$G!"(B - forensic $B%m%0$O3F%j%/%(%9%H$KBP$7$FFs9T%m%0<}=8$7$^$9!#(B - Forensic $B%m%,!<$OHs>o$K87L)$G$9!#$3$l$O0J2<$N$3$H$r0UL#$7$^$9(B:</p> + <p>このモジュールはクライアントリクエストの forensic ロギングを + 行ないます。ログ収集はリクエストの処理の前と後に行なわれますので、 + forensic ログは各リクエストに対して二行ログ収集します。 + Forensic ロガーは非常に厳密です。これは以下のことを意味します:</p> <ul> - <li>$B%U%)!<%^%C%H$O8GDj$G$9!#<B9T;~$K%m%.%s%0%U%)!<%^%C%H$rJQ99$9$k$3$H$O(B - $B$G$-$^$;$s!#(B</li> - <li>$B%G!<%?$r=q$1$J$$>l9g$O;R%W%m%;%9$O$=$N>l$G=*N;$7!"$5$i$K%3%"$r(B - $B%@%s%W$9$k$+$b$7$l$^$;$s(B (<directive module="mpm_common" - >CoreDumpDirectory</directive> $B%G%#%l%/%F%#%V$N@_Dj$K0M$j$^$9(B)$B!#(B</li> + <li>フォーマットは固定です。実行時にロギングフォーマットを変更することは + できません。</li> + <li>データを書けない場合は子プロセスはその場で終了し、さらにコアを + ダンプするかもしれません (<directive module="mpm_common" + >CoreDumpDirectory</directive> ディレクティブの設定に依ります)。</li> </ul> - <p>Forensic $B%m%0$N=PNO$r8!::$9$k$?$a$K$O!"(B - $BG[I[J*$N(B support $B%G%#%l%/%H%j$K$"$k(B <code>check_forensic</code> - $B%9%/%j%W%H$,Lr$KN)$D$G$7$g$&!#(B</p> + <p>Forensic ログの出力を検査するためには、 + 配布物の support ディレクトリにある <code>check_forensic</code> + スクリプトが役に立つでしょう。</p> </summary> -<seealso><a href="../logs.html">Apache $B%m%0%U%!%$%k(B</a></seealso> +<seealso><a href="../logs.html">Apache ログファイル</a></seealso> <seealso><module>mod_log_config</module></seealso> -<section id="formats"><title>Forensic $B%m%0%U%)!<%^%C%H(B</title> - <p>$B3F%j%/%(%9%H$O(B2$B2s%m%0<}=8$5$l$^$9!#:G=i$O%j%/%(%9%H$,=hM}$5$l$k(B - <em>$BA0(B</em> ($B$D$^$j!"%X%C%@$r<u$1<h$C$?8e(B) $B$G$9!#(B2$BEYL\$N%m%0$O(B - $B%j%/%(%9%H$,=hM}$5$l$?(B<em>$B8e(B</em>$B!"DL>o$N%m%0<}=8$HF1$8$H$-$K(B - $B9T$J$o$l$^$9!#(B</p> +<section id="formats"><title>Forensic ログフォーマット</title> + <p>各リクエストは2回ログ収集されます。最初はリクエストが処理される + <em>前</em> (つまり、ヘッダを受け取った後) です。2度目のログは + リクエストが処理された<em>後</em>、通常のログ収集と同じときに + 行なわれます。</p> - <p>$B3F%j%/%(%9%H$r<1JL$9$k$?$a$K!"%j%/%(%9%H$K$O(B - $B0l0U$J%j%/%(%9%H(B ID $B$,3d$jEv$F$i$l$^$9!#$3$N(B forensic ID $B$O(B - $B%U%)!<%^%C%HJ8;zNs(B <code>%{forensic-id}n</code> $B$r;H$&$3$H$G(B - $BDL>o$N(B transfer $B%m%0$K%m%0<}=8$9$k$3$H$b$G$-$^$9!#(B - <module>mod_unique_id</module> $B$r;H$C$F$$$k>l9g$O!"$=$l$,@8@.$9$k(B - ID $B$,;H$o$l$^$9!#(B</p> + <p>各リクエストを識別するために、リクエストには + 一意なリクエスト ID が割り当てられます。この forensic ID は + フォーマット文字列 <code>%{forensic-id}n</code> を使うことで + 通常の transfer ログにログ収集することもできます。 + <module>mod_unique_id</module> を使っている場合は、それが生成する + ID が使われます。</p> - <p>$B:G=i$N9T$O(B forensic ID$B!"%j%/%(%9%H9T$H<u$1<h$C$?$9$Y$F$N%X%C%@$r(B - $B%Q%$%WJ8;z(B (<code>|</code>) $B$GJ,N%$7$F%m%0<}=8$7$^$9!#(B - $BNc$($P0J2<$N$h$&$K$J$j$^$9(B ($B<B:]$O$9$Y$FF1$89T$K$J$j$^$9(B):</p> + <p>最初の行は forensic ID、リクエスト行と受け取ったすべてのヘッダを + パイプ文字 (<code>|</code>) で分離してログ収集します。 + 例えば以下のようになります (実際はすべて同じ行になります):</p> <example> +yQtJf8CoAB4AAFNXBIEAAAAA|GET /manual/de/images/down.gif @@ -75,71 +75,71 @@ Firefox/0.8|Accept:image/png, <var>etc...</var> </example> - <p>$B:G=i$N%W%i%9J8;z$,$3$N%m%0$O:G=i$N%m%0$G$"$k$3$H$r<($7$^$9!#(B - $BFsHVL\$N9T$O%^%$%J%9J8;z$H(B ID $B$N$_$G$9(B:</p> + <p>最初のプラス文字がこのログは最初のログであることを示します。 + 二番目の行はマイナス文字と ID のみです:</p> <example> -yQtJf8CoAB4AAFNXBIEAAAAA </example> - <p><code>check_forensic</code> $B%9%/%j%W%H$O0z?t$H$7$F%m%0%U%!%$%k$NL>A0$r(B - $B<h$j$^$9!#(B<code>+</code>/<code>-</code> $B$N(B ID $B$NAH$rD4$Y!"40N;$7$F$$$J$$(B - $B%j%/%(%9%H$,$"$k>l9g$O7Y9p$rH/$7$^$9!#(B</p> + <p><code>check_forensic</code> スクリプトは引数としてログファイルの名前を + 取ります。<code>+</code>/<code>-</code> の ID の組を調べ、完了していない + リクエストがある場合は警告を発します。</p> </section> -<section id="security"><title>$B%;%-%e%j%F%#$NLdBj(B</title> - <p>$B%m%0%U%!%$%k$,J]B8$5$l$k%G%#%l%/%H%j$,%5!<%P$r5/F0$7$?%f!<%6(B - $B0J30$G=q$-9~$_2DG=$K$J$C$F$$$k$H$-$K%;%-%e%j%F%#$,GK$i$l$k2DG=@-$,(B - $B$"$k$3$H$K$D$$$F$N>\:Y$O(B<a - href="../misc/security_tips.html#serverroot">$B%;%-%e%j%F%#$N$3$D(B</a>$B$r(B - $B;2>H$7$F$/$@$5$$!#(B</p> +<section id="security"><title>セキュリティの問題</title> + <p>ログファイルが保存されるディレクトリがサーバを起動したユーザ + 以外で書き込み可能になっているときにセキュリティが破られる可能性が + あることについての詳細は<a + href="../misc/security_tips.html#serverroot">セキュリティのこつ</a>を + 参照してください。</p> </section> <directivesynopsis> <name>ForensicLog</name> -<description>Forensic $B%m%0$N%U%!%$%kL>$r@_Dj$9$k(B</description> +<description>Forensic ログのファイル名を設定する</description> <syntax>ForensicLog <var>filename</var>|<var>pipe</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>ForensicLog</directive> $B%G%#%l%/%F%#%V$O(B forensic $B2r@O$N$?$a$N(B - $B%5!<%P$X$N%j%/%(%9%H$r%m%0<}=8$K;H$$$^$9!#(B - $B3F%m%0%(%s%H%j$K$O!"IaDL$N(B <directive module="mod_log_config" - >CustomLog</directive> $B%G%#%l%/%F%#%V$r;H$C$F%j%/%(%9%H$H4XO"IU$1$k$3$H$N(B - $B$G$-$k(B - $B0l0U$J(B ID $B$,3d$jEv$F$i$l$^$9!#(B<module>mod_log_forensic</module> $B$O(B - <code>forensic-id</code> $B$H$$$&%H!<%/%s$r:n@.$7!"%U%)!<%^%C%HJ8;zNs(B - <code>%{forensic-id}n</code> $B$r;H$&$3$H$G$=$N%H!<%/%s$r(B transfer $B%m%0$K(B - $BDI2C$9$k$3$H$,$G$-$^$9!#(B</p> - - <p>$B0z?t$O%m%0$,=q$-=P$5$l$k0LCV$r;XDj$7!"0J2<$N(B 2$B<oN`$NCM$N$I$A$i$+$r(B - $B<h$k$3$H$,$G$-$^$9(B:</p> + <p><directive>ForensicLog</directive> ディレクティブは forensic 解析のための + サーバへのリクエストをログ収集に使います。 + 各ログエントリには、普通の <directive module="mod_log_config" + >CustomLog</directive> ディレクティブを使ってリクエストと関連付けることの + できる + 一意な ID が割り当てられます。<module>mod_log_forensic</module> は + <code>forensic-id</code> というトークンを作成し、フォーマット文字列 + <code>%{forensic-id}n</code> を使うことでそのトークンを transfer ログに + 追加することができます。</p> + + <p>引数はログが書き出される位置を指定し、以下の 2種類の値のどちらかを + 取ることができます:</p> <dl> <dt><var>filename</var></dt> - <dd><directive module="core">ServerRoot</directive> $B$+$i$N(B - $BAjBP%U%!%$%kL>(B</dd> + <dd><directive module="core">ServerRoot</directive> からの + 相対ファイル名</dd> <dt><var>pipe</var></dt> - <dd>$B%Q%$%WJ8;z(B "<code>|</code>" $B$H!"$=$N8e$K%m%0>pJs$rI8=`F~NO$+$i(B - $B<u$1<h$k%W%m%0%i%`!#%W%m%0%i%`L>$O(B <directive - module="core">ServerRoot</directive> $B$+$i$NAjBP%Q%9$H$7$F$b(B - $B;XDj$G$-$^$9!#(B - - <note type="warning"><title>$B%;%-%e%j%F%#(B:</title> - <p>$B%W%m%0%i%`$r;H$&>l9g!"$=$N%W%m%0%i%`$O(B <program>httpd</program> $B$r5/F0$7$?%f!<%6$G(B - $B<B9T$5$l$^$9!#$D$^$j!"%5!<%P$,(B root $B$G<B9T$5$l$?>l9g$O(B root $B$G(B - $B<B9T$5$l$k$H$$$&$3$H$G$9!#%W%m%0%i%`$,0BA4$G$"$k$+!"$h$j8"8B$N>/$J$$(B - $B%f!<%6$K@Z$jBX$($k$h$&$K$J$C$F$$$k$3$H$r3N$+$a$F$/$@$5$$!#(B</p> + <dd>パイプ文字 "<code>|</code>" と、その後にログ情報を標準入力から + 受け取るプログラム。プログラム名は <directive + module="core">ServerRoot</directive> からの相対パスとしても + 指定できます。 + + <note type="warning"><title>セキュリティ:</title> + <p>プログラムを使う場合、そのプログラムは <program>httpd</program> を起動したユーザで + 実行されます。つまり、サーバが root で実行された場合は root で + 実行されるということです。プログラムが安全であるか、より権限の少ない + ユーザに切り替えるようになっていることを確かめてください。</p> </note> - <note><title>$BCm(B</title> - <p>Unix $B0J30$N%W%i%C%H%U%)!<%`$G%U%!%$%kL>$rF~NO$9$k$H$-$O!"(B - $B%W%i%C%H%U%)!<%`$,%P%C%/%9%i%C%7%e$N;HMQ$r5v2D$7$F$$$k>l9g$G$b!"(B - $B%9%i%C%7%e$N$_$,;H$o$l$k$h$&$K5$$r$D$1$F$/$@$5$$!#(B - $BIaDL$O@_Dj%U%!%$%k$9$Y$F$K$*$$$F!"%9%i%C%7%e$NJ}$r;HMQ$9$k$h$&$K(B - $B$7$F$/$@$5$$!#(B</p> + <note><title>注</title> + <p>Unix 以外のプラットフォームでファイル名を入力するときは、 + プラットフォームがバックスラッシュの使用を許可している場合でも、 + スラッシュのみが使われるように気をつけてください。 + 普通は設定ファイルすべてにおいて、スラッシュの方を使用するように + してください。</p> </note></dd> </dl> </usage> diff --git a/docs/manual/mod/mod_logio.xml.ja b/docs/manual/mod/mod_logio.xml.ja index bf835de544..d273f3a135 100644 --- a/docs/manual/mod/mod_logio.xml.ja +++ b/docs/manual/mod/mod_logio.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:630289 (outdated) --> @@ -23,52 +23,52 @@ <modulesynopsis metafile="mod_logio.xml.meta"> <name>mod_logio</name> -<description>$B%j%/%(%9%HKh$KF~NO%P%$%H?t$H=PNO%P%$%H?t$H$r%m%.%s%0(B</description> +<description>リクエスト毎に入力バイト数と出力バイト数とをロギング</description> <status>Extension</status> <sourcefile>mod_logio.c</sourcefile> <identifier>logio_module</identifier> <summary> - <p>$B$3$N%b%8%e!<%k$O%j%/%(%9%H$4$H$K<u$1<h$C$?%P%$%H?t$H(B - $BAw?.$7$?%P%$%H?t$N%m%.%s%0$r9T$J$&5!G=$rDs6!$7$^$9!#(B - $B5-O?$5$l$k?t;z$O%j%/%(%9%H$N%X%C%@$H%l%9%]%s%9$NK\BN$r(B - $BH?1G$7$?!"<B:]$K%M%C%H%o!<%/$G<u$1<h$C$?%P%$%HCM$G$9!#(B - $BF~NO$G$O(B SSL/TLS $B$NA0$K!"=PNO$G$O(B SSL/TLS $B$N8e$K?t$($k$N$G!"(B - $B?t;z$O0E9f$K$h$kJQ2=$b@5$7$/H?1G$7$?$b$N$K$J$j$^$9!#(B</p> + <p>このモジュールはリクエストごとに受け取ったバイト数と + 送信したバイト数のロギングを行なう機能を提供します。 + 記録される数字はリクエストのヘッダとレスポンスの本体を + 反映した、実際にネットワークで受け取ったバイト値です。 + 入力では SSL/TLS の前に、出力では SSL/TLS の後に数えるので、 + 数字は暗号による変化も正しく反映したものになります。</p> - <p>$B$3$N%b%8%e!<%k$N;HMQ$K$O(B <module>mod_log_config</module> $B%b%8%e!<%k$,(B - $BI,MW$G$9!#(B</p> + <p>このモジュールの使用には <module>mod_log_config</module> モジュールが + 必要です。</p> </summary> <seealso><module>mod_log_config</module></seealso> -<seealso><a href="../logs.html">Apache $B%m%0%U%!%$%k(B</a></seealso> +<seealso><a href="../logs.html">Apache ログファイル</a></seealso> <section id="formats"> -<title>$B%+%9%?%`%m%0=q<0(B</title> +<title>カスタムログ書式</title> - <p>$B$3$N%b%8%e!<%k$O?7$7$$%m%.%s%0MQ%G%#%l%/%F%#%V$r2C$($^$9!#(B - $B%j%/%(%9%H<+?H$NFCD'$O%U%)!<%^%C%HJ8;zNs$K!"0J2<$NMM$KCV49$5$l$k(B - "<code>%</code>" $B%G%#%l%/%F%#%V$r(B - $BF~$l$k$3$H$G%m%0<}=8$5$l$^$9(B:</p> + <p>このモジュールは新しいロギング用ディレクティブを加えます。 + リクエスト自身の特徴はフォーマット文字列に、以下の様に置換される + "<code>%</code>" ディレクティブを + 入れることでログ収集されます:</p> <table border="1" style="zebra"> - <tr><th>$B%U%)!<%^%C%HJ8;zNs(B</th> - <th>$B@bL@(B</th></tr> + <tr><th>フォーマット文字列</th> + <th>説明</th></tr> <tr><td><code>%...I</code></td> - <td>$B%j%/%(%9%H$H%X%C%@$r4^$`!"<u$1<h$C$?%P%$%H?t!#(B - 0 $B$K$O$J$i$J$$!#(B</td></tr> + <td>リクエストとヘッダを含む、受け取ったバイト数。 + 0 にはならない。</td></tr> <tr><td><code>%...O</code></td> - <td>$B%X%C%@$r4^$`!"Aw?.$7$?%P%$%H?t!#(B0 $B$K$O$J$i$J$$!#(B</td></tr> + <td>ヘッダを含む、送信したバイト数。0 にはならない。</td></tr> </table> - <p>$BDL>o!"$3$N5!G=$O0J2<$NMM$K;HMQ$5$l$^$9(B:</p> + <p>通常、この機能は以下の様に使用されます:</p> <dl> - <dt>$B7k9g(B I/O $B%m%0=q<0(B:</dt> + <dt>結合 I/O ログ書式:</dt> <dd><code>"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %I %O"</code></dd> </dl> diff --git a/docs/manual/mod/mod_mem_cache.xml.ja b/docs/manual/mod/mod_mem_cache.xml.ja index 55d93f3f65..f63ca2bca9 100644 --- a/docs/manual/mod/mod_mem_cache.xml.ja +++ b/docs/manual/mod/mod_mem_cache.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:656733 (outdated) --> @@ -23,77 +23,77 @@ <modulesynopsis metafile="mod_mem_cache.xml.meta"> <name>mod_mem_cache</name> -<description>URI $B$r%-!<$K$7$?%3%s%F%s%D$N%-%c%C%7%e(B</description> +<description>URI をキーにしたコンテンツのキャッシュ</description> <status>Extension</status> <sourcefile>mod_mem_cache.c</sourcefile> <identifier>mem_cache_module</identifier> <summary> - <p>$B$3$N%b%8%e!<%k$O(B <module>mod_cache</module> $B$r(B<em>$BI,MW$H$7$^$9(B</em>$B!#(B - $B$3$l$O(B <module>mod_cache</module> $B$N%5%]!<%H%b%8%e!<%k$H$7$F(B - $BF0:n$7!"%a%b%j$r;HMQ$7$?%9%H%l!<%84IM}5!9=$rDs6!$7$^$9!#(B - <module>mod_mem_cache</module> $B$OFs$D$N%b!<%I$N$I$A$i$+$GF0:n$9$k$h$&$K(B - $B@_Dj$G$-$^$9(B: $B%U%!%$%k5-=R;R$N%-%c%C%7%e$+%R!<%WCf$N%*%V%8%'%/%H$N(B - $B%-%c%C%7%e$G$9!#%m!<%+%k$G@8@.$5$l$?%3%s%F%s%D$KBP$7$F%-%c%C%7%e$9$k$H$-$d!"(B - <module>mod_proxy</module> $B$r;H$C$F(B <directive - module="mod_proxy">ProxyPass</directive> ($B$D$^$j(B<dfn>$B%j%P!<%9%W%m%-%7(B</dfn - >$B8~$1(B) $B$K@_Dj$7$?$H$-$N%P%C%/%(%s%I%5!<%P$N%3%s%F%s%D$KBP$7$F(B - $B%-%c%C%7%e$r$9$k$H$-$K!"$?$$$X$s8z2LE*$G$9!#(B</p> - - <p>$B%3%s%F%s%D$N%-%c%C%7%e$X$NJ]B8$H<hF@$O(B URI $B$K4p$E$$$?%-!<$,;H$o$l$^$9!#(B - $B%"%/%;%9J]8n$N$+$1$i$l$F$$$k%3%s%F%s%D$O%-%c%C%7%e$5$l$^$;$s!#(B</p> + <p>このモジュールは <module>mod_cache</module> を<em>必要とします</em>。 + これは <module>mod_cache</module> のサポートモジュールとして + 動作し、メモリを使用したストレージ管理機構を提供します。 + <module>mod_mem_cache</module> は二つのモードのどちらかで動作するように + 設定できます: ファイル記述子のキャッシュかヒープ中のオブジェクトの + キャッシュです。ローカルで生成されたコンテンツに対してキャッシュするときや、 + <module>mod_proxy</module> を使って <directive + module="mod_proxy">ProxyPass</directive> (つまり<dfn>リバースプロキシ</dfn + >向け) に設定したときのバックエンドサーバのコンテンツに対して + キャッシュをするときに、たいへん効果的です。</p> + + <p>コンテンツのキャッシュへの保存と取得は URI に基づいたキーが使われます。 + アクセス保護のかけられているコンテンツはキャッシュされません。</p> </summary> <seealso><module>mod_cache</module></seealso> <seealso><module>mod_disk_cache</module></seealso> <directivesynopsis> <name>MCacheSize</name> -<description>$B%-%c%C%7%e$K;H$o$l$k%a%b%j$N:GBgNL$r%P%$%HC10L$G;XDj(B</description> +<description>キャッシュに使われるメモリの最大量をバイト単位で指定</description> <syntax>MCacheSize <var>KBytes</var></syntax> <default>MCacheSize 100</default> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>MCacheSize</directive> $B%G%#%l%/%F%#%V$O%-%c%C%7%e$K(B - $B;H$o$l$k%a%b%j$NBg$-$5$r%-%m%P%$%H(B (1024 $B%P%$%HC10L(B) $B$G@_Dj$7$^$9!#(B - $B?7$7$$%*%V%8%'%/%H$r%-%c%C%7%e$KA^F~$9$k$3$H$K$J$j!"%*%V%8%'%/%H$N(B - $B%5%$%:$,;D$j$N%a%b%j$h$jBg$-$$>l9g$O!"$=$N?7$7$$%*%V%8%'%/%H$NA^F~$,(B - $B2DG=$K$J$k$^$G!"8E$$%*%V%8%'%/%H$,:o=|$5$l$F$$$-$^$9!#(B - $B%*%V%8%'%/%H$O(B <directive + <p><directive>MCacheSize</directive> ディレクティブはキャッシュに + 使われるメモリの大きさをキロバイト (1024 バイト単位) で設定します。 + 新しいオブジェクトをキャッシュに挿入することになり、オブジェクトの + サイズが残りのメモリより大きい場合は、その新しいオブジェクトの挿入が + 可能になるまで、古いオブジェクトが削除されていきます。 + オブジェクトは <directive module="mod_mem_cache">MCacheRemovalAlgorithm</directive> - $B$G;XDj$7$?%"%k%4%j%:%`$K=>$C$F:o=|$5$l$^$9!#(B</p> + で指定したアルゴリズムに従って削除されます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> MCacheSize 700000 </example> - <note><title>$BCm(B</title> - <p><directive>MCacheSize</directive> $B$NCM$O(B <directive module="mod_mem_cache" - >MCacheMaxObjectSize</directive> $B%G%#%l%/%F%#%V$G;XDj$7$?CM$h$j(B - $BBg$-$/$J$1$l$P$J$j$^$;$s!#(B</p> + <note><title>注</title> + <p><directive>MCacheSize</directive> の値は <directive module="mod_mem_cache" + >MCacheMaxObjectSize</directive> ディレクティブで指定した値より + 大きくなければなりません。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>MCacheMaxObjectCount</name> -<description>$B%-%c%C%7%e$KJ]4I$5$l$k%*%V%8%'%/%H$N:GBg?t(B</description> +<description>キャッシュに保管されるオブジェクトの最大数</description> <syntax>MCacheMaxObjectCount <var>value</var></syntax> <default>MCacheMaxObjectCount 1009</default> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>MCacheMaxObjectCount</directive> $B%G%#%l%/%F%#%V$O(B - $B%-%c%C%7%e$5$l$k%*%V%8%'%/%H$N:GBg?t$r;XDj$7$^$9!#(B - $B$3$NCM$O%O%C%7%e%F!<%V%k$r:n@.$9$k$H$-$K;H$o$l$^$9!#(B - $B?7$7$$%*%V%8%'%/%H$rA^F~$9$k$H$-$K!"%*%V%8%'%/%H$N:GBg?t$K(B - $BC#$7$F$7$^$C$F$$$k$H$-!"?7$7$$%*%V%8%'%/%H$r%-%c%C%7%e$G$-$k$h$&$K!"(B - $B%*%V%8%'%/%H$r0l$D>C5n$7$^$9!#%*%V%8%'%/%H$O(B + <p><directive>MCacheMaxObjectCount</directive> ディレクティブは + キャッシュされるオブジェクトの最大数を指定します。 + この値はハッシュテーブルを作成するときに使われます。 + 新しいオブジェクトを挿入するときに、オブジェクトの最大数に + 達してしまっているとき、新しいオブジェクトをキャッシュできるように、 + オブジェクトを一つ消去します。オブジェクトは <directive module="mod_mem_cache">MCacheRemovalAlgorithm</directive> - $B$G;XDj$5$l$?%"%k%4%j%:%`$K=>$C$F:o=|$5$l$^$9!#(B</p> + で指定されたアルゴリズムに従って削除されます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> MCacheMaxObjectCount 13001 </example> </usage> @@ -101,16 +101,16 @@ <directivesynopsis> <name>MCacheMinObjectSize</name> -<description>$B%-%c%C%7%e$KJ]4I$5$l$k%I%-%e%a%s%H$N:G>.%5%$%:(B ($B%P%$%H(B)</description> +<description>キャッシュに保管されるドキュメントの最小サイズ (バイト)</description> <syntax>MCacheMinObjectSize <var>bytes</var></syntax> <default>MCacheMinObjectSize 0</default> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>MCacheMinObjectSize</directive> $B%G%#%l%/%F%#%V$O!"%I%-%e%a%s%H$r(B - $B%-%c%C%7%e$9$k$+$I$&$+$rH=Dj$9$k!":G>.$N%5%$%:$r%P%$%H?t$G@_Dj$7$^$9!#(B</p> + <p><directive>MCacheMinObjectSize</directive> ディレクティブは、ドキュメントを + キャッシュするかどうかを判定する、最小のサイズをバイト数で設定します。</p> - <example><title>$BNc(B</title> + <example><title>例</title> MCacheMinObjectSize 10000 </example> </usage> @@ -118,51 +118,51 @@ <directivesynopsis> <name>MCacheMaxObjectSize</name> -<description>$B%-%c%C%7%e$KJ]4I$G$-$k%I%-%e%a%s%H$N:GBg%5%$%:(B ($B%P%$%H(B)</description> +<description>キャッシュに保管できるドキュメントの最大サイズ (バイト)</description> <syntax>MCacheMaxObjectSize <var>bytes</var></syntax> <default>MCacheMaxObjectSize 10000</default> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>MCacheMaxObjectSize</directive> $B$O%I%-%e%a%s%H$r(B - $B%-%c%C%7%e$9$k$+$I$&$+$rH=Dj$9$k!":GBg$N%5%$%:$r%P%$%H?t$G@_Dj$7$^$9!#(B</p> + <p><directive>MCacheMaxObjectSize</directive> はドキュメントを + キャッシュするかどうかを判定する、最大のサイズをバイト数で設定します。</p> - <example><title>$BNc(B</title> + <example><title>例</title> MCacheMaxObjectSize 6400000 </example> - <note><title>$BCm(B</title> - <p><directive>MCacheMaxObjectSize</directive> $B$NCM$O(B <directive + <note><title>注</title> + <p><directive>MCacheMaxObjectSize</directive> の値は <directive module="mod_mem_cache">MCacheMinObjectSize</directive> - $B$G;XDj$7$?CM$h$j$bBg$-$/$J$1$l$P$J$j$^$;$s!#(B</p> + で指定した値よりも大きくなければなりません。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>MCacheRemovalAlgorithm</name> -<description>$B%-%c%C%7%e$+$i:o=|$9$k%I%-%e%a%s%H$rA*$V$?$a$N%"%k%4%j%:%`(B</description> +<description>キャッシュから削除するドキュメントを選ぶためのアルゴリズム</description> <syntax>MCacheRemovalAlgorithm LRU|GDSF</syntax> <default>MCacheRemovalAlgorithm GDSF</default> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>MCacheRemovalAlgorithm</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%-%c%C%7%e$+$i:o=|$9$k%I%-%e%a%s%H$rA*Br$9$k$?$a$N%"%k%4%j%:%`$r(B - $B;XDj$7$^$9!#A*Br;h$OFs$D$"$j$^$9(B:</p> + <p><directive>MCacheRemovalAlgorithm</directive> ディレクティブは、 + キャッシュから削除するドキュメントを選択するためのアルゴリズムを + 指定します。選択肢は二つあります:</p> <dl> <dt><code>LRU</code> (Least Recently Used)</dt> - <dd><code>LRU</code> $B0lHVD9$/%"%/%;%9$5$l$F$$$J$$%I%-%e%a%s%H$r:o=|$7$^$9!#(B + <dd><code>LRU</code> 一番長くアクセスされていないドキュメントを削除します。 </dd> <dt><code>GDSF</code> (GreadyDual-Size)</dt> - <dd><code>GDSF</code> $B$O%-%c%C%7%e%_%9$N%3%9%H$H%I%-%e%a%s%H$N%5%$%:$r$b$H$K!"(B - $B%I%-%e%a%s%H$N%-%c%C%7%e$KBP$7$FM%@hEY$r$D$1$^$9!#(B - $BM%@hEY$N0lHVDc$$%I%-%e%a%s%H$,:G=i$K:o=|$5$l$^$9!#(B</dd> + <dd><code>GDSF</code> はキャッシュミスのコストとドキュメントのサイズをもとに、 + ドキュメントのキャッシュに対して優先度をつけます。 + 優先度の一番低いドキュメントが最初に削除されます。</dd> </dl> - <example><title>$BNc(B</title> + <example><title>例</title> MCacheRemovalAlgorithm GDSF<br /> MCacheRemovalAlgorithm LRU </example> @@ -171,36 +171,36 @@ <directivesynopsis> <name>MCacheMaxStreamingBuffer</name> -<description>$B%9%H%j!<%`$5$l$F$$$k1~Ez$r%-%c%C%7%eITG=$H7hDj$9$k$^$G$K(B -$B%a%b%j$K%P%C%U%!$9$k:GBgNL(B</description> +<description>ストリームされている応答をキャッシュ不能と決定するまでに +メモリにバッファする最大量</description> <syntax>MCacheMaxStreamingBuffer <var>size_in_bytes</var></syntax> -<default>MCacheMaxStreamingBuffer of 100000 $B$+(B MCacheMaxObjectSize $B$N>/$$J}(B</default> +<default>MCacheMaxStreamingBuffer of 100000 か MCacheMaxObjectSize の少い方</default> <contextlist><context>server config</context> </contextlist> <usage> - <p><directive>MCacheMaxStreamingBuffer</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%5%$%:$,Bg$-$9$.$F%-%c%C%7%e$G$-$J$$$HH=CG$9$k$^$G$N!"(B - $B%9%H%j!<%`1~Ez$N%P%C%U%!$N$?$a$N:GBg%P%$%H?t$r;XDj$7$^$9!#(B - $B%9%H%j!<%`1~Ez$H$O!"%3%s%F%s%D$NA4BN$,$9$0$K$OF@$i$l$:!"(B - <code>Content-Length</code> $B$,$o$+$i$J$$1~Ez$r;X$7$^$9!#(B - $B%9%H%j!<%`1~Ez$r9T$J$&$h$&$J$b$N$K$O%W%m%-%7$5$l$?1~Ez$d!"(B - CGI $B%9%/%j%W%H$N=PNO$J$I$,$"$j$^$9!#%G%U%)%k%H$G$O%9%H%j!<%`$N1~Ez$O(B - <code>Content-Length</code> $B$,$J$$8B$j%-%c%C%7%e(B<em>$B$5$l$^$;$s(B</em>$B!#(B - $B$3$N$h$&$JF0:n$K$J$C$F$$$kM}M3$O!"7k6I%-%c%C%7%e$K<}$^$j$-$i$J$$$H(B - $BH=CG$9$k$3$H$K$J$C$F$7$^$&$h$&$J!"%5%$%:$NBg$-$J1~Ez$N%P%C%U%!%j%s%0$K!"(B - $BBgNL$N%a%b%j$,>CHq$5$l$k$N$rHr$1$k$?$a$G$9!#(B - <directive>MCacheMaxStreamingBuffer</directive> $B%G%#%l%/%F%#%V$r;H$&$H!"(B - <code>Content-Length</code> $B$r4^$^$J$$1~Ez$KBP$7$F;XDj$5$l$?:GBgNL$^$G(B - $B%P%C%U%!$9$k$h$&$K$G$-$^$9!#%P%C%U%!$r;H$$@Z$k$H!"%P%C%U%!Cf$N(B - $B%3%s%F%s%D$O<N$F$i$l!"%-%c%C%7%eF0:n$rCf;_$7$^$9!#(B</p> - - <note><title>$BCm(B:</title> - <p><directive>MCacheMaxStreamingBuffer</directive> $B$KHsNm$NCM$r(B - $B;H$C$F$b!"%/%i%$%"%s%H$X$N1~Ez$NE>Aw$KFC$KCY1d$OH/@8$7$^$;$s!#(B - <module>mod_mem_cache</module> $B$O%9%H%j!<%`%3%s%F%s%D$NCGJR$r(B - $B%P%C%U%!$K%3%T!<$7$?8e!"B(:B$K!"$=$NItJ,$r%/%i%$%"%s%H$X$NG[Aw$N(B - $B<!CJ$N=PNO%U%#%k%?$KAw$j$^$9!#(B</p> + <p><directive>MCacheMaxStreamingBuffer</directive> ディレクティブは、 + サイズが大きすぎてキャッシュできないと判断するまでの、 + ストリーム応答のバッファのための最大バイト数を指定します。 + ストリーム応答とは、コンテンツの全体がすぐには得られず、 + <code>Content-Length</code> がわからない応答を指します。 + ストリーム応答を行なうようなものにはプロキシされた応答や、 + CGI スクリプトの出力などがあります。デフォルトではストリームの応答は + <code>Content-Length</code> がない限りキャッシュ<em>されません</em>。 + このような動作になっている理由は、結局キャッシュに収まりきらないと + 判断することになってしまうような、サイズの大きな応答のバッファリングに、 + 大量のメモリが消費されるのを避けるためです。 + <directive>MCacheMaxStreamingBuffer</directive> ディレクティブを使うと、 + <code>Content-Length</code> を含まない応答に対して指定された最大量まで + バッファするようにできます。バッファを使い切ると、バッファ中の + コンテンツは捨てられ、キャッシュ動作を中止します。</p> + + <note><title>注:</title> + <p><directive>MCacheMaxStreamingBuffer</directive> に非零の値を + 使っても、クライアントへの応答の転送に特に遅延は発生しません。 + <module>mod_mem_cache</module> はストリームコンテンツの断片を + バッファにコピーした後、即座に、その部分をクライアントへの配送の + 次段の出力フィルタに送ります。</p> </note> <example> diff --git a/docs/manual/mod/mod_mime.xml.ja b/docs/manual/mod/mod_mime.xml.ja index f72818bd5e..ff4a0a504f 100644 --- a/docs/manual/mod/mod_mime.xml.ja +++ b/docs/manual/mod/mod_mime.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 193037:659902 (outdated) --> @@ -23,69 +23,69 @@ <modulesynopsis metafile="mod_mime.xml.meta"> <name>mod_mime</name> -<description>$B%j%/%(%9%H$5$l$?%U%!%$%k$N3HD%;R$H%U%!%$%k$N?6$kIq$$(B - ($B%O%s%I%i$H%U%#%k%?(B)$B!"FbMF(B (MIME $B%?%$%W!"8@8l!"J8;z%;%C%H!"%(%s%3!<%G%#%s%0(B) - $B$H$r4XO"IU$1$k(B</description> +<description>リクエストされたファイルの拡張子とファイルの振る舞い + (ハンドラとフィルタ)、内容 (MIME タイプ、言語、文字セット、エンコーディング) + とを関連付ける</description> <status>Base</status> <sourcefile>mod_mime.c</sourcefile> <identifier>mime_module</identifier> <summary> - <p>$B$3$N%b%8%e!<%k$O3HD%;R$r;H$C$F$$$m$$$m$J!V%a%?>pJs!W$r%U%!%$%k$K(B - $B4XO"IU$1$k$?$a$K;HMQ$5$l$^$9!#$3$N>pJs$O%I%-%e%a%s%H$N%U%!%$%kL>$H(B - MIME $B%?%$%W!"8@8l!"J8;z%;%C%H!"%(%s%3!<%G%#%s%0$H$r4XO"IU$1$^$9!#(B - $B$3$N>pJs$O%V%i%&%6$KAw$i$l$^$9$7!"J#?t$N%U%!%$%k$NCf$+$i%f!<%6$N9%$_$N(B - $B$b$N$,A*$P$l$k$h$&$K!"%3%s%F%s%H%M%4%7%(!<%7%g%s$G$b;H$o$l$^$9!#(B - <a href="../content-negotiation.html">$B%3%s%F%s%H%M%4%7%(!<%7%g%s(B</a> - $B$K4X$9$k>\$7$$>pJs$O(B <module>mod_negotiation</module> - $B$r$4Mw2<$5$$!#(B</p> - - <p><directive module="mod_mime">AddCharset</directive> $B%G%#%l%/%F%#%V!"(B - <directive module="mod_mime">AddEncoding</directive> $B%G%#%l%/%F%#%V!"(B - <directive module="mod_mime">AddHandler</directive> $B%G%#%l%/%F%#%V!"(B - <directive module="mod_mime">AddLanguage</directive> $B%G%#%l%/%F%#%V!"(B - <directive module="mod_mime">AddType</directive> $B%G%#%l%/%F%#%V$O$9$Y$F!"(B - $B%U%!%$%k$N3HD%;R$r%a%?>pJs$K%^%C%W$9$k$?$a$K;HMQ$5$l$^$9!#(B - $B$=$l$>$l!"%I%-%e%a%s%H$NJ8;z%;%C%H(B ($BLuCm(B: charset)$B!"(Bcontent-encoding, - content-language, MIME $B%?%$%W(B (content-type) $B$r@_Dj$7$^$9!#(B - <directive module="mod_mime">TypesConfig</directive> $B%G%#%l%/%F%#%V$O3HD%;R$r(B - MIME $B%?%$%W$K%^%C%W$9$k%U%!%$%k$r;XDj$9$k$?$a$K;HMQ$5$l$^$9!#(B</p> - - <p>$B$5$i$K!"(B<module>mod_mime</module> $B$O%3%s%F%s%D$r:n@.!"=hM}$9$k(B - <a href="../handler.html">$B%O%s%I%i(B</a> $B$H(B <a href="../filter.html">$B%U%#%k%?(B</a> - $B$r@_Dj$9$k$3$H$,$G$-$^$9!#(B<directive - module="mod_mime">AddHandler</directive> $B%G%#%l%/%F%#%V!"(B<directive - module="mod_mime">AddOutputFilter</directive> $B%G%#%l%/%F%#%V!"(B<directive - module="mod_mime">AddInputFilter</directive> $B%G%#%l%/%F%#%V$O(B - $B%I%-%e%a%s%H$r07$&%b%8%e!<%k$d%9%/%j%W%H$r@)8f$7$^$9!#(B - <directive module="mod_mime">MultiviewsMatch</directive> $B%G%#%l%/%F%#%V$O(B - $B$3$l$i$N%G%#%l%/%F%#%V$,;XDj$7$?%U%!%$%k$N3HD%;R$r(B - <module>mod_negotiation</module> $B$,(B Multiviews $B$N%^%C%A$r$H$k$H$-$K(B - $B9MN8$9$k$h$&$K$G$-$^$9!#(B</p> - - <p><module>mod_mime</module> $B$O%a%?>pJs$r%U%!%$%kL>$H4XO"IU$1$^$9$,!"(B - <module>core</module> $B%5!<%P$K$O$"$k%3%s%F%J(B - (<em>$B$?$H$($P(B</em>, <directive type="section" + <p>このモジュールは拡張子を使っていろいろな「メタ情報」をファイルに + 関連付けるために使用されます。この情報はドキュメントのファイル名と + MIME タイプ、言語、文字セット、エンコーディングとを関連付けます。 + この情報はブラウザに送られますし、複数のファイルの中からユーザの好みの + ものが選ばれるように、コンテントネゴシエーションでも使われます。 + <a href="../content-negotiation.html">コンテントネゴシエーション</a> + に関する詳しい情報は <module>mod_negotiation</module> + をご覧下さい。</p> + + <p><directive module="mod_mime">AddCharset</directive> ディレクティブ、 + <directive module="mod_mime">AddEncoding</directive> ディレクティブ、 + <directive module="mod_mime">AddHandler</directive> ディレクティブ、 + <directive module="mod_mime">AddLanguage</directive> ディレクティブ、 + <directive module="mod_mime">AddType</directive> ディレクティブはすべて、 + ファイルの拡張子をメタ情報にマップするために使用されます。 + それぞれ、ドキュメントの文字セット (訳注: charset)、content-encoding, + content-language, MIME タイプ (content-type) を設定します。 + <directive module="mod_mime">TypesConfig</directive> ディレクティブは拡張子を + MIME タイプにマップするファイルを指定するために使用されます。</p> + + <p>さらに、<module>mod_mime</module> はコンテンツを作成、処理する + <a href="../handler.html">ハンドラ</a> と <a href="../filter.html">フィルタ</a> + を設定することができます。<directive + module="mod_mime">AddHandler</directive> ディレクティブ、<directive + module="mod_mime">AddOutputFilter</directive> ディレクティブ、<directive + module="mod_mime">AddInputFilter</directive> ディレクティブは + ドキュメントを扱うモジュールやスクリプトを制御します。 + <directive module="mod_mime">MultiviewsMatch</directive> ディレクティブは + これらのディレクティブが指定したファイルの拡張子を + <module>mod_negotiation</module> が Multiviews のマッチをとるときに + 考慮するようにできます。</p> + + <p><module>mod_mime</module> はメタ情報をファイル名と関連付けますが、 + <module>core</module> サーバにはあるコンテナ + (<em>たとえば</em>, <directive type="section" module="core">Location</directive>, <directive type="section" module="core">Directory</directive>, <directive type="section" - module="core">Files</directive>) $B$NCf$N$9$Y$F$N%U%!%$%k$rFCDj$N(B - $B%a%?>pJs$H4XO"IU$1$k%G%#%l%/%F%#%V$,$"$j$^$9!#$3$l$i$N%G%#%l%/%F%#%V$K$O(B + module="core">Files</directive>) の中のすべてのファイルを特定の + メタ情報と関連付けるディレクティブがあります。これらのディレクティブには <directive module="core">ForceType</directive>, <directive module="core">SetHandler</directive>, <directive module="core">SetInputFilter</directive>, <directive - module="core">SetOutputFilter</directive> $B$,$"$j$^$9!#(B - $B%3%"$N%G%#%l%/%F%#%V$O(B <module>mod_mime</module> $B$K$h$jDj5A$5$l$?(B - $B%U%!%$%kL>$N3HD%;R$N%^%C%T%s%0$9$Y$F$r>e=q$-$7$^$9!#(B</p> - - <p>$B%U%!%$%k$N%a%?>pJs$rJQ$($F$b(B <code>Last-Modified</code> - $B%X%C%@$NCM$OJQ$o$i$J$$$3$H$KCm0U$7$F$/$@$5$$!#$G$9$+$i!"(B - $B$=$l$i$rJQ99$7$?>l9g$O!"%/%i%$%"%s%H$d%W%m%-%7$G0JA0$K%-%c%C%7%e$5$l$?(B - $B%3%T!<$,$=$N$H$-$N%X%C%@$H$H$b$K;H$o$l$k2DG=@-$,$"$j$^$9!#(B - $B%a%?>pJs(B ($B8@8l!"%3%s%F%s%H%?%$%W!"J8;z%;%C%H!"%(%s%3!<%G%#%s%0(B) $B$r(B - $BJQ99$7$?$H$-$O!"$9$Y$F$NK,Ld<T$,@5$7$$%3%s%F%s%H%X%C%@$r(B - $B<u$1<h$k$h$&$K!"1F6A$r<u$1$k%U%!%$%k$K(B 'touch' $B%3%^%s%I$r<B9T$9$k(B - ($B:G=*99?7F|$r99?7$9$k(B) $BI,MW$,$"$k$+$b$7$l$^$;$s!#(B</p> + module="core">SetOutputFilter</directive> があります。 + コアのディレクティブは <module>mod_mime</module> により定義された + ファイル名の拡張子のマッピングすべてを上書きします。</p> + + <p>ファイルのメタ情報を変えても <code>Last-Modified</code> + ヘッダの値は変わらないことに注意してください。ですから、 + それらを変更した場合は、クライアントやプロキシで以前にキャッシュされた + コピーがそのときのヘッダとともに使われる可能性があります。 + メタ情報 (言語、コンテントタイプ、文字セット、エンコーディング) を + 変更したときは、すべての訪問者が正しいコンテントヘッダを + 受け取るように、影響を受けるファイルに 'touch' コマンドを実行する + (最終更新日を更新する) 必要があるかもしれません。</p> </summary> <seealso><directive @@ -97,126 +97,126 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <seealso><directive module="core">SetInputFilter</directive></seealso> <seealso><directive module="core">SetOutputFilter</directive></seealso> -<section id="multipleext"><title>$BJ#?t$N3HD%;R$N$"$k%U%!%$%k(B</title> - <p>$B%U%!%$%k$OJ#?t$N3HD%;R$r;}$D$3$H$,$G$-!"3HD%;R$N=gHV$O(B<em - >$BDL>o$O(B</em>$B4X78$"$j$^$;$s!#Nc$($P!"%U%!%$%k(B <code>welcome.html.fr</code> - $B$,%3%s%F%s%H%?%$%W$O(B <code>text/html</code> - $B$K!"8@8l$O%U%i%s%98l$K%^%C%W$5$l$k>l9g!"(B<code>welcome.fr.html</code> - $B$b$^$C$?$/F1$8>pJs$K%^%C%W$5$l$^$9!#(B - $BF1$8%a%?>pJs$K%^%C%W$5$l$k3HD%;R$,J#?t$"$k$H$-$K$O!"8@8l$H(B - $B%3%s%F%s%H%(%s%3!<%G%#%s%0$r=|$$$F!"(B - $B1&B&$K$"$k$b$N$,;HMQ$5$l$^$9!#$?$H$($P!"(B<code>.gif</code> $B$,(B MIME - $B%?%$%W(B <code>image/gif</code> $B$K%^%C%W$5$l!"(B<code>.html</code> - $B$,(B MIME $B%?%$%W(B <code>text/html</code> - $B$K%^%C%W$5$l$k>l9g$O!"%U%!%$%k(B <code>welcome.gif.html</code> $B$O(B - MIME $B%?%$%W(B <code>text/html</code> $B$K4XO"IU$1$i$l$^$9!#(B</p> - - <p>$B%j%=!<%9$KJ#?t$N8@8l$d%(%s%3!<%G%#%s%0$r4XO"IU$1$k$3$H(B - $B$,$G$-$k$?$a!"(B - <a href="#charset-lang">$B8@8l(B</a>$B$H(B<a href="#contentencoding" - >$B%3%s%F%s%H%(%s%3!<%G%#%s%0(B</a>$B$OA0$N$b$N$KDI2C$5$l$F$$$-$^$9!#(B - $B$?$H$($P!"%U%!%$%k(B <code>welcome.html.en.de</code> $B$O(B - <code>Content-Language: en, de</code> $B$H(B <code>Content-Type: - text/html</code> $B$H$7$FAw?.$5$l$^$9!#(B</p> - - <p>$BJ#?t$N3HD%;R$N$"$k%U%!%$%k$,(B MIME - $B%?%$%W$H%O%s%I%i$NN>J}$K4XO"IU$1$i$l$F$$$k$H$-$OCm0U$9$kI,MW$,$"$j$^$9!#(B - $B$=$N>l9g!"IaDL$O%j%/%(%9%H$,%O%s%I%i$K4XO"IU$1$i$l$?(B - $B%b%8%e!<%k$K$h$C$F07$o$l$k$3$H$K$J$j$^$9!#$?$H$($P!"3HD%;R(B - <code>.imap</code> $B$,(B (<module>mod_imagemap</module> $B$N(B) <code>imap-file</code> - $B$K%^%C%W$5$l$F$$$F!"(B<code>.html</code> $B$,(B MIME $B%?%$%W(B <code>text/html</code> - $B$K%^%C%W$5$l$F$$$k$H$-$O!"%U%!%$%k(B <code>world.imap.html</code> $B$O(B - <code>imap-file</code> $B%O%s%I%i$H(B <code>text/html</code> MIME - $B%?%$%W$K4XO"IU$1$i$l$^$9!#%U%!%$%k$,=hM}$5$l$k$H$-$O(B <code>imap-file</code> - $B%O%s%I%i$,;HMQ$5$l$^$9$N$G!"$=$N%U%!%$%k$O(B <module>mod_imagemap</module> - $B$N%$%a!<%8%^%C%W%U%!%$%k$H$7$F07$o$l$k$3$H$K$J$j$^$9!#(B</p> +<section id="multipleext"><title>複数の拡張子のあるファイル</title> + <p>ファイルは複数の拡張子を持つことができ、拡張子の順番は<em + >通常は</em>関係ありません。例えば、ファイル <code>welcome.html.fr</code> + がコンテントタイプは <code>text/html</code> + に、言語はフランス語にマップされる場合、<code>welcome.fr.html</code> + もまったく同じ情報にマップされます。 + 同じメタ情報にマップされる拡張子が複数あるときには、言語と + コンテントエンコーディングを除いて、 + 右側にあるものが使用されます。たとえば、<code>.gif</code> が MIME + タイプ <code>image/gif</code> にマップされ、<code>.html</code> + が MIME タイプ <code>text/html</code> + にマップされる場合は、ファイル <code>welcome.gif.html</code> は + MIME タイプ <code>text/html</code> に関連付けられます。</p> + + <p>リソースに複数の言語やエンコーディングを関連付けること + ができるため、 + <a href="#charset-lang">言語</a>と<a href="#contentencoding" + >コンテントエンコーディング</a>は前のものに追加されていきます。 + たとえば、ファイル <code>welcome.html.en.de</code> は + <code>Content-Language: en, de</code> と <code>Content-Type: + text/html</code> として送信されます。</p> + + <p>複数の拡張子のあるファイルが MIME + タイプとハンドラの両方に関連付けられているときは注意する必要があります。 + その場合、普通はリクエストがハンドラに関連付けられた + モジュールによって扱われることになります。たとえば、拡張子 + <code>.imap</code> が (<module>mod_imagemap</module> の) <code>imap-file</code> + にマップされていて、<code>.html</code> が MIME タイプ <code>text/html</code> + にマップされているときは、ファイル <code>world.imap.html</code> は + <code>imap-file</code> ハンドラと <code>text/html</code> MIME + タイプに関連付けられます。ファイルが処理されるときは <code>imap-file</code> + ハンドラが使用されますので、そのファイルは <module>mod_imagemap</module> + のイメージマップファイルとして扱われることになります。</p> </section> -<section id="contentencoding"><title>$B%3%s%F%s%H%(%s%3!<%G%#%s%0(B</title> - <p>$BFCDj$N(B MIME $B%?%$%W$N%U%!%$%k$O%$%s%?!<%M%C%H$G$NE>Aw$r4JC1$K$9$k$?$a$K!"(B - $B$5$i$KId9f2=$9$k$3$H$,$G$-$^$9!#$3$l$ODL>o$O(B <code>gzip</code> $B$N(B - $B$h$&$J05=L$N$3$H$r;X$7$^$9$,!"(B<code>pgp</code> $B$N$h$&$J0E9f2=$d!"(B - $B%P%$%J%j%U%!%$%k$r(B ASCII ($B%F%-%9%H(B) $B7A<0$GAw$k$?$a$K9M0F$5$l$?(B - UUencoding $B$N$3$H$r;X$9$3$H$b$"$j$^$9!#(B</p> +<section id="contentencoding"><title>コンテントエンコーディング</title> + <p>特定の MIME タイプのファイルはインターネットでの転送を簡単にするために、 + さらに符号化することができます。これは通常は <code>gzip</code> の + ような圧縮のことを指しますが、<code>pgp</code> のような暗号化や、 + バイナリファイルを ASCII (テキスト) 形式で送るために考案された + UUencoding のことを指すこともあります。</p> <p><a href="http://www.ietf.org/rfc/rfc2616.txt">HTTP/1.1 RFC</a> - 14.11 $B@a$G$O<!$N$h$&$K5-=R$5$l$F$$$^$9!#(B</p> + 14.11 節では次のように記述されています。</p> <blockquote cite="http://www.ietf.org/rfc/rfc2616.txt"> - <p>Content-Encoding $B%(%s%F%#%F%#%X%C%@%U%#!<%k%I$O%a%G%#%"%?%$%W$N(B - $B=$>~;R$H$7$F;H$o$l$^$9!#$=$l$,B8:_$7$F$$$l$P!"CM$O%(%s%F%#%F%#%\%G%#$K(B - $B$I$NDI2C$NId9f2=$,E,MQ$5$l$?$+$r<($7!"(BContent-Type $B%X%C%@%U%#!<%k%I$K(B - $B=q$+$l$F$$$k%a%G%#%"%?%$%W$rF@$k$?$a$K$I$NI|9f5!9=$rE,MQ$9$Y$-$+!"$b(B - $B<($7$F$$$k$3$H$K$J$j$^$9!#(BContent-Encoding $B$O<g$K!"85$N%a%G%#%"%?%$%W$N(B - $BF10l@-$r<:$&$3$H$J$/%I%-%e%a%s%H$r05=L$9$k$3$H$r2DG=$K$9$k$?$a$K(B - $B;HMQ$5$l$^$9!#(B</p> + <p>Content-Encoding エンティティヘッダフィールドはメディアタイプの + 修飾子として使われます。それが存在していれば、値はエンティティボディに + どの追加の符号化が適用されたかを示し、Content-Type ヘッダフィールドに + 書かれているメディアタイプを得るためにどの復号機構を適用すべきか、も + 示していることになります。Content-Encoding は主に、元のメディアタイプの + 同一性を失うことなくドキュメントを圧縮することを可能にするために + 使用されます。</p> </blockquote> - <p>$BJ#?t$N%U%!%$%k3HD%;R(B ($BJ#?t$N3HD%;R$K$D$$$F$O(B <a - href="#multipleext">$B>e$N@a(B</a> $B$r;2>H(B) $B;H$&$3$H$G!"(B - $B%U%!%$%k$N(B<em>$B%?%$%W(B</em>$B$d(B<em>$B%(%s%3!<%G%#%s%0(B</em>$B$r;XDj$9$k$3$H$,(B - $B$G$-$^$9!#(B</p> + <p>複数のファイル拡張子 (複数の拡張子については <a + href="#multipleext">上の節</a> を参照) 使うことで、 + ファイルの<em>タイプ</em>や<em>エンコーディング</em>を指定することが + できます。</p> - <p>$B$?$H$($P!"(BMicrosoft Word $B$N%I%-%e%a%s%H$,$"$j!"%5%$%:$r>.$5$/$9$k$?$a$K(B - pkzip $B$5$l$F$$$k$H$7$^$9!#(B<code>.doc</code> $B3HD%;R$,(B Microsoft Word $B$N(B - $B%U%!%$%k%?%$%W$H4XO"IU$1$i$l$F$$$F!"(B<code>.zip</code> $B3HD%;R$,(B - pkzip $B%U%!%$%k%(%s%3!<%G%#%s%0$H4XO"IU$1$i$l$F$$$k$H!"%U%!%$%k(B - <code>Resume.doc.zip</code> $B$O(B pkzip $B$5$l$?(B Word $B%I%-%e%a%s%H$G$"$k(B - $B$H$$$&$3$H$,$o$+$j$^$9!#(B</p> + <p>たとえば、Microsoft Word のドキュメントがあり、サイズを小さくするために + pkzip されているとします。<code>.doc</code> 拡張子が Microsoft Word の + ファイルタイプと関連付けられていて、<code>.zip</code> 拡張子が + pkzip ファイルエンコーディングと関連付けられていると、ファイル + <code>Resume.doc.zip</code> は pkzip された Word ドキュメントである + ということがわかります。</p> - <p>$B%/%i%$%"%s%H$N%V%i%&%6$K%(%s%3!<%G%#%s%0J}K!$rCN$i$;$k$?$a$K!"(B - Apache $B$O%j%=!<%9$H6&$K(B <code>Content-Encoding</code> $B%X%C%@$r(B - $BAw$j$^$9!#(B</p> + <p>クライアントのブラウザにエンコーディング方法を知らせるために、 + Apache はリソースと共に <code>Content-Encoding</code> ヘッダを + 送ります。</p> <example>Content-encoding: pkzip</example> </section> -<section id="charset-lang"><title>$BJ8;z%;%C%H$H8@8l(B</title> - <p>$B%U%!%$%k%?%$%W$H%U%!%$%k%(%s%3!<%G%#%s%0$NB>$K=EMW$J>pJs$O(B - $B%I%-%e%a%s%H$N=q$+$l$F$$$k8@8l$H!"$I$NJ8;z%;%C%H$G%U%!%$%k$,I=<((B - $B$5$l$k$Y$-$+!"$H$$$&$b$N$G$9!#$?$H$($P!"%I%-%e%a%s%H$O%Y%H%J%`$N(B - $B%"%k%U%!%Y%C%H$d%-%j%kJ8;z$G=q$+$l$F$$$F!"$=$N$h$&$KI=<($5$l$k(B - $BI,MW$,$"$k$+$b$7$l$^$;$s!#$3$N>pJs$b$^$?!"(BHTTP $B%X%C%@$G(B - $BAw?.$5$l$^$9!#(B</p> - - <p>$BJ8;z%;%C%H!"8@8l!"%(%s%3!<%G%#%s%0!"(Bmime $B%?%$%W$O$9$Y$F(B - $B%3%s%F%s%H%M%4%7%(!<%7%g%s(B (<module>mod_negotiation</module> $B;2>H(B) - $B$N:GCf$K!"J#?t$NJ8;z%;%C%H!"8@8l!"%(%s%3!<%G%#%s%0!"(BMIME $B%?%$%W$+$i$J$k(B - $BBeBXJ*$,$"$k$H$-$K$I$N%I%-%e%a%s%H$r%/%i%$%"%s%H$KAw$k$N$+$r(B - $B7hDj$9$k$H$-$K;H$o$l$^$9!#(B<directive module="mod_mime">AddCharset</directive>, +<section id="charset-lang"><title>文字セットと言語</title> + <p>ファイルタイプとファイルエンコーディングの他に重要な情報は + ドキュメントの書かれている言語と、どの文字セットでファイルが表示 + されるべきか、というものです。たとえば、ドキュメントはベトナムの + アルファベットやキリル文字で書かれていて、そのように表示される + 必要があるかもしれません。この情報もまた、HTTP ヘッダで + 送信されます。</p> + + <p>文字セット、言語、エンコーディング、mime タイプはすべて + コンテントネゴシエーション (<module>mod_negotiation</module> 参照) + の最中に、複数の文字セット、言語、エンコーディング、MIME タイプからなる + 代替物があるときにどのドキュメントをクライアントに送るのかを + 決定するときに使われます。<directive module="mod_mime">AddCharset</directive>, <directive module="mod_mime">AddEncoding</directive>, <directive module="mod_mime">AddLanguage</directive>, - <directive module="mod_mime">AddType</directive> $B$N3F%G%#%l%/%F%#%V$G:n@.$5$l$?(B - $B3HD%;R$N4XO"IU$1(B ($B$H(B <directive module="mod_mime_magic" - >MimeMagicFile</directive> $B$G%j%9%H$5$l$F$$$k(B - $B3HD%;R(B) $B$,$3$NA*Br$K;22C$7$^$9!#(B<directive module="mod_mime" + <directive module="mod_mime">AddType</directive> の各ディレクティブで作成された + 拡張子の関連付け (と <directive module="mod_mime_magic" + >MimeMagicFile</directive> でリストされている + 拡張子) がこの選択に参加します。<directive module="mod_mime" >AddHandler</directive>, <directive module="mod_mime">AddInputFilter</directive>, - <directive module="mod_mime">AddOutputFilter</directive> $B$N(B - $B3F%G%#%l%/%F%#%V$G$N$_4XO"IU$1$i$l$F$$$k3HD%;R$O(B - <directive module="mod_mime">MultiviewsMatch</directive> $B%G%#%l%/%F%#%V$r(B - $B;H$&$3$H$G%^%C%A$N(B - $B=hM}$K4^$a$k$3$H$b30$9$3$H$b$G$-$^$9!#(B</p> + <directive module="mod_mime">AddOutputFilter</directive> の + 各ディレクティブでのみ関連付けられている拡張子は + <directive module="mod_mime">MultiviewsMatch</directive> ディレクティブを + 使うことでマッチの + 処理に含めることも外すこともできます。</p> <section id="charset"><title>Charset</title> - <p>$B$5$i$K>pJs$rEA$($k$?$a$K!"(BApache $B$OJ8=q$N8@8l$r(B - <code>Content-Language</code> $B%X%C%@$GAw$k$3$H$b$"$j$^$9!#(B - $B$^$?!">pJs$r@5$7$/I=<($9$k$?$a$K;HMQ$9$Y$-J8;z%;%C%H$r<($9$?$a$K(B - <code>Conten-Type</code> $B%X%C%@$K>pJs$rDI2C$9$k$3$H$b$"$j$^$9!#(B</p> + <p>さらに情報を伝えるために、Apache は文書の言語を + <code>Content-Language</code> ヘッダで送ることもあります。 + また、情報を正しく表示するために使用すべき文字セットを示すために + <code>Conten-Type</code> ヘッダに情報を追加することもあります。</p> <example> Content-Language: en, fr<br /> Content-Type: text/plain; charset=ISO-8859-1 </example> - <p>$B8@8l$N;XDj$OFsJ8;z$NC;=L7A$G9T$J$o$l$^$9!#(B<code>charset</code> $B$,(B - $B;HMQ$9$Y$-J8;z%;%C%H$NL>A0$G$9!#(B</p> + <p>言語の指定は二文字の短縮形で行なわれます。<code>charset</code> が + 使用すべき文字セットの名前です。</p> </section> </section> <directivesynopsis> <name>AddCharset</name> -<description>$B%U%!%$%kL>$N3HD%;R$r;XDj$5$l$?J8;z%;%C%H$K%^%C%W$9$k(B</description> +<description>ファイル名の拡張子を指定された文字セットにマップする</description> <syntax>AddCharset <var>charset</var> <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -224,32 +224,32 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <override>FileInfo</override> <usage> - <p><directive>AddCharset</directive> $B%G%#%l%/%F%#%V$O!"(B - $BM?$($i$l$?3HD%;R$r;XDj$5$l$?(B charset $B$K%^%C%W$7$^$9!#(B<var>charset</var> - $B$O!"3HD%;R(B <var>extension</var> $B$r4^$s$G$$$k%U%!%$%kL>$N(B + <p><directive>AddCharset</directive> ディレクティブは、 + 与えられた拡張子を指定された charset にマップします。<var>charset</var> + は、拡張子 <var>extension</var> を含んでいるファイル名の <a href="http://www.iana.org/assignments/character-sets">MIME charset - $B%Q%i%a!<%?(B</a>$B$G$9!#?7$7$$%^%C%T%s%0$O4{$K$"$kB>$N%^%C%T%s%0$KDI2C$5$l!"F1$83HD%;R(B - <var>extension</var> $B$N$?$a$N%^%C%T%s%0$r>e=q$-$7$^$9!#(B</p> + パラメータ</a>です。新しいマッピングは既にある他のマッピングに追加され、同じ拡張子 + <var>extension</var> のためのマッピングを上書きします。</p> - <example><title>$BNc(B</title> + <example><title>例</title> AddLanguage ja .ja<br /> AddCharset EUC-JP .euc<br /> AddCharset ISO-2022-JP .jis<br /> AddCharset SHIFT_JIS .sjis </example> - <p>$B$3$N>l9g!"%I%-%e%a%s%H(B <code>xxxx.ja.jis</code> $B$O(B charset $B$,(B - <code>ISO-2022-JP</code> $B$NF|K\8l$N%I%-%e%a%s%H$H$7$F07$o$l$^$9(B - (<code>xxxx.jis.ja</code> $B$bF1MM(B)$B!#(B<directive>AddCharset</directive> - $B%G%#%l%/%F%#%V$O!"%I%-%e%a%s%H$,E,@Z$K2r<a$5$lI=<($5$l$k$h$&$K!"(B - $B%I%-%e%a%s%H$N(B charset $B$N>pJs$r%/%i%$%"%s%H$K65$($k$?$a$KLr$KN)$A$^$9!#(B - $B$^$?!"%5!<%P$,%/%i%$%"%s%H$N(B charset - $B$NM%@hEY$K4p$E$$$FJ#?t$N%I%-%e%a%s%H$NCf$+$i%I%-%e%a%s%H$rA*$V(B<a + <p>この場合、ドキュメント <code>xxxx.ja.jis</code> は charset が + <code>ISO-2022-JP</code> の日本語のドキュメントとして扱われます + (<code>xxxx.jis.ja</code> も同様)。<directive>AddCharset</directive> + ディレクティブは、ドキュメントが適切に解釈され表示されるように、 + ドキュメントの charset の情報をクライアントに教えるために役に立ちます。 + また、サーバがクライアントの charset + の優先度に基づいて複数のドキュメントの中からドキュメントを選ぶ<a href="../content-negotiation.html" - >$B%3%s%F%s%H%M%4%7%(!<%7%g%s(B</a>$B$N$?$a$K$bLr$KN)$A$^$9!#(B</p> + >コンテントネゴシエーション</a>のためにも役に立ちます。</p> - <p>$B0z?t(B <var>extension</var>$B$OBgJ8;z>.J8;z$r6hJL$;$:!"(B - $B:G=i$N%I%C%H$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p>引数 <var>extension</var>は大文字小文字を区別せず、 + 最初のドットはあってもなくても構いません。</p> </usage> <seealso><module>mod_negotiation</module></seealso> <seealso><directive module="core">AddDefaultCharset</directive></seealso> @@ -257,8 +257,8 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <directivesynopsis> <name>AddEncoding</name> -<description>$B%U%!%$%kL>$N3HD%;R$r;XDj$5$l$?%(%s%3!<%G%#%s%0(B -$B$K%^%C%W$9$k(B</description> +<description>ファイル名の拡張子を指定されたエンコーディング +にマップする</description> <syntax>AddEncoding <var>MIME-enc</var> <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -266,46 +266,46 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <override>FileInfo</override> <usage> - <p><directive>AddEncoding</directive> $B%G%#%l%/%F%#%V$O!"(B - $BM?$($i$l$?3HD%;R$r;XDj$5$l$?%(%s%3!<%G%#%s%0$K%^%C%W$7$^$9!#(B - <var>MIME-enc</var> $B$O!"3HD%;R(B <var>extension</var> - $B$r4^$s$@%I%-%e%a%s%H$K;HMQ$9$k(B MIME $B%(%s%3!<%G%#%s%0$G$9!#(B - $B$3$N?7$7$$%^%C%T%s%0$O4{$K$"$kB>$N%^%C%T%s%0$KDI2C$5$l!"(B - $BF1$83HD%;R(B <var>extension</var> $B$N$?$a$N%^%C%T%s%0$r>e=q$-$7$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p><directive>AddEncoding</directive> ディレクティブは、 + 与えられた拡張子を指定されたエンコーディングにマップします。 + <var>MIME-enc</var> は、拡張子 <var>extension</var> + を含んだドキュメントに使用する MIME エンコーディングです。 + この新しいマッピングは既にある他のマッピングに追加され、 + 同じ拡張子 <var>extension</var> のためのマッピングを上書きします。</p> + + <example><title>例</title> <code>AddEncoding x-gzip .gz<br /> AddEncoding x-compress .Z</code> </example> - <p>$B$3$l$O!"3HD%;R(B <code>.gz</code> $B$r4^$`%U%!%$%kL>$,(B <code>x-gzip</code> - $B%(%s%3!<%G%#%s%0$r;H$C$F%(%s%3!<%I$5$l$F$$$k$3$H$H!"3HD%;R(B <code>.Z</code> - $B$r4^$`%U%!%$%kL>$,(B <code>x-compress</code> - $B$G%(%s%3!<%I$5$l$F$$$k$3$H$r;XDj$7$^$9!#(B</p> - - <p>$B8E$$%/%i%$%"%s%H$O(B <code>x-zip</code> $B$H(B <code>x-compress</code> - $B$,JV$C$F$/$k$3$H$r4|BT$7$^$9$,!"I8=`5,3J$G$O$=$l$>$l(B - <code>gzip</code> $B$H(B <code>compress</code> - $B$HEy2A$G$"$k$3$H$K$J$C$F$$$^$9!#(BApache - $B$O!"%3%s%F%s%H%(%s%3!<%G%#%s%0$NHf3S$r$9$k$H$-$K$O!"@hF,$K$"$k(B - <code>x-</code> $B$rL5;k$7$^$9!#(BApache - $B$,%(%s%3!<%G%#%s%0IU$-$G1~Ez$rJV$9$H$-$O!"%/%i%$%"%s%H$,MW5a$7$?7A<0(B - (<em>$B$9$J$o$A(B</em>$B!"(B<code>x-foo</code> $B$d(B <code>foo</code>) - $B$r;HMQ$7$^$9!#MW$9$k$K!"$3$NFs$D$N%(%s%3!<%G%#%s%0$N>l9g$O>o$K(B - <code>x-gzip</code> $B$H(B <code>x-compress</code> - $B$r;H$&$Y$-$G$"$k!"$H$$$&$3$H$G$9!#(B<code>deflate</code> - $B$N$h$&$J$h$j?7$7$$%(%s%3!<%G%#%s%0$G$O!"(B<code>x-</code> - $B$J$7$G;XDj$7$F$/$@$5$$!#(B + <p>これは、拡張子 <code>.gz</code> を含むファイル名が <code>x-gzip</code> + エンコーディングを使ってエンコードされていることと、拡張子 <code>.Z</code> + を含むファイル名が <code>x-compress</code> + でエンコードされていることを指定します。</p> + + <p>古いクライアントは <code>x-zip</code> と <code>x-compress</code> + が返ってくることを期待しますが、標準規格ではそれぞれ + <code>gzip</code> と <code>compress</code> + と等価であることになっています。Apache + は、コンテントエンコーディングの比較をするときには、先頭にある + <code>x-</code> を無視します。Apache + がエンコーディング付きで応答を返すときは、クライアントが要求した形式 + (<em>すなわち</em>、<code>x-foo</code> や <code>foo</code>) + を使用します。要するに、この二つのエンコーディングの場合は常に + <code>x-gzip</code> と <code>x-compress</code> + を使うべきである、ということです。<code>deflate</code> + のようなより新しいエンコーディングでは、<code>x-</code> + なしで指定してください。 </p> - <p>$B0z?t(B <var>extension</var> $B$OBgJ8;z>.J8;z$r6hJL$;$:!"(B - $B:G=i$N%I%C%H$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p>引数 <var>extension</var> は大文字小文字を区別せず、 + 最初のドットはあってもなくても構いません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>AddHandler</name> -<description>$B%U%!%$%kL>$N3HD%;R$r;XDj$5$l$?%O%s%I%i$K%^%C%W$9$k(B</description> +<description>ファイル名の拡張子を指定されたハンドラにマップする</description> <syntax>AddHandler <var>handler-name</var> <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -313,52 +313,52 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <override>FileInfo</override> <usage> - <p>$B3HD%;R(B <var>extension</var> $B$,L>A0$K$"$k%U%!%$%k$O;XDj$5$l$?(B <a - href="../handler.html">handler-name</a> $B$K07$o$l$^$9!#(B - $B$3$N?7$7$$%^%C%T%s%0$O4{$K$"$kB>$N%^%C%T%s%0$KDI2C$5$l!"(B - $BF1$83HD%;R(B <var>extension</var> - $B$N$?$a$N%^%C%T%s%0$r>e=q$-$7$^$9!#$?$H$($P!"3HD%;R(B - "<code>.cgi</code>" $B$G=*$o$k%U%!%$%k$r(B CGI - $B%9%/%j%W%H$H$7$F07$$$?$$$H$-$O!"0J2<$N@_Dj$r$7$^$9!#(B</p> + <p>拡張子 <var>extension</var> が名前にあるファイルは指定された <a + href="../handler.html">handler-name</a> に扱われます。 + この新しいマッピングは既にある他のマッピングに追加され、 + 同じ拡張子 <var>extension</var> + のためのマッピングを上書きします。たとえば、拡張子 + "<code>.cgi</code>" で終わるファイルを CGI + スクリプトとして扱いたいときは、以下の設定をします。</p> <example> AddHandler cgi-script .cgi </example> - <p>$B$3$l$r(B httpd.conf $B%U%!%$%k$K5-=R$9$k$3$H$G!"3HD%;R(B - "<code>.cgi</code>" $B$N%U%!%$%k$O(B CGI $B%W%m%0%i%`$H$7$F07$o$l$^$9!#(B + <p>これを httpd.conf ファイルに記述することで、拡張子 + "<code>.cgi</code>" のファイルは CGI プログラムとして扱われます。 </p> - <p>$B0z?t(B <var>extension</var> $B$OBgJ8;z>.J8;z$r6hJL$;$:!"(B - $B:G=i$N%I%C%H$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p>引数 <var>extension</var> は大文字小文字を区別せず、 + 最初のドットはあってもなくても構いません。</p> </usage> <seealso><directive module="core">SetHandler</directive></seealso> </directivesynopsis> <directivesynopsis> <name>AddInputFilter</name> -<description>$B%U%!%$%k$N3HD%;R$r%/%i%$%"%s%H$N%j%/%(%9%H$r=hM}$9$k(B - $B%U%#%k%?$K%^%C%W$9$k(B</description> +<description>ファイルの拡張子をクライアントのリクエストを処理する + フィルタにマップする</description> <syntax>AddInputFilter <var>filter</var>[;<var>filter</var>...] <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>2.0.26 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>2.0.26 以降で使用可能</compatibility> <usage> - <p><directive>AddInputFilter</directive> $B$O%U%!%$%k$N3HD%;R(B - <var>extension</var> $B$r%/%i%$%"%s%H$N%j%/%(%9%H$d(B POST $B$,%5!<%P$KMh$?$H$-$K(B - $B=hM}$r$9$k(B<a href="../filter.html">$B%U%#%k%?(B</a>$B$K%^%C%W$7$^$9!#(B - $B$3$l$O!"(B<directive module="core">SetInputFilter</directive> $B%G%#%l%/%F%#%V$b(B - $B4^$a!"B>$N>l=j$GDj5A$5$l$F$$$k%U%#%k%?$K2C$($i$l$^$9!#(B - $B$3$N%^%C%T%s%0$O$9$G$K$"$k$b$N$h$jM%@h$5$l$F%^!<%8$5$l!"(B - $BF1$8(B <var>extension</var> $B$KBP$9$k4{B8$N%^%C%T%s%0$r>e=q$-$7$^$9!#(B</p> - - <p>$BJ#?t$N%U%#%k%?$r;XDj$9$k$H$-$O!"%G!<%?$r=hM}$9$k=gHV$K%;%_%3%m%s$G(B - $B7R$$$G=q$/I,MW$,$"$j$^$9!#%U%#%k%?$H(B <var>extension</var> $B$H$N(B - $BN>J}$N0z?t$OBgJ8;z>.J8;z$r6hJL$;$:!"3HD%;R$N:G=i$N%I%C%H$O(B - $B$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p><directive>AddInputFilter</directive> はファイルの拡張子 + <var>extension</var> をクライアントのリクエストや POST がサーバに来たときに + 処理をする<a href="../filter.html">フィルタ</a>にマップします。 + これは、<directive module="core">SetInputFilter</directive> ディレクティブも + 含め、他の場所で定義されているフィルタに加えられます。 + このマッピングはすでにあるものより優先されてマージされ、 + 同じ <var>extension</var> に対する既存のマッピングを上書きします。</p> + + <p>複数のフィルタを指定するときは、データを処理する順番にセミコロンで + 繋いで書く必要があります。フィルタと <var>extension</var> との + 両方の引数は大文字小文字を区別せず、拡張子の最初のドットは + あってもなくても構いません。</p> </usage> <seealso><directive module="mod_mime">RemoveInputFilter</directive></seealso> <seealso><directive module="core">SetInputFilter</directive></seealso> @@ -366,7 +366,7 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <directivesynopsis> <name>AddLanguage</name> -<description>$B%U%!%$%kL>$r;XDj$5$l$?8@8l$K%^%C%W(B</description> +<description>ファイル名を指定された言語にマップ</description> <syntax>AddLanguage <var>MIME-lang</var> <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -374,30 +374,30 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <override>FileInfo</override> <usage> - <p><directive>AddLanguage</directive> $B%G%#%l%/%F%#%V$O!"M?$($i$l$?3HD%;R$r;XDj$5$l$?(B - content language $B$K%^%C%W$7$^$9!#(B<var>MIME-lang</var> $B$O!"3HD%;R(B - <var>extension</var> $B$r4^$s$G$$$k%U%!%$%kL>$N(B MIME $B$K$*$1$k8@8l$G$9!#(B - $B$3$N?7$7$$%^%C%T%s%0$O4{$K$"$k%^%C%T%s%0$KDI2C$5$l!"F1$83HD%;R(B - <var>extension</var> $B$N$?$a$N%^%C%T%s%0$r>e=q$-$7$^$9!#(B</p> + <p><directive>AddLanguage</directive> ディレクティブは、与えられた拡張子を指定された + content language にマップします。<var>MIME-lang</var> は、拡張子 + <var>extension</var> を含んでいるファイル名の MIME における言語です。 + この新しいマッピングは既にあるマッピングに追加され、同じ拡張子 + <var>extension</var> のためのマッピングを上書きします。</p> - <example><title>$BNc(B</title> + <example><title>例</title> AddEncoding x-compress .Z<br /> AddLanguage en .en<br /> AddLanguage fr .fr </example> - <p>$B$3$N>l9g!"(B<code>xxxx.en.Z</code> $B%I%-%e%a%s%H$O(B compress - $B$5$l$?1Q8l$N%I%-%e%a%s%H$H$7$F07$o$l$^$9(B (<code>xxxx.Z.en</code> - $B$bF1MM(B)$B!#(Bcontent language $B$O%/%i%$%"%s%H$KDLCN$5$l$^$9$,!"(B - $B%V%i%&%6$,$3$N>pJs$r;H$&$3$H$O$*$=$i$/$"$j$^$;$s!#(B + <p>この場合、<code>xxxx.en.Z</code> ドキュメントは compress + された英語のドキュメントとして扱われます (<code>xxxx.Z.en</code> + も同様)。content language はクライアントに通知されますが、 + ブラウザがこの情報を使うことはおそらくありません。 <directive>AddLanguage</directive> - $B%G%#%l%/%F%#%V$O!"%5!<%P$,%/%i%$%"%s%H$N8@8l$NM%@hEY$K4p$E$$$FJ#?t$N(B - $B%I%-%e%a%s%H$NCf$+$i%I%-%e%a%s%H$rA*$V(B<a + ディレクティブは、サーバがクライアントの言語の優先度に基づいて複数の + ドキュメントの中からドキュメントを選ぶ<a href="../content-negotiation.html" - >$B%3%s%F%s%H%M%4%7%(!<%7%g%s(B</a>$B$N$?$a$K$h$jLr$KN)$A$^$9!#(B</p> + >コンテントネゴシエーション</a>のためにより役に立ちます。</p> - <p>$BJ#?t$N8@8l$,F1$83HD%;R$K3d$jEv$F$i$l$F$$$k$H$-$O!"(B - $B:G8e$N$b$N$,;HMQ$5$l$^$9!#$9$J$o$A!"<!$N$h$&$J>l9g!"(B</p> + <p>複数の言語が同じ拡張子に割り当てられているときは、 + 最後のものが使用されます。すなわち、次のような場合、</p> <example> AddLanguage en .en<br /> @@ -405,48 +405,48 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> AddLanguage en-us .en </example> - <p>$B3HD%;R(B <code>.en</code> $B$N$"$k%I%-%e%a%s%H$O(B - <code>en-us</code> $B$H$7$F07$o$l$^$9!#(B</p> + <p>拡張子 <code>.en</code> のあるドキュメントは + <code>en-us</code> として扱われます。</p> - <p>$B0z?t(B <var>extension</var> $B$OBgJ8;z>.J8;z$r6hJL$;$:!"(B - $B:G=i$N%I%C%H$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p>引数 <var>extension</var> は大文字小文字を区別せず、 + 最初のドットはあってもなくても構いません。</p> </usage> <seealso><module>mod_negotiation</module></seealso> </directivesynopsis> <directivesynopsis> <name>AddOutputFilter</name> -<description>$B%U%!%$%kL>$N3HD%;R$r%5!<%P$+$i$N1~Ez$r=hM}$9$k%U%#%k%?$K(B - $B%^%C%W$9$k(B</description> +<description>ファイル名の拡張子をサーバからの応答を処理するフィルタに + マップする</description> <syntax>AddOutputFilter <var>filter</var>[;<var>filter</var>...] <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>2.0.26 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>2.0.26 以降で使用可能</compatibility> <usage> - <p><directive>AddOutputFilter</directive> $B%G%#%l%/%F%#%V$O(B - $B3HD%;R(B <var>extension</var> $B$r%5!<%P$N1~Ez$,%/%i%$%"%s%H$KAw$i$l$k(B - $BA0$K=hM}$9$k(B<a href="../filter.html">$B%U%#%k%?(B</a>$B$rDj5A$7$^$9!#(B - $B$3$l$O(B <directive module="core">SetOutputFilter</directive> - $B%G%#%l%/%F%#%V$H(B <directive module="core" - >AddOutputFilterByType</directive> $B%G%#%l%/%F%#%V(B - $B$r4^$a!"B>$N>l=j$GDj5A$5$l$F$$$k%U%#%k%?$K2C$($i$l$^$9!#(B - $B$3$N?7$7$$%^%C%T%s%0$O4{$K$"$k%^%C%T%s%0$KDI2C$5$l!"F1$83HD%;R(B - <var>extension</var> $B$N$?$a$N%^%C%T%s%0$r>e=q$-$7$^$9!#(B</p> - - <p>$BNc$($P!"0J2<$N@_Dj$O$9$Y$F$N(B <code>.shtml</code> $B%U%!%$%k$r(B SSI $B$G=hM}$7!"(B - $B$=$N=PNO$r(B <module>mod_deflate</module> $B$r;H$C$F05=L$7$^$9!#(B</p> + <p><directive>AddOutputFilter</directive> ディレクティブは + 拡張子 <var>extension</var> をサーバの応答がクライアントに送られる + 前に処理する<a href="../filter.html">フィルタ</a>を定義します。 + これは <directive module="core">SetOutputFilter</directive> + ディレクティブと <directive module="core" + >AddOutputFilterByType</directive> ディレクティブ + を含め、他の場所で定義されているフィルタに加えられます。 + この新しいマッピングは既にあるマッピングに追加され、同じ拡張子 + <var>extension</var> のためのマッピングを上書きします。</p> + + <p>例えば、以下の設定はすべての <code>.shtml</code> ファイルを SSI で処理し、 + その出力を <module>mod_deflate</module> を使って圧縮します。</p> <example> AddOutputFilter INCLUDES;DEFLATE shtml </example> - <p>$BJ#?t$N%U%#%k%?$r;XDj$9$k$H$-$O!"%G!<%?$r=hM}$9$k=gHV$K%;%_%3%m%s$G(B - $B7R$$$G=q$/I,MW$,$"$j$^$9!#(B<var>filter</var> $B$H(B <var>extension</var> $B$N(B - $BN>0z?t$OBgJ8;z>.J8;z$r6hJL$;$:!"3HD%;R$N:G=i$N%I%C%H$O(B - $B$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p>複数のフィルタを指定するときは、データを処理する順番にセミコロンで + 繋いで書く必要があります。<var>filter</var> と <var>extension</var> の + 両引数は大文字小文字を区別せず、拡張子の最初のドットは + あってもなくても構いません。</p> </usage> <seealso><directive module="mod_mime">RemoveOutputFilter</directive></seealso> <seealso><directive module="core">SetOutputFilter</directive></seealso> @@ -454,7 +454,7 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <directivesynopsis> <name>AddType</name> -<description>$B%U%!%$%kL>$N3HD%;R$r;XDj$5$l$?%3%s%F%s%H%?%$%W$K%^%C%W(B</description> +<description>ファイル名の拡張子を指定されたコンテントタイプにマップ</description> <syntax>AddType <var>MIME-type</var> <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -462,28 +462,28 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <override>FileInfo</override> <usage> - <p><directive>AddType</directive> $B%G%#%l%/%F%#%V$O!"(B - $BM?$($i$l$?3HD%;R$r;XDj$5$l$?%3%s%F%s%H%?%$%W$K%^%C%W$7$^$9!#(B - <var>MIME-type</var> $B$O3HD%;R(B <var>extension</var> - $B$r4^$s$@%I%-%e%a%s%H$K;HMQ$9$k(B MIME $B%?%$%W$G$9!#(B - $B$3$N?7$7$$%^%C%T%s%0$O4{$K$"$k%^%C%T%s%0$KDI2C$5$l!"F1$83HD%;R(B - <var>extension</var> $B$N$?$a$N%^%C%T%s%0$r>e=q$-$7$^$9!#(B - $B$3$N%G%#%l%/%F%#%V$O(B MIME $B%?%$%W%U%!%$%k(B (<directive - module="mod_mime">TypesConfig</directive> $B%G%#%l%/%F%#%V$r;2>H(B) - $B$KL5$$%^%C%T%s%0$rDI2C$9$k$?$a$K;HMQ$9$k$3$H$,$G$-$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p><directive>AddType</directive> ディレクティブは、 + 与えられた拡張子を指定されたコンテントタイプにマップします。 + <var>MIME-type</var> は拡張子 <var>extension</var> + を含んだドキュメントに使用する MIME タイプです。 + この新しいマッピングは既にあるマッピングに追加され、同じ拡張子 + <var>extension</var> のためのマッピングを上書きします。 + このディレクティブは MIME タイプファイル (<directive + module="mod_mime">TypesConfig</directive> ディレクティブを参照) + に無いマッピングを追加するために使用することができます。</p> + + <example><title>例</title> AddType image/gif .gif </example> <note> - $B?7$7$$(B MIME $B%?%$%W$O!"(B<directive module="mod_mime">TypesConfig</directive> - $B%U%!%$%k$rJQ99$9$k$N$G$O$J$/!"(B<directive>AddType</directive> - $B%G%#%l%/%F%#%V$r;H$C$FDI2C$9$k$3$H$,?d>)$5$l$F$$$^$9!#(B + 新しい MIME タイプは、<directive module="mod_mime">TypesConfig</directive> + ファイルを変更するのではなく、<directive>AddType</directive> + ディレクティブを使って追加することが推奨されています。 </note> - <p>$B0z?t(B <var>extension</var> $B$OBgJ8;z>.J8;z$r6hJL$;$:!"(B - $B:G=i$N%I%C%H$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p>引数 <var>extension</var> は大文字小文字を区別せず、 + 最初のドットはあってもなくても構いません。</p> </usage> <seealso><directive module="core">DefaultType</directive></seealso> <seealso><directive module="core">ForceType</directive></seealso> @@ -491,50 +491,50 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <directivesynopsis> <name>MultiviewsMatch</name> -<description>MultiViews $B$G$N%^%C%A%s%0$N8!:w$K4^$^$;$k(B -$B%U%!%$%k$N%?%$%W$r;XDj$9$k(B</description> +<description>MultiViews でのマッチングの検索に含ませる +ファイルのタイプを指定する</description> <syntax>MultiviewsMatch Any|NegotiatedOnly|Filters|Handlers [Handlers|Filters]</syntax> <default>MultiviewsMatch NegotiatedOnly</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>2.0.26 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>2.0.26 以降で使用可能</compatibility> <usage> - <p><directive>MultiviewsMatch</directive> $B$r;HMQ$9$k$3$H$G!"(B - <a href="mod_negotiation.html">mod_negotiation</a> $B$N(B - Multiviews $B$K(B 3 $B<oN`$N0[$J$k5sF0$r$5$;$k$3$H$,$G$-$^$9!#(B - Multiviews $B$r;HMQ$9$k$H!"%U%!%$%k(B ($BNc(B <code>index.html</code>) - $B$KBP$9$k%j%/%(%9%H$KBP$7$F!"%M%4%7%(!<%7%g%s$9$k3HD%;R$,%Y!<%9$KIU$$$?$b$N(B - (<code>index.html.en</code>, <code>index.html.fr</code> $B$d(B + <p><directive>MultiviewsMatch</directive> を使用することで、 + <a href="mod_negotiation.html">mod_negotiation</a> の + Multiviews に 3 種類の異なる挙動をさせることができます。 + Multiviews を使用すると、ファイル (例 <code>index.html</code>) + に対するリクエストに対して、ネゴシエーションする拡張子がベースに付いたもの + (<code>index.html.en</code>, <code>index.html.fr</code> や <code>index.html.gz</code>) - $B$r%^%C%A$5$;$k$3$H$,$G$-$^$9!#(B</p> - - <p><code>NegotiatedOnly</code> $B%*%W%7%g%s$G$O!"%Y!<%9L>$KB3$/3HD%;RA4$F$,(B - $B%3%s%F%s%H%M%4%7%(!<%7%g%s$G(B <module>mod_mime</module> - $B$,G'<1$9$k3HD%;R(B (<em>$BNc(B</em> $BJ8;z%;%C%H!"%3%s%F%s%H%?%$%W!"8@8l$d%(%s%3!<%G%#%s%0(B) - $B$K4XO"IU$1$i$l$F$$$J$1$l$P$J$j$^$;$s!#$3$l$OI{:nMQ$N:G$b>/$J$$(B - $B:G$bE*3N$J<BAu$G!"%G%U%)%k%H$K$J$C$F$$$^$9!#(B</p> - - <p>$B%O%s%I%i$H%U%#%k%?$NN>J}$b$7$/$OJRJ}$H4XO"IU$1$i$l$?3HD%;R$r4^$a$k$K$O!"(B - <directive>MultiviewsMatch</directive> $B%G%#%l%/%F%#%V$K(B <code>Handlers</code>, - <code>Filters</code> $B$^$?$O$=$NN>J}$N%*%W%7%g%s$r%;%C%H$7$^$9!#(B - $B$b$7B>$N>r7o$,F1$8$G$"$l$P!":G$b>.$5$$%U%!%$%k$,Aw?.$5$l$^$9!#(B - $BNc$($P!"(B500 $BJ8;z$N(B <code>index.html.cgi</code> $B$H(B 1000 $B%P%$%H$N(B - <code>index.html.pl</code> $B$G$"$l$P!"(B<code>.cgi</code> - $B$N%U%!%$%k$,M%@h$5$l$^$9!#(B<code>.asis</code> $B%U%!%$%k$rMxMQ$7$F$$$k%f!<%6$O!"(B - <code>.asis</code> $B%U%!%$%k$,(B <code>asis-handler</code> $B$K4XO"IU$1$i$l$F$$$k$H$-$K$O!"(B - $B%O%s%I%i%*%W%7%g%s$N;HMQ$r9%$`$G$7$g$&!#(B</p> - - <p>$B:G8e$K!"(B<module>mod_mime</module> $B$,G'<1$7$J$$3HD%;R$G$"$m$&$H$b!"(B - $B$I$s$J3HD%;R$G$b%^%C%A$5$;$k(B <code>Any</code> $B$,;HMQ$G$-$^$9!#(B - $B$3$N5sF0$O(B Apache 1.3 $B$N$H$-$HF1$8$b$N$G!"M=4|$7$J$$F0:n!"Nc$($P(B <code>.old</code> $B$d(B - <code>.bak</code> $B%U%!%$%k$H$$$C$?%&%'%V%^%9%?$,Aw?.$r0U?^$7$F$$$J$$(B - $B%U%!%$%k$rAw?.$9$k!"$H$$$C$?F0:n$r9T$J$&2DG=@-$,$"$j$^$9!#(B</p> - - <p>$BNc$($P<!$N@_Dj$G$O!"%O%s%I%i$d%U%#%k%?$,(B Multiviews $B$K;22C$9$k$3$H$,(B - $B$G$-$^$9$7!"L$CN$N%U%!%$%k$O=|30$9$k$3$H$,$G$-$^$9!#(B</p> + をマッチさせることができます。</p> + + <p><code>NegotiatedOnly</code> オプションでは、ベース名に続く拡張子全てが + コンテントネゴシエーションで <module>mod_mime</module> + が認識する拡張子 (<em>例</em> 文字セット、コンテントタイプ、言語やエンコーディング) + に関連付けられていなければなりません。これは副作用の最も少ない + 最も的確な実装で、デフォルトになっています。</p> + + <p>ハンドラとフィルタの両方もしくは片方と関連付けられた拡張子を含めるには、 + <directive>MultiviewsMatch</directive> ディレクティブに <code>Handlers</code>, + <code>Filters</code> またはその両方のオプションをセットします。 + もし他の条件が同じであれば、最も小さいファイルが送信されます。 + 例えば、500 文字の <code>index.html.cgi</code> と 1000 バイトの + <code>index.html.pl</code> であれば、<code>.cgi</code> + のファイルが優先されます。<code>.asis</code> ファイルを利用しているユーザは、 + <code>.asis</code> ファイルが <code>asis-handler</code> に関連付けられているときには、 + ハンドラオプションの使用を好むでしょう。</p> + + <p>最後に、<module>mod_mime</module> が認識しない拡張子であろうとも、 + どんな拡張子でもマッチさせる <code>Any</code> が使用できます。 + この挙動は Apache 1.3 のときと同じもので、予期しない動作、例えば <code>.old</code> や + <code>.bak</code> ファイルといったウェブマスタが送信を意図していない + ファイルを送信する、といった動作を行なう可能性があります。</p> + + <p>例えば次の設定では、ハンドラやフィルタが Multiviews に参加することが + できますし、未知のファイルは除外することができます。</p> <example> MultiviewsMatch Handlers Filters @@ -547,35 +547,35 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <directivesynopsis> <name>DefaultLanguage</name> -<description>$B$"$k%9%3!<%W$N$9$Y$F$N%U%!%$%k$r;XDj$5$l$?8@8l$K(B -$B@_Dj$9$k(B</description> +<description>あるスコープのすべてのファイルを指定された言語に +設定する</description> <syntax>DefaultLanguage <var>MIME-lang</var></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>FileInfo</override> <usage> - <p><directive>DefaultLanguage</directive> $B%G%#%l%/%F%#%V$O!"(BApache - $B$,%G%#%l%/%F%#%V$N%9%3!<%W(B (<em>$BNc$($P(B</em>$B!"$=$N;~E@$N(B + <p><directive>DefaultLanguage</directive> ディレクティブは、Apache + がディレクティブのスコープ (<em>例えば</em>、その時点の <directive module="core" type="section">Directory</directive> - $B$NHO0O(B) $B$K$"$k!"L@<(E*$J8@8l3HD%;R(B - (<directive module="mod_mime">AddLanguage</directive> $B$G@_Dj$5$l$k(B - <code>.fr</code> $B$d(B <code>.de</code>) $B$N$J$$A4$F$N%U%!%$%k$r!";XDj$5$l$?(B - <var>MIME-lang</var> $B8@8l$G$"$k$H$_$J$9$h$&$K$7$^$9!#(B - $B$3$l$K$h$j!"$9$Y$F$N%U%!%$%kL>$rJQ$($k$3$H$J$/!"(B - $B%G%#%l%/%H%j$,%*%i%s%@8l$N%3%s%F%s%H$r4^$s$G$$$k!"(B - $B$H$$$&$h$&$J$3$H$r;XDj$9$k$3$H$,$G$-$^$9!#(B - $B3HD%;R$r;HMQ$7$F8@8l$r;XDj$9$kJ}K!$H0c$$!"(B + の範囲) にある、明示的な言語拡張子 + (<directive module="mod_mime">AddLanguage</directive> で設定される + <code>.fr</code> や <code>.de</code>) のない全てのファイルを、指定された + <var>MIME-lang</var> 言語であるとみなすようにします。 + これにより、すべてのファイル名を変えることなく、 + ディレクトリがオランダ語のコンテントを含んでいる、 + というようなことを指定することができます。 + 拡張子を使用して言語を指定する方法と違い、 <directive>DefaultLanguage</directive> - $B$O0l$D$N8@8l$7$+;XDj$G$-$J$$$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + は一つの言語しか指定できないことに注意してください。</p> <p><directive>DefaultLanguage</directive> - $B%G%#%l%/%F%#%V$,M-8z$G$J$/!"%U%!%$%k$K(B + ディレクティブが有効でなく、ファイルに <directive module="mod_mime">AddLanguage</directive> - $B$G@_Dj$5$l$?8@8l$N3HD%;R$,$J$$$H$-$O!"(B - $B%U%!%$%k$K$O8@8lB0@-$,$J$$$H$_$J$5$l$^$9!#(B</p> + で設定された言語の拡張子がないときは、 + ファイルには言語属性がないとみなされます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> DefaultLanguage en </example> </usage> @@ -584,63 +584,63 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <directivesynopsis> <name>ModMimeUsePathInfo</name> -<description><code>path_info</code> $B%3%s%]!<%M%s%H$r%U%!%$%kL>$N0lIt$H$7$F07$&$h$&$K(B -<module>mod_mime</module> $B$KDLCN$9$k(B</description> +<description><code>path_info</code> コンポーネントをファイル名の一部として扱うように +<module>mod_mime</module> に通知する</description> <syntax>ModMimeUsePathInfo On|Off</syntax> <default>ModMimeUsePathInfo Off</default> <contextlist><context>directory</context></contextlist> -<compatibility>Apache 2.0.41 $B0J9_(B</compatibility> +<compatibility>Apache 2.0.41 以降</compatibility> <usage> - <p><directive>ModMimeUsePathInfo</directive> $B%G%#%l%/%F%#%V$O!"(B - <module>mod_mime</module> $B$N;}$D%G%#%l%/%F%#%V$r(B - $B%j%/%(%9%H$KE,MQ$5$;$k$?$a$K!"%U%!%$%kL>$H(B <code>path_info</code> URL - $B%3%s%]!<%M%s%H$r7k9g$5$;$k$?$a$K;HMQ$7$^$9!#(B - $B%G%U%)%k%H$G$O!V(B <code>Off</code> $B!W$G!"(B<code>path_info</code> - $B%3%s%]!<%M%s%H$OL5;k$5$l$^$9!#(B</p> + <p><directive>ModMimeUsePathInfo</directive> ディレクティブは、 + <module>mod_mime</module> の持つディレクティブを + リクエストに適用させるために、ファイル名と <code>path_info</code> URL + コンポーネントを結合させるために使用します。 + デフォルトでは「 <code>Off</code> 」で、<code>path_info</code> + コンポーネントは無視されます。</p> - <p>$B$3$N%G%#%l%/%F%#%V$O!"%P!<%A%c%k%U%!%$%k%7%9%F%`$r;HMQ$7$F$$$k:]$K(B - $B?d>)$5$l$k%G%#%l%/%F%#%V$G$9!#(B</p> + <p>このディレクティブは、バーチャルファイルシステムを使用している際に + 推奨されるディレクティブです。</p> - <example><title>$BNc(B</title> + <example><title>例</title> ModMimeUsePathInfo On </example> - <p><code>/bar</code> $B$,B8:_$7$F(B (foo.shtml $B$OB8:_$7$J$$(B) - <directive>ModMimeUsePathInfo</directive> $B$,(B <code>On</code> $B$G$"$k$H$7$F!"(B - <code>/bar/foo.shtml</code> $B$KBP$9$k%j%/%(%9%H$rH/9T$7$?>l9g!"(B - <module>mod_mime</module> $B$OF~$C$F$-$?%j%/%(%9%H$r(B - <code>/bar/foo.shtml</code> $B$H$7$F07$$!"(B - <code>AddOutputFileter INCLUDES .shtml</code> $B$N$h$&$J%G%#%l%/%F%#%V$O(B - <code>INCLUDES</code> $B%U%#%k%?$r%j%/%(%9%H$KIU2C$5$;$^$9!#(B - <directive>ModMimeUsePathInfo</directive> $B$,@_Dj$5$l$J$1$l$P!"(B - <code>INCLUDES</code> $B%U%#%k%?$OIU2C$5$l$^$;$s!#(B</p> + <p><code>/bar</code> が存在して (foo.shtml は存在しない) + <directive>ModMimeUsePathInfo</directive> が <code>On</code> であるとして、 + <code>/bar/foo.shtml</code> に対するリクエストを発行した場合、 + <module>mod_mime</module> は入ってきたリクエストを + <code>/bar/foo.shtml</code> として扱い、 + <code>AddOutputFileter INCLUDES .shtml</code> のようなディレクティブは + <code>INCLUDES</code> フィルタをリクエストに付加させます。 + <directive>ModMimeUsePathInfo</directive> が設定されなければ、 + <code>INCLUDES</code> フィルタは付加されません。</p> </usage> <seealso><directive module="core">AcceptPathInfo</directive></seealso> </directivesynopsis> <directivesynopsis> <name>RemoveCharset</name> -<description>$B%U%!%$%k$N3HD%;R$K4XO"IU$1$i$l$?$9$Y$F$NJ8;z%;%C%H(B -$B$r2r=|$9$k(B</description> +<description>ファイルの拡張子に関連付けられたすべての文字セット +を解除する</description> <syntax>RemoveCharset <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>virtual host</context><context>directory</context> <context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>2.0.24 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>2.0.24 以降で使用可能</compatibility> <usage> - <p><directive>RemoveCharset</directive> $B%G%#%l%/%F%#%V(B - $B$OM?$($i$l$?3HD%;R$K4XO"IU$1$i$l$?J8;z%;%C%H$r<h$j>C$7$^$9!#(B - $B$3$l$K$h$j!"%5%V%G%#%l%/%H%j$K$"$k(B <code>.htaccess</code> - $B%U%!%$%k$,?F%G%#%l%/%H%j$d%5!<%P$N@_Dj%U%!%$%k(B - $B$+$i7Q>5$7$?4XO"IU$1$r<h$j>C$9$3$H$,$G$-$^$9!#Nc$($P(B:</p> + <p><directive>RemoveCharset</directive> ディレクティブ + は与えられた拡張子に関連付けられた文字セットを取り消します。 + これにより、サブディレクトリにある <code>.htaccess</code> + ファイルが親ディレクトリやサーバの設定ファイル + から継承した関連付けを取り消すことができます。例えば:</p> - <p><var>extension</var> $B$OBgJ8;z>.J8;z$r6hJL$7$^$;$s!#(B - $B$^$?!":G=i$N%I%C%H$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p><var>extension</var> は大文字小文字を区別しません。 + また、最初のドットはあってもなくても構いません。</p> - <example><title>$BNc(B</title> + <example><title>例</title> RemoveCharset .html .shtml </example> </usage> @@ -648,8 +648,8 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <directivesynopsis> <name>RemoveEncoding</name> -<description>$B%U%!%$%k$N3HD%;R$K4XO"IU$1$i$l$?$9$Y$F$N%3%s%F%s%H%(%s%3!<%G%#%s%0(B -$B$r2r=|$9$k(B</description> +<description>ファイルの拡張子に関連付けられたすべてのコンテントエンコーディング +を解除する</description> <syntax>RemoveEncoding <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>virtual host</context><context>directory</context> @@ -657,11 +657,11 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <override>FileInfo</override> <usage> - <p><directive>RemoveEncoding</directive> $B%G%#%l%/%F%#%V$O!"(B - $BM?$($i$l$?3HD%;R$K4XO"IU$1$i$l$?%(%s%3!<%G%#%s%0$r<h$j>C$7$^$9!#(B - $B$3$l$K$h$j!"%5%V%G%#%l%/%H%j$K$"$k(B <code>.htaccess</code> - $B%U%!%$%k$,?F%G%#%l%/%H%j$d%5!<%P$N@_Dj%U%!%$%k$+$i7Q>5$7$?4XO"IU$1$r(B - $B<h$j>C$9$3$H$,$G$-$^$9!#(B</p> + <p><directive>RemoveEncoding</directive> ディレクティブは、 + 与えられた拡張子に関連付けられたエンコーディングを取り消します。 + これにより、サブディレクトリにある <code>.htaccess</code> + ファイルが親ディレクトリやサーバの設定ファイルから継承した関連付けを + 取り消すことができます。</p> <example><title>/foo/.htaccess:</title> AddEncoding x-gzip .gz<br /> @@ -673,28 +673,28 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> </Files> </example> - <p>$B$3$l$O!"(B<code>foo.gz</code> $B$O(B gzip - $B$G%(%s%3!<%I$5$l$F$$$k$3$H$r;XDj$7$^$9$,!"(B<code>foo.gz.asc</code> - $B$O%(%s%3!<%I$5$l$F$$$J$$%W%l!<%s%F%-%9%H$N(B - $B%U%!%$%k$G$"$k$H$$$&$3$H$r;XDj$7$^$9!#(B</p> + <p>これは、<code>foo.gz</code> は gzip + でエンコードされていることを指定しますが、<code>foo.gz.asc</code> + はエンコードされていないプレーンテキストの + ファイルであるということを指定します。</p> - <note><title>$BCm0U(B</title> - <p><directive>RemoveEncoding</directive> $B$O(B + <note><title>注意</title> + <p><directive>RemoveEncoding</directive> は <directive module="mod_mime">AddEncoding</directive> - $B%G%#%l%/%F%#%V$N(B<em>$B8e(B</em>$B$G=hM}$5$l$^$9$N$G!"(B - $BF1$8%G%#%l%/%H%j$N@_DjCf$KN>J}$,8=$l$k$H!"(B - $B8e<T$N8z2L$,BG$A>C$5$l$k2DG=@-$,$"$j$^$9!#(B</p> + ディレクティブの<em>後</em>で処理されますので、 + 同じディレクトリの設定中に両方が現れると、 + 後者の効果が打ち消される可能性があります。</p> </note> - <p><var>extension</var> $B$OBgJ8;z>.J8;z$r6hJL$7$^$;$s!#(B - $B$^$?!":G=i$N%I%C%H$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p><var>extension</var> は大文字小文字を区別しません。 + また、最初のドットはあってもなくても構いません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>RemoveHandler</name> -<description>$B%U%!%$%k$N3HD%;R$K4XO"IU$1$i$l$?$9$Y$F$N%O%s%I%i$r(B -$B2r=|$9$k(B</description> +<description>ファイルの拡張子に関連付けられたすべてのハンドラを +解除する</description> <syntax>RemoveHandler <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>virtual host</context><context>directory</context> @@ -702,11 +702,11 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <override>FileInfo</override> <usage> - <p><directive>RemoveHandler</directive> $B%G%#%l%/%F%#%V(B - $B$OM?$($i$l$?3HD%;R$K4XO"IU$1$i$l$?%O%s%I%i$r<h$j>C$7$^$9!#(B - $B$3$l$K$h$j!"%5%V%G%#%l%/%H%j$K$"$k(B <code>.htaccess</code> - $B%U%!%$%k$,?F%G%#%l%/%H%j$d%5!<%P$N@_Dj%U%!%$%k(B - $B$+$i7Q>5$7$?4XO"IU$1$r<h$j>C$9$3$H$,$G$-$^$9!#$?$H$($P(B:</p> + <p><directive>RemoveHandler</directive> ディレクティブ + は与えられた拡張子に関連付けられたハンドラを取り消します。 + これにより、サブディレクトリにある <code>.htaccess</code> + ファイルが親ディレクトリやサーバの設定ファイル + から継承した関連付けを取り消すことができます。たとえば:</p> <example><title>/foo/.htaccess:</title> AddHandler server-parsed .html @@ -716,35 +716,35 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> RemoveHandler .html </example> - <p>$B$3$l$O!"(B<code>/foo/bar</code> $B%G%#%l%/%H%j$N(B <code>.html</code> - $B%U%!%$%k$O(B SSI (<module>mod_include</module> $B%b%8%e!<%k;2>H(B) $B$G$O$J$/!"(B - $BIaDL$N%U%!%$%k$H$7$F07$o$l$k$h$&$K$9$k8z2L$,$"$j$^$9!#(B + <p>これは、<code>/foo/bar</code> ディレクトリの <code>.html</code> + ファイルは SSI (<module>mod_include</module> モジュール参照) ではなく、 + 普通のファイルとして扱われるようにする効果があります。 </p> - <p><var>extension</var> $B$OBgJ8;z>.J8;z$r6hJL$7$^$;$s!#(B - $B$^$?!":G=i$N%I%C%H$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p><var>extension</var> は大文字小文字を区別しません。 + また、最初のドットはあってもなくても構いません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>RemoveInputFilter</name> -<description>$B%U%!%$%k3HD%;R$K4XO"IU$1$i$l$?F~NO%U%#%k%?$r2r=|$9$k(B</description> +<description>ファイル拡張子に関連付けられた入力フィルタを解除する</description> <syntax>RemoveInputFilter <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>virtual host</context><context>directory</context> <context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>2.0.26 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>2.0.26 以降で使用可能</compatibility> <usage> - <p><directive>RemoveInputFilter</directive> $B%G%#%l%/%F%#%V$O(B - $B;XDj$5$l$?%U%!%$%k3HD%;R$K4XO"IU$1$i$l$?F~NO%U%#%k%?$r2r=|$7$^$9!#(B - $B$3$l$rMxMQ$9$k$3$H$G!"?F%G%#%l%/%H%j$d%5!<%P@_Dj%U%!%$%k$+$i(B - $B7Q>5$7$?4XO"IU$1$r(B $B%5%V%G%#%l%/%H%jFb$K$*$$$F(B - <code>.htaccess</code> $B%U%!%$%k$G<h$j>C$9$3$H$,$G$-$^$9!#(B</p> - - <p><var>extension</var> $B0z?t$OBgJ8;z>.J8;z$r6hJL$7$^$;$s!#$^$?!"(B - $B:G=i$N%I%C%H$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p><directive>RemoveInputFilter</directive> ディレクティブは + 指定されたファイル拡張子に関連付けられた入力フィルタを解除します。 + これを利用することで、親ディレクトリやサーバ設定ファイルから + 継承した関連付けを サブディレクトリ内において + <code>.htaccess</code> ファイルで取り消すことができます。</p> + + <p><var>extension</var> 引数は大文字小文字を区別しません。また、 + 最初のドットはあってもなくても構いません。</p> </usage> <seealso><directive module="mod_mime">AddInputFilter</directive></seealso> <seealso><directive module="core">SetInputFilter</directive></seealso> @@ -752,47 +752,47 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <directivesynopsis> <name>RemoveLanguage</name> -<description>$B%U%!%$%k3HD%;R$K4XO"IU$1$i$l$?8@8l$r2r=|$9$k(B</description> +<description>ファイル拡張子に関連付けられた言語を解除する</description> <syntax>RemoveLanguage <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>virtual host</context><context>directory</context> <context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>2.0.24 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>2.0.24 以降で使用可能</compatibility> <usage> - <p><directive>RemoveLanguage</directive> $B%G%#%l%/%F%#%V$O(B - $B;XDj$5$l$?%U%!%$%k3HD%;R$K4XO"IU$1$i$l$?8@8l$r2r=|$7$^$9!#(B - $B$3$l$rMxMQ$9$k$3$H$G!"?F%G%#%l%/%H%j$d%5!<%P@_Dj%U%!%$%k$+$i(B - $B7Q>5$7$?4XO"IU$1$r(B $B%5%V%G%#%l%/%H%jFb$K$*$$$F(B - <code>.htaccess</code> $B%U%!%$%k$G<h$j>C$9$3$H$,$G$-$^$9!#(B</p> - - <p><var>extension</var> $B0z?t$OBgJ8;z>.J8;z$r6hJL$7$^$;$s!#$^$?!"(B - $B:G=i$N%I%C%H$O$D$$$F$b$D$+$J$/$F$b9=$$$^$;$s!#(B</p> + <p><directive>RemoveLanguage</directive> ディレクティブは + 指定されたファイル拡張子に関連付けられた言語を解除します。 + これを利用することで、親ディレクトリやサーバ設定ファイルから + 継承した関連付けを サブディレクトリ内において + <code>.htaccess</code> ファイルで取り消すことができます。</p> + + <p><var>extension</var> 引数は大文字小文字を区別しません。また、 + 最初のドットはついてもつかなくても構いません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>RemoveOutputFilter</name> -<description>$B%U%!%$%k3HD%;R$K4XO"IU$1$i$l$?=PNO%U%#%k%?$r2r=|$9$k(B</description> +<description>ファイル拡張子に関連付けられた出力フィルタを解除する</description> <syntax>RemoveOutputFilter <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>virtual host</context><context>directory</context> <context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>2.0.26 $B0J9_$G$N$_;HMQ2DG=(B</compatibility> +<compatibility>2.0.26 以降でのみ使用可能</compatibility> <usage> - <p><directive>RemoveOutputFilter</directive> $B%G%#%l%/%F%#%V$O(B - $B;XDj$5$l$?%U%!%$%k3HD%;R$K4XO"IU$1$i$l$?=PNO%U%#%k%?$r2r=|$7$^$9!#(B - $B$3$l$rMxMQ$9$k$3$H$G!"?F%G%#%l%/%H%j$d%5!<%P@_Dj%U%!%$%k$+$i(B - $B7Q>5$7$?4XO"IU$1$r(B $B%5%V%G%#%l%/%H%jFb$K$*$$$F(B - <code>.htaccess</code> $B%U%!%$%k$G<h$j>C$9$3$H$,$G$-$^$9!#(B</p> + <p><directive>RemoveOutputFilter</directive> ディレクティブは + 指定されたファイル拡張子に関連付けられた出力フィルタを解除します。 + これを利用することで、親ディレクトリやサーバ設定ファイルから + 継承した関連付けを サブディレクトリ内において + <code>.htaccess</code> ファイルで取り消すことができます。</p> - <p><var>extension</var> $B$OBgJ8;z>.J8;z$r6hJL$7$^$;$s!#(B - $B$^$?!":G=i$N%I%C%H$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p><var>extension</var> は大文字小文字を区別しません。 + また、最初のドットはあってもなくても構いません。</p> - <example><title>$BNc(B</title> + <example><title>例</title> RemoveOutputFilter shtml </example> </usage> @@ -801,8 +801,8 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <directivesynopsis> <name>RemoveType</name> -<description>$B%U%!%$%k$N3HD%;R$H4XO"IU$1$i$l$?%3%s%F%s%H%?%$%W$r(B -$B2r=|$9$k(B</description> +<description>ファイルの拡張子と関連付けられたコンテントタイプを +解除する</description> <syntax>RemoveType <var>extension</var> [<var>extension</var>] ...</syntax> <contextlist><context>virtual host</context><context>directory</context> @@ -810,78 +810,78 @@ module="mod_mime_magic">MimeMagicFile</directive></seealso> <override>FileInfo</override> <usage> - <p><directive>RemoveType</directive> $B%G%#%l%/%F%#%V$OM?$($i$l$?3HD%;R$N(B - MIME $B%?%$%W$N4XO"IU$1$r<h$j>C$7$^$9!#$3$l$K$h$j!"(B - $B%5%V%G%#%l%/%H%j$K$"$k(B <code>.htaccess</code> - $B%U%!%$%k$,?F%G%#%l%/%H%j$d%5!<%P$N@_Dj%U%!%$%k$+$i7Q>5$7$?(B - $B4XO"IU$1$r<h$j>C$9$3$H$,$G$-$^$9!#$?$H$($P(B:</p> + <p><directive>RemoveType</directive> ディレクティブは与えられた拡張子の + MIME タイプの関連付けを取り消します。これにより、 + サブディレクトリにある <code>.htaccess</code> + ファイルが親ディレクトリやサーバの設定ファイルから継承した + 関連付けを取り消すことができます。たとえば:</p> <example><title>/foo/.htaccess:</title> RemoveType .cgi </example> - <p>$B$3$l$O(B <code>/foo/</code> $B%G%#%l%/%H%j0J2<$N(B <code>.cgi</code> - $B%U%!%$%k$NFCJL$J07$$$r<h$j>C$7$^$9!#%U%!%$%k$O(B <directive - module="core">DefaultType</directive> $B$H$7$F07$o$l$^$9!#(B</p> + <p>これは <code>/foo/</code> ディレクトリ以下の <code>.cgi</code> + ファイルの特別な扱いを取り消します。ファイルは <directive + module="core">DefaultType</directive> として扱われます。</p> - <note><title>$BCm0U(B</title> - <p><directive>RemoveType</directive> $B%G%#%l%/%F%#%V$O(B + <note><title>注意</title> + <p><directive>RemoveType</directive> ディレクティブは <directive module="mod_mime">AddType</directive> - $B%G%#%l%/%F%#%V$N(B<em>$B8e(B</em>$B$K=hM}$5$l$^$9$N$G!"(B - $BN>J}$,F1$8%G%#%l%/%H%j$N@_DjCf$K8=$l$?>l9g!"(B - $B8e<T$N8z2L$,BG$A>C$5$l$k2DG=@-$,$"$j$^$9!#(B</p> + ディレクティブの<em>後</em>に処理されますので、 + 両方が同じディレクトリの設定中に現れた場合、 + 後者の効果が打ち消される可能性があります。</p> </note> - <p><var>extension</var> $B$OBgJ8;z>.J8;z$r6hJL$7$^$;$s!#(B - $B$^$?!":G=i$N%I%C%H$O$"$C$F$b$J$/$F$b9=$$$^$;$s!#(B</p> + <p><var>extension</var> は大文字小文字を区別しません。 + また、最初のドットはあってもなくても構いません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>TypesConfig</name> -<description><code>mime.types</code> $B%U%!%$%k$N0LCV(B</description> +<description><code>mime.types</code> ファイルの位置</description> <syntax>TypesConfig <var>file-path</var></syntax> <default>TypesConfig conf/mime.types</default> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>TypesConfig</directive> $B%G%#%l%/%F%#%V$O!"(BMIME - $B%?%$%W@_Dj%U%!%$%k$N0LCV$r@_Dj$7$^$9!#(B<var>filename</var> $B$O(B - <directive module="core">ServerRoot</directive> $B$+$i$NAjBP%Q%9$G$9!#(B - $B$3$N%U%!%$%k$O%U%!%$%k$N3HD%;R$+$i%3%s%F%s%H%?%$%W$X$N(B - $B%G%U%)%k%H$N%^%C%T%s%0$r@_Dj$7$^$9!#(B - $B$[$H$s$I$N4IM}<T$O!"$h$/;H$o$l$k%U%!%$%kL>$N3HD%;R$r(B - IANA $B$KEPO?$5$l$?%3%s%F%s%H%?%$%W$K4XO"IU$1$F$$$k!"(B - Apache $B$N(B <code>mime.types</code> $B%U%!%$%k$r;H$$$^$9!#(B - $B8=:_$N0lMw$O(B <a href= + <p><directive>TypesConfig</directive> ディレクティブは、MIME + タイプ設定ファイルの位置を設定します。<var>filename</var> は + <directive module="core">ServerRoot</directive> からの相対パスです。 + このファイルはファイルの拡張子からコンテントタイプへの + デフォルトのマッピングを設定します。 + ほとんどの管理者は、よく使われるファイル名の拡張子を + IANA に登録されたコンテントタイプに関連付けている、 + Apache の <code>mime.types</code> ファイルを使います。 + 現在の一覧は <a href= "http://www.iana.org/assignments/media-types/index.html" >http://www.iana.org/assignments/media-types/index.html</a> - $B$G4IM}$5$l$F$$$^$9!#$3$l$O!"<gMW$J%a%G%#%"%?%$%W$NDj5A$rDs6!$7$F!"(B - $BI,MW$H$3$m$r(B <directive module="mod_mime">AddType</directive> $B$G(B - $B>e=q$-$9$k!"$H$$$&J}K!$G(B <code>httpd.conf</code> $B$r4JN,$K$7$^$9!#(B - <code>mime.types</code> $B$O%5!<%P$r%"%C%W%0%l!<%I$7$?$H$-$K(B - $BCV$-49$($i$l$k$+$b$7$l$J$$$N$G!"$=$N%U%!%$%k$rD>@\(B - $BJT=8$7$J$$$G$/$@$5$$!#(B</p> + で管理されています。これは、主要なメディアタイプの定義を提供して、 + 必要ところを <directive module="mod_mime">AddType</directive> で + 上書きする、という方法で <code>httpd.conf</code> を簡略にします。 + <code>mime.types</code> はサーバをアップグレードしたときに + 置き換えられるかもしれないので、そのファイルを直接 + 編集しないでください。</p> - <p>$B%U%!%$%k$O!"(B<directive module="mod_mime">AddType</directive> - $B%G%#%l%/%F%#%V$N0z?t$HF1$87A<0$N9T$G9=@.$5$l$^$9!#(B</p> + <p>ファイルは、<directive module="mod_mime">AddType</directive> + ディレクティブの引数と同じ形式の行で構成されます。</p> <example> <var>MIME-type</var> [<var>extension</var>] ... </example> - <p>$B3HD%;R$NBgJ8;z>.J8;z$O6hJL$5$l$^$;$s!#6u9T$d%O%C%7%e(B (`#') - $B$G;O$^$k9T$OL5;k$5$l$^$9!#(B</p> + <p>拡張子の大文字小文字は区別されません。空行やハッシュ (`#') + で始まる行は無視されます。</p> <note> - (1) IANA $B$K4{$KEPO?$5$l$F$$$k!"$"$k$$$O(B (2) - $B9-$/<u$1F~$l$i$l$F$$$F%W%i%C%H%[!<%`4V$G%U%!%$%k3HD%;R$K>WFM$,$J$$!"(B - $B$H$$$&>l9g$G$J$1$l$P!"G[I[Cf$N(B <code>mime.types</code> - $B%U%!%$%k$K?7$?$J$b$N$rEPO?$9$k$h$&$K(B - Apache HTTP Server Project $B$K%j%/%(%9%H$7$J$$$G$/$@$5$$!#(B - <code>category/x-subtype</code> $B$N%j%/%(%9%H$O<+F0E*$K5Q2<$5$l$^$9$7!"(B - $B8@8l$dJ8;z%;%C%H$NL>A06u4V$G4{$K;HMQ$5$l$F$$$F!">WFM$N2DG=@-$N$"$k(B - 2 $BJ8;z$N3HD%;R$b5Q2<$5$l$^$9!#(B + (1) IANA に既に登録されている、あるいは (2) + 広く受け入れられていてプラットホーム間でファイル拡張子に衝突がない、 + という場合でなければ、配布中の <code>mime.types</code> + ファイルに新たなものを登録するように + Apache HTTP Server Project にリクエストしないでください。 + <code>category/x-subtype</code> のリクエストは自動的に却下されますし、 + 言語や文字セットの名前空間で既に使用されていて、衝突の可能性のある + 2 文字の拡張子も却下されます。 </note> </usage> <seealso><module>mod_mime_magic</module></seealso> diff --git a/docs/manual/mod/mod_negotiation.xml.ja b/docs/manual/mod/mod_negotiation.xml.ja index 5569d5bee7..56a50d93a0 100644 --- a/docs/manual/mod/mod_negotiation.xml.ja +++ b/docs/manual/mod/mod_negotiation.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -23,109 +23,109 @@ <modulesynopsis metafile="mod_negotiation.xml.meta"> <name>mod_negotiation</name> -<description><a href="../content-negotiation.html">$B%3%s%F%s%H%M%4%7%(!<%7%g%s(B</a> - $B5!G=$rDs6!$9$k(B</description> +<description><a href="../content-negotiation.html">コンテントネゴシエーション</a> + 機能を提供する</description> <status>Base</status> <sourcefile>mod_negotiation.c</sourcefile> <identifier>negotiation_module</identifier> <summary> - <p>$B%3%s%F%s%H%M%4%7%(!<%7%g%s!"$h$j@53N$K$O%3%s%F%s%D$NA*Br5!G=$O!"(B - $BJ#?tMQ0U$5$l$F$$$k%I%-%e%a%s%H$+$i!"%/%i%$%"%s%H$NG=NO$K0lHV9g$C$?(B - $B%I%-%e%a%s%H$rA*Br$9$k5!G=$G$9!#$3$N<BAu$OFs$D$"$j$^$9!#(B</p> + <p>コンテントネゴシエーション、より正確にはコンテンツの選択機能は、 + 複数用意されているドキュメントから、クライアントの能力に一番合った + ドキュメントを選択する機能です。この実装は二つあります。</p> <ul> - <li>$B%?%$%W%^%C%W(B (<code>type-map</code> - $B%O%s%I%i$G07$o$l$k%U%!%$%k(B)$B!#$3$l$O(B variants - $B$r4^$s$G$$$k%U%!%$%k$rL@<(E*$K;XDj$7$^$9!#(B</li> - - <li>MultiViews $B$NC5:w(B (<code>MultiViews</code> <directive - module="core">Option</directive> $B$GM-8z$K$J$j$^$9(B)$B!#(B - $B%5!<%P$,0EL[$NFb$K%U%!%$%kL>$N%Q%?!<%s%^%C%A$r9T$J$$!"(B - $B$=$N7k2L$+$iA*Br$7$^$9!#(B</li> + <li>タイプマップ (<code>type-map</code> + ハンドラで扱われるファイル)。これは variants + を含んでいるファイルを明示的に指定します。</li> + + <li>MultiViews の探索 (<code>MultiViews</code> <directive + module="core">Option</directive> で有効になります)。 + サーバが暗黙の内にファイル名のパターンマッチを行ない、 + その結果から選択します。</li> </ul> </summary> <seealso><directive module="core">Options</directive></seealso> <seealso><module>mod_mime</module></seealso> -<seealso><a href="../content-negotiation.html">$B%3%s%F%s%H%M%4%7%(!<%7%g%s(B</a></seealso> -<seealso><a href="../env.html">$B4D6-JQ?t(B</a></seealso> - -<section id="typemaps"><title>$B%?%$%W%^%C%W(B</title> - <p>$B%?%$%W%^%C%W$O(B RFC 822 $B$N%a!<%k%X%C%@$KN`;w$7$?=q<0$G$9!#(B - $B%I%-%e%a%s%H$N5-=R$,6u9T$GJ,N%$5$l$F=q$+$l$F$$$F!"%O%C%7%eJ8;z(B - ('#') $B$G;O$^$k9T$O%3%a%s%H$H$7$F07$o$l$^$9!#(B - $B%I%-%e%a%s%H$N@bL@$OJ#?t$N%X%C%@%l%3!<%I$+$i9=@.$5$l$^$9!#(B - $B%l%3!<%I$O!"B3$-$N9T$,6uGr$G;O$^$C$F$$$k$HJ#?t$N9T$K$^$?$,$j$^$9!#(B - $B:G=i$N6uGr$,>C5n$5$l$F!"A0$N9T$H$D$J$2$F(B 1 $B9T$H$7$F07$o$l$^$9!#(B - $B%X%C%@%l%3!<%I$O%-!<%o!<%IL>$N8e$KCM$,B3$/$H$$$&7A<0$G!"(B - $B%-!<%o!<%IL>$O>o$K%3%m%s$G=*$o$j$^$9!#6uGr$O%X%C%@L>$HCM$N4V!"(B - $BCM$N%H!<%/%s$N4V$KF~$l$k$3$H$,$G$-$^$9!#(B - $B;HMQ2DG=$J%X%C%@$O0J2<$N$H$*$j$G$9(B:</p> +<seealso><a href="../content-negotiation.html">コンテントネゴシエーション</a></seealso> +<seealso><a href="../env.html">環境変数</a></seealso> + +<section id="typemaps"><title>タイプマップ</title> + <p>タイプマップは RFC 822 のメールヘッダに類似した書式です。 + ドキュメントの記述が空行で分離されて書かれていて、ハッシュ文字 + ('#') で始まる行はコメントとして扱われます。 + ドキュメントの説明は複数のヘッダレコードから構成されます。 + レコードは、続きの行が空白で始まっていると複数の行にまたがります。 + 最初の空白が消去されて、前の行とつなげて 1 行として扱われます。 + ヘッダレコードはキーワード名の後に値が続くという形式で、 + キーワード名は常にコロンで終わります。空白はヘッダ名と値の間、 + 値のトークンの間に入れることができます。 + 使用可能なヘッダは以下のとおりです:</p> <dl> <dt><code>Content-Encoding:</code></dt> - <dd>$B%U%!%$%k$N%(%s%3!<%G%#%s%0!#(BApache $B$O(B <directive - module="mod_mime">AddEncoding</directive> $B%G%#%l%/%F%#%V(B - $B$GDj5A$5$l$?%(%s%3!<%G%#%s%0$@$1$rG'<1$7$^$9!#DL>o(B compress - $B$5$l$?%U%!%$%k$N$?$a$N(B <code>x-compress</code> $B$H(B gzip - $B$5$l$?%U%!%$%k$N$?$a$N(B <code>x-gzip</code> $B$r4^$_$^$9!#(B - $B%(%s%3!<%G%#%s%0$NHf3S$r$9$k$H$-$O!"@\F,<-(B <code>x-</code> - $B$OL5;k$5$l$^$9!#(B</dd> + <dd>ファイルのエンコーディング。Apache は <directive + module="mod_mime">AddEncoding</directive> ディレクティブ + で定義されたエンコーディングだけを認識します。通常 compress + されたファイルのための <code>x-compress</code> と gzip + されたファイルのための <code>x-gzip</code> を含みます。 + エンコーディングの比較をするときは、接頭辞 <code>x-</code> + は無視されます。</dd> <dt><code>Content-Language:</code></dt> - <dd>$B%$%s%?!<%M%C%HI8=`$N8@8l%?%0(B + <dd>インターネット標準の言語タグ (<a href="http://www.ietf.org/rfc/rfc1766.txt">RFC 1766</a>) - $B$GDj5A$5$l$F$$$k8@8l$N<oN`!#Nc$($P!"(B<code>en</code> - $B$O1Q8l$rI=$7$^$9!#(B - $BJ#?t$N8@8l$,3JG<$5$l$k>l9g$O%3%s%^$G6h@Z$i$l$^$9!#(B</dd> + で定義されている言語の種類。例えば、<code>en</code> + は英語を表します。 + 複数の言語が格納される場合はコンマで区切られます。</dd> <dt><code>Content-Length:</code></dt> - <dd>$B%U%!%$%k$ND9$5(B ($B%P%$%H?t(B)$B!#(B - $B$3$N%X%C%@$,$J$$>l9g!"%U%!%$%k$N<B:]$ND9$5$,;HMQ$5$l$^$9!#(B</dd> + <dd>ファイルの長さ (バイト数)。 + このヘッダがない場合、ファイルの実際の長さが使用されます。</dd> <dt><code>Content-Type:</code></dt> - <dd>$B%I%-%e%a%s%H$N(B MIME - $B%a%G%#%"%?%$%W!"%*%W%7%g%J%k$J%Q%i%a!<%?IU$-!#%Q%i%a!<%?$N9=J8$O(B + <dd>ドキュメントの MIME + メディアタイプ、オプショナルなパラメータ付き。パラメータの構文は <code>name=value</code> - $B$G!"%a%G%#%"%?%$%W$dB>$N%Q%i%a!<%?$H$O%;%_%3%m%s$GJ,N%$5$l$^$9!#(B - $B6&DL$N%Q%i%a!<%?$O0J2<$N$H$*$j(B: + で、メディアタイプや他のパラメータとはセミコロンで分離されます。 + 共通のパラメータは以下のとおり: <dl> <dt><code>level</code></dt> - <dd>$B%a%G%#%"%?%$%W$N%P!<%8%g%s$r<($9@0?t!#(B - <code>text/html</code> $B$G$O(B 2 $B$,%G%U%)%k%H$G!"$=$NB>$N>l9g$O(B - 0 $B$,%G%U%)%k%H$G$9!#(B</dd> + <dd>メディアタイプのバージョンを示す整数。 + <code>text/html</code> では 2 がデフォルトで、その他の場合は + 0 がデフォルトです。</dd> <dt><code>qs</code></dt> - <dd>$B%/%i%$%"%s%H$NG=NO$K4X78$J$/!"(Bvariant - $B$rB>$HHf3S$7$?$H$-$NAjBPE*$J!VIJ<A!W$G!"(B0.0 $B$+$i(B 1.0 - $B$NHO0O$NIbF0E@>.?t!#(B - $BNc$($P!"<L??$rI=8=$7$h$&$H$7$F$$$k$H$-$OIaDL$O(B JPEG - $B%U%!%$%k$NJ}$,(B ASCII $B%U%!%$%k$h$j$b9b$$IJ<A$K$J$j$^$9!#(B - $B$7$+$7!"%j%=!<%9$,(B ASCII $B%"!<%H$GI=8=$5$l$F$$$k$H$-$O!"(BASCII - $B%U%!%$%k$NJ}$,(B JPEG - $B%U%!%$%k$h$j$b9b$$IJ<A$K$J$j$^$9!#$3$N$h$&$K!"(B<code>qs</code> - $B$O%j%=!<%9Kh$KFCM-$NCM$r<h$j$^$9!#(B + <dd>クライアントの能力に関係なく、variant + を他と比較したときの相対的な「品質」で、0.0 から 1.0 + の範囲の浮動点小数。 + 例えば、写真を表現しようとしているときは普通は JPEG + ファイルの方が ASCII ファイルよりも高い品質になります。 + しかし、リソースが ASCII アートで表現されているときは、ASCII + ファイルの方が JPEG + ファイルよりも高い品質になります。このように、<code>qs</code> + はリソース毎に特有の値を取ります。 </dd> </dl> - <example><title>$BNc(B</title> + <example><title>例</title> Content-Type: image/jpeg; qs=0.8 </example> </dd> <dt><code>URI:</code></dt> - <dd>($B;XDj$N%a%G%#%"%?%$%W!"%3%s%F%s%H%(%s%3!<%G%#%s%0$N(B) variant $B$N(B - $B%U%!%$%k$N(B uri. $B$3$l$O!"%^%C%W%U%!%$%k$+$i$NAjBP(B URL $B$H$7$F(B - $B2r<a$5$l$^$9!#F1$8%5!<%P$KB8:_$7$J$1$l$P$J$i$:!"%/%i%$%"%s%H$,(B - $BD>@\%j%/%(%9%H$7$?$H$-$K%"%/%;%9$r5v2D$5$l$k$b$N$G$J$1$l$P$J$j$^$;$s!#(B</dd> + <dd>(指定のメディアタイプ、コンテントエンコーディングの) variant の + ファイルの uri. これは、マップファイルからの相対 URL として + 解釈されます。同じサーバに存在しなければならず、クライアントが + 直接リクエストしたときにアクセスを許可されるものでなければなりません。</dd> <dt><code>Body:</code></dt> - <dd>Apache 2.0 $B$G?7@_$5$l$?$3$N(B Body $B%X%C%@$r;H$C$F!"(B - $B%j%=!<%9$N<B:]$NFbMF$r%?%$%W%^%C%W%U%!%$%k$K=q$/$3$H$,$G$-$^$9!#(B - $B$3$N%X%C%@$OK\J8$NFbMF$N6h@Z$j$H$J$kJ8;zNs$G;O$^$kI,MW$,$"$j$^$9!#(B - $B%?%$%W%^%C%W%U%!%$%k$NB3$/9T$O!"6h@Z$jJ8;zNs$,8+$D$+$k$^$G!"(B - $B%j%=!<%9$NK\J8$K$J$j$^$9!#(B + <dd>Apache 2.0 で新設されたこの Body ヘッダを使って、 + リソースの実際の内容をタイプマップファイルに書くことができます。 + このヘッダは本文の内容の区切りとなる文字列で始まる必要があります。 + タイプマップファイルの続く行は、区切り文字列が見つかるまで、 + リソースの本文になります。 <example><title>Example:</title> Body:----xyz----<br /> @@ -141,110 +141,110 @@ </section> <section id="multiviews"><title>MultiViews</title> - <p>MultiViews $BC5:w$O!"(B<code>Multiviews</code> <directive - module="core">Options</directive> $B%G%#%l%/%F%#%V$K$h$jM-8z$K$J$j$^$9!#(B - $B%5!<%P$,(B <code>/some/dir/foo</code> - $B$X$N%j%/%(%9%H$r<u$1<h$j!"(B<code>/some/dir/foo</code> $B$,B8:_(B - <em>$B$7$J$$(B</em>$B>l9g!"%5!<%P$O%G%#%l%/%H%j$rFI$s$G!"(B - <code>foo.*</code> $B$K$"$F$O$^$kA4$F$N%U%!%$%k$rC5$7!"(B - $B;v<B>e$=$l$i$N%U%!%$%k$r%^%C%W$9$k%?%$%W%^%C%W$r:n$j$^$9!#(B - $B$=$N$H$-!"%a%G%#%"%?%$%W$H%3%s%F%s%H%(%s%3!<%G%#%s%0$O!"(B - $B$=$N%U%!%$%kL>$rD>@\;XDj$7$?$H$-$HF1$8$b$N$,3d$jEv$F$i$l$^$9!#(B - $B$=$l$+$i%/%i%$%"%s%H$NMW5a$K0lHV9g$&$b$N$rA*$S!"(B - $B$=$N%I%-%e%a%s%H$rJV$7$^$9!#(B</p> - - <p>$B%U%!%$%k$rA*Br$9$k:]$K!"4XO"$9$k%3%s%F%s%H%M%4%7%(!<%7%g%s$N(B - $B%a%?>pJs$r;}$?$J$$%U%!%$%k$K$D$$$F!"H=Dj$r9T$&$+$I$&$+$r(B + <p>MultiViews 探索は、<code>Multiviews</code> <directive + module="core">Options</directive> ディレクティブにより有効になります。 + サーバが <code>/some/dir/foo</code> + へのリクエストを受け取り、<code>/some/dir/foo</code> が存在 + <em>しない</em>場合、サーバはディレクトリを読んで、 + <code>foo.*</code> にあてはまる全てのファイルを探し、 + 事実上それらのファイルをマップするタイプマップを作ります。 + そのとき、メディアタイプとコンテントエンコーディングは、 + そのファイル名を直接指定したときと同じものが割り当てられます。 + それからクライアントの要求に一番合うものを選び、 + そのドキュメントを返します。</p> + + <p>ファイルを選択する際に、関連するコンテントネゴシエーションの + メタ情報を持たないファイルについて、判定を行うかどうかを <directive module="mod_mime">MultiViewsMatch</directive> - $B%G%#%l%/%F%#%V$G@_Dj$7$^$9!#(B</p> + ディレクティブで設定します。</p> </section> <directivesynopsis> <name>CacheNegotiatedDocs</name> -<description>$B%3%s%F%s%H%M%4%7%(!<%7%g%s$5$l$?%I%-%e%a%s%H$r%W%m%-%7%5!<%P$,(B -$B%-%c%C%7%e$G$-$k$h$&$K$9$k(B</description> +<description>コンテントネゴシエーションされたドキュメントをプロキシサーバが +キャッシュできるようにする</description> <syntax>CacheNegotiatedDocs On|Off</syntax> <default>CacheNegotiatedDocs Off</default> <contextlist><context>server config</context> <context>virtual host</context> </contextlist> -<compatibility>$B%P!<%8%g%s(B 2.0$B$G9=J8$,JQ$o$j$^$7$?(B</compatibility> +<compatibility>バージョン 2.0で構文が変わりました</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$,@_Dj$5$l$F$$$k$H!"%3%s%F%s%H%M%4%7%(!<%7%g%s(B - $B$r$7$?7k2L$N%I%-%e%a%s%H$N%-%c%C%7%e$r5v2D$7$^$9!#(B - $B$3$l$O!"%W%m%-%7$N8e$m$K$$$k%/%i%$%"%s%H$,G=NO$K0lHV9g$C$?(B - $B%I%-%e%a%s%H$G$O$J$/!"(B - $B%-%c%C%7%e$r$h$j8z2LE*$K$9$k$b$N$rF@$k2DG=@-$,$"$k$H$$$&$3$H$G$9!#(B</p> - - <p>$B$3$N%G%#%l%/%F%#%V$O(B HTTP/1.0 $B%V%i%&%6$+$i$N%j%/%(%9%H(B - $B$N$_$KE,MQ$5$l$^$9!#(BHTTP/1.1 $B$O!"(B - $B8r>D$5$l$?%I%-%e%a%s%H$N%-%c%C%7%e$KBP$7$F$:$C$H$h$$@)8f$,2DG=$J$N$G!"(B - $B$3$N%G%#%l%/%F%#%V$O(B HTTP/1.1 $B$N%j%/%(%9%H$K$O1F6A$7$^$;$s!#(B</p> - <p>2.0 $B$h$jA0$N%P!<%8%g%s$G$O!"(B - <directive>CacheNegotiatedDocs</directive> $B$O0z?t$r<h$i$:!"(B - $B%G%#%l%/%F%#%V$,B8:_$9$k$3$H$G(B on $B$NF0:n$r$7$F$$$^$7$?!#(B</p> + <p>このディレクティブが設定されていると、コンテントネゴシエーション + をした結果のドキュメントのキャッシュを許可します。 + これは、プロキシの後ろにいるクライアントが能力に一番合った + ドキュメントではなく、 + キャッシュをより効果的にするものを得る可能性があるということです。</p> + + <p>このディレクティブは HTTP/1.0 ブラウザからのリクエスト + のみに適用されます。HTTP/1.1 は、 + 交渉されたドキュメントのキャッシュに対してずっとよい制御が可能なので、 + このディレクティブは HTTP/1.1 のリクエストには影響しません。</p> + <p>2.0 より前のバージョンでは、 + <directive>CacheNegotiatedDocs</directive> は引数を取らず、 + ディレクティブが存在することで on の動作をしていました。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ForceLanguagePriority</name> -<description>$BMW5a$K9g$&C1FH$N%I%-%e%a%s%H$,8+$D$+$i$J$+$C$?$H$-$K9T$J$&$3$H$r;XDj(B +<description>要求に合う単独のドキュメントが見つからなかったときに行なうことを指定 </description> <syntax>ForceLanguagePriority None|Prefer|Fallback [Prefer|Fallback]</syntax> <default>ForceLanguagePriority Prefer</default> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context><context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>$B%P!<%8%g%s(B 2.0.30 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>バージョン 2.0.30 以降で使用可能</compatibility> <usage> - <p><directive>ForceLanguagePriority</directive> $B%G%#%l%/%F%#%V$O(B - $BMW5a$K9g$&%I%-%e%a%s%H$r0l$D$@$1JV$9$3$H$,$G$-$J$$$H$-$K!"(B + <p><directive>ForceLanguagePriority</directive> ディレクティブは + 要求に合うドキュメントを一つだけ返すことができないときに、 <directive module="mod_negotiation">LanguagePriority</directive> - $B%G%#%l%/%F%#%V$r;H$C$F%M%4%7%(!<%7%g%s$N7k2L$rJV$7$^$9!#(B</p> + ディレクティブを使ってネゴシエーションの結果を返します。</p> - <p><code>ForceLanguagePriority Prefer</code> $B$O!"F1Ey$NA*Br;h$,(B - $B$$$/$D$+$"$k$H$-$K!"(BHTTP $B$N(B 300 (MULTIPLE CHOICES) $B$rJV$9Be$o$j$K!"(B - <code>LanguagePriority</code> $B$r;H$C$F0l$D$@$1%I%-%e%a%s%H$rJV$9$h$&$K(B - $B$7$^$9!#0J2<$N%G%#%l%/%F%#%V$,;XDj$5$l$F$$$F!"%f!<%6$N(B <code>Accept-Language</code> - $B%X%C%@$G$O(B <code>en</code> $B$H(B <code>de</code> $B$NIJ<A$,6&$K(B - <code>.500</code> ($BF1$8$/$i$$5vMF(B) $B$G$"$k$H$-$O!"(B - $B:G=i$K%^%C%A$9$k(B variant $B$N(B <code>en</code> $B$,Aw$i$l$^$9!#(B</p> + <p><code>ForceLanguagePriority Prefer</code> は、同等の選択肢が + いくつかあるときに、HTTP の 300 (MULTIPLE CHOICES) を返す代わりに、 + <code>LanguagePriority</code> を使って一つだけドキュメントを返すように + します。以下のディレクティブが指定されていて、ユーザの <code>Accept-Language</code> + ヘッダでは <code>en</code> と <code>de</code> の品質が共に + <code>.500</code> (同じくらい許容) であるときは、 + 最初にマッチする variant の <code>en</code> が送られます。</p> <example> LanguagePriority en fr de<br /> ForceLanguagePriority Prefer </example> - <p><code>ForceLanguagePriority Fallback</code> $B$G$O!"(BHTTP 406 - (NOT ACCEPTABLE) $B$rAw?.$9$kBe$o$j$K!"(B + <p><code>ForceLanguagePriority Fallback</code> では、HTTP 406 + (NOT ACCEPTABLE) を送信する代わりに、 <directive module="mod_negotiation">LanguagePriority</directive> - $B$,@5$7$$7k2L$rAw$j$^$9!#(B - $B0J2<$N%G%#%l%/%F%#%V$,;XDj$5$l$F$$$F!"%f!<%6$N(B <code>Accept-Language</code> - $B$,(B <code>es</code> $B8@8l$N$_$r5v2D$7$F$$$F!"$5$i$K$=$N$h$&$J(B variant $B$,$J$$$H$-$K$O!"(B - $B0J2<$N(B <directive module="mod_negotiation">LanguagePriority</directive> - $B$N%j%9%H$N:G=i$N(B variant $B$,Aw$l$l$^$9!#(B</p> + が正しい結果を送ります。 + 以下のディレクティブが指定されていて、ユーザの <code>Accept-Language</code> + が <code>es</code> 言語のみを許可していて、さらにそのような variant がないときには、 + 以下の <directive module="mod_negotiation">LanguagePriority</directive> + のリストの最初の variant が送れれます。</p> <example> LanguagePriority en fr de<br /> ForceLanguagePriority Fallback </example> - <p><code>Prefer</code> $B$H(B <code>Fallback</code> $B$NN>J}$N%*%W%7%g%s$r(B - $BF1;~$K;XDj$9$k$3$H$,$G$-$^$9!#(B - $B$G$9$+$i!"J#?t$N(B variant $B$,$"$k$H$-$O(B - <directive module="mod_negotiation">LanguagePriority</directive> $B$N:G=i$N(B - variant $B$,Aw$i$l!"%/%i%$%"%s%H$N5vMF8@8l$K9g$&(B vaiant $B$,$J$$$H$-$O(B - $BB8:_$9$k%I%-%e%a%s%H$G:G=i$N$b$N$,Aw$i$l$k!"$H$$$&MM$K$9$k$3$H$,$G$-$^$9!#(B</p> + <p><code>Prefer</code> と <code>Fallback</code> の両方のオプションを + 同時に指定することができます。 + ですから、複数の variant があるときは + <directive module="mod_negotiation">LanguagePriority</directive> の最初の + variant が送られ、クライアントの許容言語に合う vaiant がないときは + 存在するドキュメントで最初のものが送られる、という様にすることができます。</p> </usage> <seealso><directive module="mod_mime">AddLanguage</directive></seealso> </directivesynopsis> <directivesynopsis> <name>LanguagePriority</name> -<description>$B%/%i%$%"%s%H$,M%@hEY$r<($5$J$+$C$?$H$-$N8@8l$N(B variant $B$NM%@hEY$r(B -$B;XDj(B</description> +<description>クライアントが優先度を示さなかったときの言語の variant の優先度を +指定</description> <syntax>LanguagePriority <var>MIME-lang</var> [<var>MIME-lang</var>] ...</syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -252,25 +252,25 @@ <override>FileInfo</override> <usage> - <p><directive>LanguagePriority</directive> $B$O!"(BMultiViews - $B%j%/%(%9%H$r07$&$H$-$K!"%/%i%$%"%s%H$,M%@h=g0L$rDs6!$7$F$$$J$$>l9g$N(B - $B8@8l$NM%@h=g0L$r@_Dj$7$^$9!#(B<var>MIME-lang</var> - $B$N%j%9%H$,M%@hEY$N9_=g$KJB$S$^$9!#(B</p> + <p><directive>LanguagePriority</directive> は、MultiViews + リクエストを扱うときに、クライアントが優先順位を提供していない場合の + 言語の優先順位を設定します。<var>MIME-lang</var> + のリストが優先度の降順に並びます。</p> <example><title>Example:</title> LanguagePriority en fr de </example> - <p><code>foo.html</code> $B$,%j%/%(%9%H$5$l!"(B<code>foo.html.fr</code> - $B$H(B <code>foo.html.de</code> $B$,N>J}B8:_$7!"(B - $B%V%i%&%6$,8@8l$NM%@h=g0L$rDs6!$7$F$J$$>l9g$O(B - <code>foo.html.fr</code> $B$,JV$5$l$^$9!#(B</p> + <p><code>foo.html</code> がリクエストされ、<code>foo.html.fr</code> + と <code>foo.html.de</code> が両方存在し、 + ブラウザが言語の優先順位を提供してない場合は + <code>foo.html.fr</code> が返されます。</p> - <p>$B$3$N%G%#%l%/%F%#%V$OB>$NJ}K!$G!V:GA1!W(B - $B$N8@8l$,7hDj$G$-$J$$$H$-$+!"(B<directive - module="mod_negotiation">ForceLanguagePriority</directive> $B%G%#%l%/%F%#%V$,(B - <code>None</code> $B0J30$N$H$-$K$N$_8z2L$,$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B - $B0lHLE*$K$O!"%5!<%PB&$G$O$J$/%/%i%$%"%s%HB&$G9%$_$N8@8l$r7hDj$7$^$9!#(B</p> + <p>このディレクティブは他の方法で「最善」 + の言語が決定できないときか、<directive + module="mod_negotiation">ForceLanguagePriority</directive> ディレクティブが + <code>None</code> 以外のときにのみ効果があることに注意してください。 + 一般的には、サーバ側ではなくクライアント側で好みの言語を決定します。</p> </usage> <seealso><directive module="mod_mime">AddLanguage</directive></seealso> </directivesynopsis> diff --git a/docs/manual/mod/mod_proxy.xml.ja b/docs/manual/mod/mod_proxy.xml.ja index 38d9a2ab51..976d56631e 100644 --- a/docs/manual/mod/mod_proxy.xml.ja +++ b/docs/manual/mod/mod_proxy.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 189754:661107 (outdated) --> @@ -23,43 +23,43 @@ <modulesynopsis metafile="mod_proxy.xml.meta"> <name>mod_proxy</name> -<description>HTTP/1.1 $B%W%m%-%7(B/$B%2!<%H%&%'%$%5!<%P(B</description> +<description>HTTP/1.1 プロキシ/ゲートウェイサーバ</description> <status>Extension</status> <sourcefile>mod_proxy.c</sourcefile> <identifier>proxy_module</identifier> <summary> - <note type="warning"><title>$B7Y9p(B</title> + <note type="warning"><title>警告</title> <p><a href="#access" - >$B%5!<%P$r0BA4$K$9$k(B</a>$B$^$G(B <directive module="mod_proxy" - >ProxyRequests</directive> $B$OM-8z$K$7$J$$$G$/$@$5$$!#(B - $B%*!<%W%s%W%m%-%7%5!<%P$O$"$J$?<+?H$N%M%C%H%o!<%/$K$H$C$F$b!"(B - $B%$%s%?!<%M%C%HA4BN$K$H$C$F$b4m81$G$9!#(B</p> + >サーバを安全にする</a>まで <directive module="mod_proxy" + >ProxyRequests</directive> は有効にしないでください。 + オープンプロキシサーバはあなた自身のネットワークにとっても、 + インターネット全体にとっても危険です。</p> </note> - <p>$B$3$N%b%8%e!<%k$O(B Apache $B$N%W%m%-%7(B/$B%2!<%H%&%'%$5!G=$r<BAu$7$F$$$^$9!#(B + <p>このモジュールは Apache のプロキシ/ゲートウェイ機能を実装しています。 <code>AJP13</code> (Apache JServe Protocol version 1.3), - <code>FTP</code>, <code>CONNECT</code> (SSL $BMQ(B), + <code>FTP</code>, <code>CONNECT</code> (SSL 用), <code>HTTP/0.9</code>, <code>HTTP/1.0</code>, <code>HTTP/1.1</code> - $B$N%W%m%-%75!G=$r<BAu$7$F$$$^$9!#$3$l$i$N%W%m%H%3%k$d$=$NB>$N%W%m%H%3%kMQ$N(B - $B%W%m%-%75!G=$r;}$C$?!"B>$N%b%8%e!<%k$K@\B3$9$k$h$&$K$b@_Dj$G$-$^$9!#(B</p> + のプロキシ機能を実装しています。これらのプロトコルやその他のプロトコル用の + プロキシ機能を持った、他のモジュールに接続するようにも設定できます。</p> - <p>Apache $B$N%W%m%-%75!G=$O(B <module>mod_proxy</module> $B$NB>$K!"(B - $B$$$/$D$+$N%b%8%e!<%k$KJ,3d$5$l$F$$$^$9(B: + <p>Apache のプロキシ機能は <module>mod_proxy</module> の他に、 + いくつかのモジュールに分割されています: <module>mod_proxy_http</module>, <module>mod_proxy_ftp</module>, <module>mod_proxy_ajp</module>, <module>mod_proxy_balancer</module>, - <module>mod_proxy_connect</module> $B$G$9!#$G$9$+$i!"(B - $BFCDj$N%W%m%-%7$N5!G=$r;H$$$?$$>l9g$O!"(B<module>mod_proxy</module> <em>$B$H(B</em> - $B3:Ev$9$k%b%8%e!<%k$r%5!<%P$K(B ($B%3%s%Q%$%k;~$K@EE*$K9T$J$&$+(B - <directive module="mod_so">LoadModule</directive> $B$GF0E*$KFI$_9~$`$+$7$F(B) - $BAH$_9~$`I,MW$,$"$j$^$9!#(B</p> - - <p>$B$3$l$K2C$($F!"B>$N%b%8%e!<%k$K$h$C$F3HD%5!G=$,Ds6!$5$l$F$$$^$9!#(B - $B%-%c%C%7%e$O(B <module>mod_cache</module> $B$H4XO"%b%8%e!<%k$G(B - $BDs6!$5$l$F$$$^$9!#(BSSL/TLS $B$G1s3V%5!<%P$K@\B3$9$k5!G=$O(B - <module>mod_ssl</module> $B$N(B <code>SSLProxy*</code> $B%G%#%l%/%F%#%V$G(B - $BDs6!$5$l$F$$$^$9!#$3$l$i$N5!G=$rMxMQ$9$k$?$a$K$O!"3:Ev$9$k%b%8%e!<%k$r(B - $BAH$_9~$s$G@_Dj$7$J$1$l$P$J$j$^$;$s!#(B</p> + <module>mod_proxy_connect</module> です。ですから、 + 特定のプロキシの機能を使いたい場合は、<module>mod_proxy</module> <em>と</em> + 該当するモジュールをサーバに (コンパイル時に静的に行なうか + <directive module="mod_so">LoadModule</directive> で動的に読み込むかして) + 組み込む必要があります。</p> + + <p>これに加えて、他のモジュールによって拡張機能が提供されています。 + キャッシュは <module>mod_cache</module> と関連モジュールで + 提供されています。SSL/TLS で遠隔サーバに接続する機能は + <module>mod_ssl</module> の <code>SSLProxy*</code> ディレクティブで + 提供されています。これらの機能を利用するためには、該当するモジュールを + 組み込んで設定しなければなりません。</p> </summary> <seealso><module>mod_cache</module></seealso> <seealso><module>mod_proxy_http</module></seealso> @@ -68,66 +68,66 @@ <seealso><module>mod_proxy_balancer</module></seealso> <seealso><module>mod_ssl</module></seealso> - <section id="forwardreverse"><title>$B%U%)%o!<%I%W%m%-%7$H%j%P!<%9%W%m%-%7(B</title> - <p>Apache $B$O(B<dfn>$B%U%)%o!<%I(B</dfn>$B%W%m%-%7$H$7$F$b!"(B - <dfn>$B%j%P!<%9(B</dfn>$B%W%m%-%7$H$7$F$b@_Dj$9$k$3$H$,$G$-$^$9!#(B</p> - - <p>$BDL>o$N(B<dfn>$B%U%)%o!<%I%W%m%-%7(B</dfn>$B$O%/%i%$%"%s%H$H(B - <em>$B%*%j%8%s%5!<%P(B</em> <transnote>$B%3%s%F%s%D@8@.85$N%5!<%P(B</transnote> - $B$N4V$K0LCV$9$kCf4V%5!<%P$G$9!#(B - $B%*%j%8%s%5!<%P$+$i%3%s%F%s%D$r<hF@$9$k2aDx$G$O!"%/%i%$%"%s%H$O(B - $B9T$-@h$H$7$F%*%j%8%s%5!<%P$r;XDj$7$D$D%W%m%-%7$K%j%/%(%9%H$rAw$j!"(B - $B%W%m%-%7$O%*%j%8%s%5!<%P$+$i%3%s%F%s%D<hF@$N%j%/%(%9%H$rAw$j!"(B - $B%3%s%F%s%D$,<hF@$G$-$l$P$=$l$r%/%i%$%"%s%H$KJV$7$^$9!#(B - $B%/%i%$%"%s%H$,B>$N%5%$%H$K%U%)%o!<%I%W%m%/%77PM3$G%"%/%;%9$9$k$K$O!"(B - $BFCJL$K$=$lMQ$N@_Dj$r$7$J$1$l$P$J$j$^$;$s!#(B</p> - - <p>$B%U%)%o!<%I%W%m%-%7$N0lHLE*$J;HMQJ}K!$O!"%U%!%$%"%&%)!<%k$K$h$C$F(B - $B@)8B$5$l$F$$$kFbIt$N%/%i%$%"%s%H$K%$%s%?!<%M%C%H$X$N%"%/%;%9$r(B - $BDs6!$9$k$b$N$G$9!#%U%)%o!<%I%W%m%-%7$O%M%C%H%o!<%/$N;HMQNL$r(B - $B8:$i$9$?$a$K(B (<module>mod_cache</module> $B$GDs6!$5$l$F$$$k(B) - $B%-%c%C%7%e5!G=$rMQ$$$k$3$H$b$G$-$^$9!#(B</p> - - <p>$B%U%)%o!<%I%W%m%-%7$O(B <directive - module="mod_proxy">ProxyRequests</directive> $B%G%#%l%/%F%#%V$G(B - $BM-8z$K$J$j$^$9!#%U%)%o!<%I%W%m%-%7$G$O!"%/%i%$%"%s%H$OK\Ev$N?H85$r(B - $B1#$7$FG$0U$N%5%$%H$K%"%/%;%9$G$-$k$h$&$K$J$k$?$a!"%U%)%o!<%I%W%m%-%7$r(B - $BM-8z$K$9$kA0$K!">5G'$5$l$?%/%i%$%"%s%H$N$_$,%W%m%-%7$K%"%/%;%9$G$-$k$h$&$K(B - <a href="#access">$B%5!<%P$r0BA4$K$9$k(B</a>$B$3$H$,=EMW$G$9!#(B</p> - - <p>$B0lJ}(B<dfn>$B%j%P!<%9%W%m%-%7(B</dfn>$B$O!"%/%i%$%"%s%H$K$OIaDL$N(B - $B%&%'%V%5!<%P$N$h$&$K8+$($^$9!#%/%i%$%"%s%HB&$KFCJL$J@_Dj$OI,MW$"$j$^$;$s!#(B - $B%/%i%$%"%s%H$O%j%P!<%9%W%m%-%7$NL>A06u4V$KBP$7$FDL>o$N%3%s%F%s%D$X$N(B - $B%j%/%(%9%H$r9T$J$$$^$9!#%W%m%-%7$O%j%/%(%9%H$r$I$3$KAw$l$PNI$$$+$rH=Dj$7!"(B - $B$"$?$+$b<+J,<+?H$,%*%j%8%s%5!<%P$G$"$C$?$+$N$h$&$K%/%i%$%"%s%H$K(B - $B%3%s%F%s%D$rJV$7$^$9!#(B</p> - - <p>$B%j%P!<%9%W%m%-%7$N$h$/$"$kMxMQJ}K!$O!"%$%s%?!<%M%C%H%f!<%6$K(B - $B%U%!%$%"%&%)!<%k$NCf$K$"$k%5!<%P$K%"%/%;%9$rM?$($k$H$$$&$b$N$G$9!#(B - $B%j%P!<%9%W%m%-%7$OJ#?t$N%P%C%/%(%s%I%5!<%P$XIi2YJ,;6$r$9$k$?$a$K(B - $B;H$C$?$j!"CY$$%P%C%/%(%s%I%(%s%I%5!<%P$N$?$a$K%-%c%C%7%e5!G=$rDs6!$7$?$j(B - $B$9$k$?$a$K;H$($^$9!#$^$?!"%j%P!<%9%W%m%-%7$OJ#?t$N%5!<%P$r(B - $BF1$8(B URL $B6u4V$K$^$H$a$k$?$a$K;H$&$3$H$b$G$-$^$9!#(B</p> - - <p>$B%j%P!<%9%W%m%-%7$O(B <directive - module="mod_proxy">ProxyPass</directive> $B%G%#%l%/%F%#%V$d(B + <section id="forwardreverse"><title>フォワードプロキシとリバースプロキシ</title> + <p>Apache は<dfn>フォワード</dfn>プロキシとしても、 + <dfn>リバース</dfn>プロキシとしても設定することができます。</p> + + <p>通常の<dfn>フォワードプロキシ</dfn>はクライアントと + <em>オリジンサーバ</em> <transnote>コンテンツ生成元のサーバ</transnote> + の間に位置する中間サーバです。 + オリジンサーバからコンテンツを取得する過程では、クライアントは + 行き先としてオリジンサーバを指定しつつプロキシにリクエストを送り、 + プロキシはオリジンサーバからコンテンツ取得のリクエストを送り、 + コンテンツが取得できればそれをクライアントに返します。 + クライアントが他のサイトにフォワードプロクシ経由でアクセスするには、 + 特別にそれ用の設定をしなければなりません。</p> + + <p>フォワードプロキシの一般的な使用方法は、ファイアウォールによって + 制限されている内部のクライアントにインターネットへのアクセスを + 提供するものです。フォワードプロキシはネットワークの使用量を + 減らすために (<module>mod_cache</module> で提供されている) + キャッシュ機能を用いることもできます。</p> + + <p>フォワードプロキシは <directive + module="mod_proxy">ProxyRequests</directive> ディレクティブで + 有効になります。フォワードプロキシでは、クライアントは本当の身元を + 隠して任意のサイトにアクセスできるようになるため、フォワードプロキシを + 有効にする前に、承認されたクライアントのみがプロキシにアクセスできるように + <a href="#access">サーバを安全にする</a>ことが重要です。</p> + + <p>一方<dfn>リバースプロキシ</dfn>は、クライアントには普通の + ウェブサーバのように見えます。クライアント側に特別な設定は必要ありません。 + クライアントはリバースプロキシの名前空間に対して通常のコンテンツへの + リクエストを行ないます。プロキシはリクエストをどこに送れば良いかを判定し、 + あたかも自分自身がオリジンサーバであったかのようにクライアントに + コンテンツを返します。</p> + + <p>リバースプロキシのよくある利用方法は、インターネットユーザに + ファイアウォールの中にあるサーバにアクセスを与えるというものです。 + リバースプロキシは複数のバックエンドサーバへ負荷分散をするために + 使ったり、遅いバックエンドエンドサーバのためにキャッシュ機能を提供したり + するために使えます。また、リバースプロキシは複数のサーバを + 同じ URL 空間にまとめるために使うこともできます。</p> + + <p>リバースプロキシは <directive + module="mod_proxy">ProxyPass</directive> ディレクティブや <directive - module="mod_rewrite">RewriteRule</directive> $B%G%#%l%/%F%#%V$N(B - <code>[P]</code> $B%U%i%0$r;H$&$3$H$GM-8z$K$J$j$^$9!#%j%P!<%9%W%m%-%7$N(B - $B@_Dj$N$?$a$K(B <directive - module="mod_proxy">ProxyRequests</directive> $B$r@_Dj$9$kI,MW$O(B - <em>$B$"$j$^$;$s(B</em>$B!#(B</p> + module="mod_rewrite">RewriteRule</directive> ディレクティブの + <code>[P]</code> フラグを使うことで有効になります。リバースプロキシの + 設定のために <directive + module="mod_proxy">ProxyRequests</directive> を設定する必要は + <em>ありません</em>。</p> </section> <!-- /forwardreverse --> - <section id="examples"><title>$B4pK\$NNc(B</title> + <section id="examples"><title>基本の例</title> - <p>$B0J2<$NNc$O<j;O$a$N4JC1$JNc$G$9!#8D!9$N%G%#%l%/%F%#%V$N0UL#$O(B - $B$=$l$>$l$N@bL@$r$*FI$_$/$@$5$$!#(B</p> + <p>以下の例は手始めの簡単な例です。個々のディレクティブの意味は + それぞれの説明をお読みください。</p> - <p>$B$^$?%-%c%C%7%e5!G=$rM-8z$K$7$?$$>l9g$O!"(B<module>mod_cache</module> - $B$N@bL@$rFI$s$G$/$@$5$$!#(B</p> + <p>またキャッシュ機能を有効にしたい場合は、<module>mod_cache</module> + の説明を読んでください。</p> - <example><title>$B%U%)%o!<%I%W%m%-%7(B</title> + <example><title>フォワードプロキシ</title> ProxyRequests On<br /> ProxyVia On<br /> <br /> @@ -140,7 +140,7 @@ </Proxy> </example> - <example><title>$B%j%P!<%9%W%m%-%7(B</title> + <example><title>リバースプロキシ</title> ProxyRequests Off<br /> <br /> <Proxy *><br /> @@ -156,10 +156,10 @@ </section> <!-- /examples --> - <section id="access"><title>$B%W%m%-%7$X$N%"%/%;%9@)8f(B</title> - <p>$B%W%m%-%7$N%"%/%;%9$O0J2<$N$h$&$K(B <directive - module="mod_proxy" type="section">Proxy</directive> $B%3%s%F%J$NCf$K(B - $B%G%#%l%/%F%#%V$r=q$/$3$H$G@)8f$G$-$^$9(B:</p> + <section id="access"><title>プロキシへのアクセス制御</title> + <p>プロキシのアクセスは以下のように <directive + module="mod_proxy" type="section">Proxy</directive> コンテナの中に + ディレクティブを書くことで制御できます:</p> <example> <Proxy *><br /> @@ -171,168 +171,168 @@ </Proxy> </example> - <p>$B%"%/%;%9@)8f$N$?$a$N%G%#%l%/%F%#%V$N$h$j>\$7$$>pJs$O(B - <module>mod_authz_host</module> $B$r$*FI$_$/$@$5$$!#(B</p> + <p>アクセス制御のためのディレクティブのより詳しい情報は + <module>mod_authz_host</module> をお読みください。</p> <p>(<directive - module="mod_proxy">ProxyRequests</directive> $B%G%#%l%/%F%#%V$r(B - $B;H$C$F(B) $B%U%)%o!<%I%W%m%-%7$r@_Dj$7$F$$$k>l9g$O!"87$7$/%"%/%;%9(B - $B@)8B$r9T$J$&$3$H$,Hs>o$KBg@Z$G$9!#$=$&$7$J$$$H!"G$0U$N%/%i%$%"%s%H$,(B - $B?H85$rL@$+$9$3$H$J$/G$0U$N%[%9%H$K%"%/%;%9$9$k$?$a$K%5!<%P$r;H$&$3$H$,(B - $B$G$-$F$7$^$$$^$9!#$3$l$O$"$J$?<+?H$N%M%C%H%o!<%/$K$H$C$F$b!"%$%s%?!<%M%C%H(B - $BA4BN$K$H$C$F$b4m81$J$3$H$G$9!#(B(<code>ProxyRequests Off</code> $B$K$7$F(B + module="mod_proxy">ProxyRequests</directive> ディレクティブを + 使って) フォワードプロキシを設定している場合は、厳しくアクセス + 制限を行なうことが非常に大切です。そうしないと、任意のクライアントが + 身元を明かすことなく任意のホストにアクセスするためにサーバを使うことが + できてしまいます。これはあなた自身のネットワークにとっても、インターネット + 全体にとっても危険なことです。(<code>ProxyRequests Off</code> にして <directive - module="mod_proxy">ProxyPass</directive> $B%G%#%l%/%F%#%V$r;H$C$F(B) - $B%j%P!<%9%W%m%-%7$r;H$C$F$$$k>l9g$K$O!"%/%i%$%"%s%H$O$"$J$?$,L@<(E*$K(B - $B@_Dj$7$?%[%9%H$K$7$+%"%/%;%9$G$-$J$$$?$a!"%U%)%o!<%I%W%m%-%7$N$H$-(B - $B$[$I%"%/%;%9@)8f$KNO$rCm$,$J$/$F$bBg>fIW$G$9!#(B</p> + module="mod_proxy">ProxyPass</directive> ディレクティブを使って) + リバースプロキシを使っている場合には、クライアントはあなたが明示的に + 設定したホストにしかアクセスできないため、フォワードプロキシのとき + ほどアクセス制御に力を注がなくても大丈夫です。</p> </section> <!-- /access --> - <section id="ftp-proxy"><title>FTP $B%W%m%-%7(B</title> + <section id="ftp-proxy"><title>FTP プロキシ</title> - <section id="mimetypes"><title>$B$I$&$7$F%U%!%$%k%?%$%W$,(B <var>xxx</var> - $B$N%U%!%$%k$r(B FTP $B$G%@%&%s%m!<%I$G$-$J$$$N(B?</title> - <p>$B$*$=$i$/!"%W%m%-%7$N(B mime.types $B@_Dj%U%!%$%k$G$=$N%U%!%$%k%?%$%W$,(B - <code>application/octet-stream</code> $B$G$"$k$HDj5A$5$l$F$$$J$$$N$G$7$g$&!#(B - $B0J2<$N$h$&$J$b$N$,Lr$KN)$D$+$b$7$l$^$;$s(B:</p> + <section id="mimetypes"><title>どうしてファイルタイプが <var>xxx</var> + のファイルを FTP でダウンロードできないの?</title> + <p>おそらく、プロキシの mime.types 設定ファイルでそのファイルタイプが + <code>application/octet-stream</code> であると定義されていないのでしょう。 + 以下のようなものが役に立つかもしれません:</p> <example> <pre>application/octet-stream bin dms lha lzh exe class tgz taz</pre> </example> - <p>$BJL$NJ}K!$H$7$F!"$9$Y$F$N%G%U%)%k%H$r%P%$%J%j$K$9$k$3$H$b$G$-$^$9(B:</p> + <p>別の方法として、すべてのデフォルトをバイナリにすることもできます:</p> <example> <pre>DefaultType application/octet-stream</pre> </example> </section> <!-- /mimetypes --> - <section id="type"><title>$B%U%!%$%k(B <var>xxx</var> $B$r(B FTP $B$N(B ASCII $B%@%&%s%m!<%I(B - $B$K$5$;$k$N$O$I$&$9$l$P$h$$$N(B?</title> - <p>$B$^$l$K!"(B($B%G%U%)%k%H$NE>Aw$O(B <code>binary</code> $B%b!<%I$G(B) $BFCDj$N(B - $B%U%!%$%k$N$_(B FTP $B$N(B <code>ASCII</code> $BE>AwJ}K!$r;H$o$J$1$l$P$J$i$J$$(B - $B>l9g$K$O!"%j%/%(%9%H$N:G8e$K(B <code>;type=a</code> $B$rIU$1$k$3$H$G(B - <module>mod_proxy</module> $B$K(B ASCII $BE>Aw$r$5$;$k$3$H$,$G$-$^$9!#(B - ($B$?$@$7!"(BFTP $B$N%G%#%l%/%H%j0lMw$O>o$K(B ASCII $B%b!<%I$G9T$J$o$l$^$9!#(B)</p> + <section id="type"><title>ファイル <var>xxx</var> を FTP の ASCII ダウンロード + にさせるのはどうすればよいの?</title> + <p>まれに、(デフォルトの転送は <code>binary</code> モードで) 特定の + ファイルのみ FTP の <code>ASCII</code> 転送方法を使わなければならない + 場合には、リクエストの最後に <code>;type=a</code> を付けることで + <module>mod_proxy</module> に ASCII 転送をさせることができます。 + (ただし、FTP のディレクトリ一覧は常に ASCII モードで行なわれます。)</p> </section> <!-- /type --> - <section id="ftpnonget"><title>FTP $B$N%"%C%W%m!<%I$O$I$&$9$l$P$h$$$N(B?</title> - <p>$B8=;~E@$G$O!"(Bmod_proxy $B$N(B FTP $B%5%]!<%H$O(B GET $B$N$_$G$9!#$b$A$m$s(B - Apache $B$N(B $B%W%m%-%7$r;H$C$F(B HTTP $B$N%"%C%W%m!<%I(B (POST $B$d(B PUT) $B$r(B - $B$9$k$3$H$O$G$-$^$9!#(B</p> + <section id="ftpnonget"><title>FTP のアップロードはどうすればよいの?</title> + <p>現時点では、mod_proxy の FTP サポートは GET のみです。もちろん + Apache の プロキシを使って HTTP のアップロード (POST や PUT) を + することはできます。</p> </section> - <section id="percent2fhck"><title>$B%[!<%`%G%#%l%/%H%j$N30$N(B FTP $B%U%!%$%k$K(B - $B%"%/%;%9$9$k$K$O$I$&$9$l$P$h$$$N(B?</title> - <p>FTP URI $B$O%m%0%$%s$7$F$$$k%f!<%6$N%[!<%`%G%#%l%/%H%j$+$i$N(B - $BAjBP%Q%9$H$7$F07$o$l$^$9!#;DG0$J$3$H$K!"(B/../ $B$O%V%i%&%6$K$h$j2r<a$5$l!"(B - $B<B:]$K(B FTP $B%5!<%P$K$OAw$i$l$J$$$?$a!"(B/../ $B$r;H$C$F>e0L$N%G%#%l%/%H%j$K(B - $BE~C#$9$k$3$H$O$G$-$^$;$s!#$3$NLdBj$r2r7h$9$k$?$a$K!"$$$o$f$k(B - <dfn>Squid %2f $B%O%C%/(B</dfn> $B$r(B Apache $B$N(B FTP $B%W%m%-%7$O<BAu$7$F$$$^$9!#(B - $B$3$l$O(B <a - href="http://www.squid-cache.org/">Squid Proxy $B%-%c%C%7%e(B</a> $B$N$h$&$J(B - $BB>$N$h$/;H$o$l$F$$$k%W%m%-%7%5!<%P$G$b<h$i$l$F$$$kJ}K!$G$9!#(B - $B%j%/%(%9%H$N%Q%9$N@hF,$K(B <code>/%2f</code> $B$rIU$1$k$3$H$G!"%W%m%-%7$K(B - FTP $B$N3+;O%G%#%l%/%H%j$r(B ($B%[!<%`%G%#%l%/%H%j$NBe$o$j$K(B) <code>/</code> - $B$KJQ$($k$3$H$,$G$-$^$9!#Nc$($P!"(B<code>/etc/motd</code> $B$r<hF@$9$k$?$a$K$O(B - $B<!$N(B URL $B$r;H$$$^$9(B:</p> + <section id="percent2fhck"><title>ホームディレクトリの外の FTP ファイルに + アクセスするにはどうすればよいの?</title> + <p>FTP URI はログインしているユーザのホームディレクトリからの + 相対パスとして扱われます。残念なことに、/../ はブラウザにより解釈され、 + 実際に FTP サーバには送られないため、/../ を使って上位のディレクトリに + 到達することはできません。この問題を解決するために、いわゆる + <dfn>Squid %2f ハック</dfn> を Apache の FTP プロキシは実装しています。 + これは <a + href="http://www.squid-cache.org/">Squid Proxy キャッシュ</a> のような + 他のよく使われているプロキシサーバでも取られている方法です。 + リクエストのパスの先頭に <code>/%2f</code> を付けることで、プロキシに + FTP の開始ディレクトリを (ホームディレクトリの代わりに) <code>/</code> + に変えることができます。例えば、<code>/etc/motd</code> を取得するためには + 次の URL を使います:</p> <example> ftp://<var>user</var>@<var>host</var>/%2f/etc/motd </example> </section> <!-- /percent2fhck --> - <section id="ftppass"><title>$B%V%i%&%6$N(B URL $BI=<($G(B FTP $B$NJ?J8%Q%9%o!<%I$r(B - $B1#$9$K$O$I$&$9$l$P$h$$$N(B?</title> - <p>FTP $B%5!<%P$K%f!<%6L>$H%Q%9%o!<%I$r;H$C$F%m%0%$%s$9$k$?$a$K!"(B - Apache $B$O0[$J$kJ}K!$r;H$$$^$9!#(BURL $B$K%f!<%6L>$H%Q%9%o!<%I$,$^$C$?$/(B - $B$J$$>l9g$O!"(BApache $B$O(B FTP $B%5!<%P$K(B anonymous $B%m%0%$%s$rAw$j$^$9!#(B - <em>$B$D$^$j(B</em>$B!"(B</p> + <section id="ftppass"><title>ブラウザの URL 表示で FTP の平文パスワードを + 隠すにはどうすればよいの?</title> + <p>FTP サーバにユーザ名とパスワードを使ってログインするために、 + Apache は異なる方法を使います。URL にユーザ名とパスワードがまったく + ない場合は、Apache は FTP サーバに anonymous ログインを送ります。 + <em>つまり</em>、</p> <example> user: anonymous<br /> password: apache_proxy@ </example> - <p>$B$3$l$O(B anonymous $B%"%/%;%9$,@_Dj$5$l$?(B - $B$9$Y$F$N(B FTP $B%5!<%P$KBP$7$FF0:n$7$^$9!#(B</p> + <p>これは anonymous アクセスが設定された + すべての FTP サーバに対して動作します。</p> - <p>$B%f!<%6L>$r;H$C$?8D?MJL$N%m%0%$%s$K$O!"(BURL $B$K%f!<%6L>$rF~$l$k$3$H$,(B - $B$G$-$^$9(B:</p> + <p>ユーザ名を使った個人別のログインには、URL にユーザ名を入れることが + できます:</p> <example> ftp://<var>username</var>@<var>host</var>/myfile </example> - <p>$B$3$N%f!<%6L>$,M?$($i$l$?$H$-$K!"(BFTP $B%5!<%P$,%Q%9%o!<%I$rMW5a$9$l$P(B - ($B$b$A$m$s$=$&$9$Y$-$J$N$G$9$,(B)$B!"(BApache $B$O(B <code>401</code> - (Authorization required) $B$rJV$7$^$9!#$3$l$K$h$j!"%V%i%&%6$O%f!<%6L>(B - $B%Q%9%o!<%I$NF~NO%@%$%"%m%0$rI=<($7$^$9!#%Q%9%o!<%I$,F~NO$5$l$?8e!"(B - $B:F$S@\B3$r;n$_!"@.8y$9$l$P%j%/%(%9%H$7$?%j%=!<%9$,I=<($5$l$^$9!#(B - $B$3$NJ}K!$NMxE@$O%V%i%&%6$,%Q%9%o!<%I$rJ?J8$GI=<($7$J$$$3$H$G$9!#(B - ($B$b$7:G=i$+$i(B</p> + <p>このユーザ名が与えられたときに、FTP サーバがパスワードを要求すれば + (もちろんそうすべきなのですが)、Apache は <code>401</code> + (Authorization required) を返します。これにより、ブラウザはユーザ名 + パスワードの入力ダイアログを表示します。パスワードが入力された後、 + 再び接続を試み、成功すればリクエストしたリソースが表示されます。 + この方法の利点はブラウザがパスワードを平文で表示しないことです。 + (もし最初から</p> <example> ftp://<var>username</var>:<var>password</var>@<var>host</var>/myfile </example> - <p>$B$HF~NO$7$?>l9g$K$OI=<($5$l$F$7$^$$$^$9!#(B)</p> + <p>と入力した場合には表示されてしまいます。)</p> - <note><title>$BCm(B</title> - <p>$BAw?.$5$l$k%Q%9%o!<%I$O!"0E9f2=$5$l$FAw$i$l$k$o$1$G$O$"$j$^$;$s!#(B - $B%V%i%&%6$H(B Apache $B%W%m%-%7%5!<%P$O(B base64 $B$GId9f2=$5$l$?(B - $BJ8;zNs$H$7$F!"(BApache $B%W%m%-%7$H(B FTP $B%5!<%P$N4V$OJ?J8$H$7$FAw$i$l$^$9!#(B - $B$G$9$+$i!"(BHTTP $B$r;H$C$F(B HTTP $B$r%"%/%;%9$9$kA0(B ($B$b$7$/$O!"$=$b$=$b(B - $B8D?ME*$J%U%!%$%k$r(B FTP $B$G%"%/%;%9$9$kA0(B) $B$K$h$/9M$($kI,MW$,$"$j$^$9!#(B - $B0BA4$G$J$$DL?.O)$r;H$C$?>l9g$O!"EpD0<T$KESCf$G%Q%9%o!<%I$rEp$^$l$k(B - $B2DG=@-$,$"$j$^$9!#(B</p> + <note><title>注</title> + <p>送信されるパスワードは、暗号化されて送られるわけではありません。 + ブラウザと Apache プロキシサーバは base64 で符号化された + 文字列として、Apache プロキシと FTP サーバの間は平文として送られます。 + ですから、HTTP を使って HTTP をアクセスする前 (もしくは、そもそも + 個人的なファイルを FTP でアクセスする前) によく考える必要があります。 + 安全でない通信路を使った場合は、盗聴者に途中でパスワードを盗まれる + 可能性があります。</p> </note> </section> <!-- /ftppass --> </section> <!-- /ftpproxy --> - <section id="startup"><title>$BCY$$5/F0(B</title> + <section id="startup"><title>遅い起動</title> <p><directive module="mod_proxy" - >ProxyBlock</directive> $B%G%#%l%/%F%#%V$r;H$C$F$$$k>l9g!"(B - $B8e$N%F%9%H$N$?$a$K5/F0;~$K%[%9%H$N(B - IP $B%"%I%l%9$,D4$Y$i$l$F%-%c%C%7%e$5$l$^$9!#%[%9%HL>$N%k%C%/%"%C%W$N(B - $BB.$5$K$h$C$F$O!"?tIC(B ($B$+$=$l0J>e(B) $B$+$+$k$+$b$7$l$^$;$s!#(B</p> + >ProxyBlock</directive> ディレクティブを使っている場合、 + 後のテストのために起動時にホストの + IP アドレスが調べられてキャッシュされます。ホスト名のルックアップの + 速さによっては、数秒 (かそれ以上) かかるかもしれません。</p> </section> <!-- /startup --> - <section id="intranet"><title>$B%$%s%H%i%M%C%H%W%m%-%7(B</title> - <p>$B%$%s%H%i%M%C%H$K$"$k(B Apache $B%W%m%-%7%5!<%P$O30It$X$N%j%/%(%9%H$r(B - $B2q<R$N%U%!%$%"%&%)!<%k$rDL$7$FAw$i$J$1$l$P$J$j$^$;$s!#(B($B$3$N$?$a$K$O(B - $B8D!9$N(B <var>scheme</var> $B$K$D$$$F$=$l$>$l!"%U%!%$%"%&%)!<%k$N(B - $B%W%m%-%7$K%U%)%o!<%I$5$l$k$h$&$K(B - <directive module="mod_proxy">ProxyRemote</directive> $B%G%#%l%/%F%#%V$r(B - $B@_Dj$7$F$/$@$5$$(B)$B!#$7$+$7%$%s%H%i%M%C%HFb$N%j%=!<%9$K%"%/%;%9$9$k$H$-$O!"(B - $B%U%!%$%"%&%)!<%k$rDL$5$J$$$G$b%"%/%;%9$G$-$^$9!#(B - $B$I$N%[%9%H$,%$%s%H%i%M%C%H$KB0$7!"D>@\%"%/%;%9$9$Y$-$+$r;XDj$9$k$K$O!"(B - <directive module="mod_proxy">NoProxy</directive> $B%G%#%l%/%F%#%V$,(B - $BLr$KN)$A$^$9!#(B</p> - - <p>$B%$%s%H%i%M%C%HFb$N%f!<%6$O(B WWW $B$N%j%/%(%9%H$G%m!<%+%k%I%a%$%s$r(B - $B>JN,$9$k$3$H$,$h$/$"$j$^$9!#(B<code>http://somehost.example.com/</code> - $B$H$$$&%j%/%(%9%H$NBe$o$j$K(B "http://somehost/" $B$r%j%/%(%9%H$7$?$j$7$^$9!#(B - $B$3$N$h$&$J%j%/%(%9%H$r<u$1IU$1!"%5!<%P$K@_Dj$5$l$F$$$k%m!<%+%k%I%a%$%s$,(B - $B0EL[$N$&$A$K;H$o$l$F$$$k$H2r<a$7$F!"C1=c$K%j%/%(%9%H$r=hM}$9$k$b$N$b(B - $B>&MQ%W%m%-%7%5!<%P$NCf$K$O$"$j$^$9!#(B - $B%5!<%P$,(B <a - href="#proxyrequests">$B%W%m%-%7$N%5!<%S%9MQ$K@_Dj$5$l$F$$$F(B</a> - <directive module="mod_proxy">ProxyDomain</directive> $B%G%#%l%/%F%#%V$,(B - $B;HMQ$5$l$?>l9g$K$O!"(BApache $B$O%/%i%$%"%s%H$K%j%@%$%l%/%H1~Ez$rAw$C$F!"(B - $B@5$7$$!"40A4$J(B (<transnote>fully qualified</transnote>) - $B%5!<%P$N%"%I%l%9$KAw$k$3$H$,$G$-$^$9!#$3$N$h$&$K(B - $B%j%@%$%l%/%H$9$k$H!"%f!<%6$N%V%C%/%^!<%/$,@5$7$$40A4$J%[%9%HL>$r4^$`(B - $B$3$H$K$b$J$k$?$a!"$h$j9%$^$7$$J}K!$H8@$($k$G$7$g$&!#(B</p> + <section id="intranet"><title>イントラネットプロキシ</title> + <p>イントラネットにある Apache プロキシサーバは外部へのリクエストを + 会社のファイアウォールを通して送らなければなりません。(このためには + 個々の <var>scheme</var> についてそれぞれ、ファイアウォールの + プロキシにフォワードされるように + <directive module="mod_proxy">ProxyRemote</directive> ディレクティブを + 設定してください)。しかしイントラネット内のリソースにアクセスするときは、 + ファイアウォールを通さないでもアクセスできます。 + どのホストがイントラネットに属し、直接アクセスすべきかを指定するには、 + <directive module="mod_proxy">NoProxy</directive> ディレクティブが + 役に立ちます。</p> + + <p>イントラネット内のユーザは WWW のリクエストでローカルドメインを + 省略することがよくあります。<code>http://somehost.example.com/</code> + というリクエストの代わりに "http://somehost/" をリクエストしたりします。 + このようなリクエストを受け付け、サーバに設定されているローカルドメインが + 暗黙のうちに使われていると解釈して、単純にリクエストを処理するものも + 商用プロキシサーバの中にはあります。 + サーバが <a + href="#proxyrequests">プロキシのサービス用に設定されていて</a> + <directive module="mod_proxy">ProxyDomain</directive> ディレクティブが + 使用された場合には、Apache はクライアントにリダイレクト応答を送って、 + 正しい、完全な (<transnote>fully qualified</transnote>) + サーバのアドレスに送ることができます。このように + リダイレクトすると、ユーザのブックマークが正しい完全なホスト名を含む + ことにもなるため、より好ましい方法と言えるでしょう。</p> </section> <!-- /intranet --> - <section id="envsettings"><title>$B%W%m%H%3%k$ND4@0(B</title> - <p>Keepalive $B$d(B HTTP/1.1 $B$rE,@Z$K<BAu$7$F$$$J$$%"%W%j%1!<%7%g%s%5!<%P$,(B - $B$"$k>u67$G!"(BHTTP/1.0 $B$G(B keepalive $B$rL5$7$K$7$F%j%/%(%9%H$rAw$k$?$a$N(B - $B4D6-JQ?t$,Fs$D$"$j$^$9!#$3$l$i$O(B <directive module="mod_env" - >SetEnv</directive> $B%G%#%l%/%F%#%V$G@_Dj$7$^$9!#(B</p> + <section id="envsettings"><title>プロトコルの調整</title> + <p>Keepalive や HTTP/1.1 を適切に実装していないアプリケーションサーバが + ある状況で、HTTP/1.0 で keepalive を無しにしてリクエストを送るための + 環境変数が二つあります。これらは <directive module="mod_env" + >SetEnv</directive> ディレクティブで設定します。</p> - <p><code>force-proxy-request-1.0</code> $B$H(B <code>proxy-nokeepalive</code> - $B$,$=$N4D6-JQ?t$G$9!#(B</p> + <p><code>force-proxy-request-1.0</code> と <code>proxy-nokeepalive</code> + がその環境変数です。</p> <example> <Location /buggyappserver/><br /> @@ -347,18 +347,18 @@ <directivesynopsis type="section"> <name>Proxy</name> -<description>$B%W%m%-%7$5$l$k%j%=!<%9$KE,MQ$5$l$k%3%s%F%J(B</description> +<description>プロキシされるリソースに適用されるコンテナ</description> <syntax><Proxy <var>wildcard-url</var>> ...</Proxy></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive type="section">Proxy</directive> $B%;%/%7%g%sCf$N(B - $B%G%#%l%/%F%#%V$O%^%C%A$9$k%W%m%-%7$5$l$k%3%s%F%s%D$K$N$_E,MQ$5$l$^$9!#(B - $B%7%'%k7A<0$N%o%$%k%I%+!<%I$,;H$($^$9!#(B</p> + <p><directive type="section">Proxy</directive> セクション中の + ディレクティブはマッチするプロキシされるコンテンツにのみ適用されます。 + シェル形式のワイルドカードが使えます。</p> - <p>$BNc$($P!"<!$N@_Dj$O(B <code>yournetwork.example.com</code> $B$N(B - $B%[%9%H$K$N$_%W%m%-%7%5!<%P$r7PM3$7$?%"%/%;%9$r5v2D$7$^$9(B:</p> + <p>例えば、次の設定は <code>yournetwork.example.com</code> の + ホストにのみプロキシサーバを経由したアクセスを許可します:</p> <example> <Proxy *><br /> @@ -370,9 +370,9 @@ </Proxy> </example> - <p>$B<!$NNc$O(B <code>example.com</code> $B$N(B <code>foo</code> $B%G%#%l%/%H%j$N(B - $B$9$Y$F$N%U%!%$%k$KBP$7$F!"%W%m%-%7%5!<%P$rDL$7$FAw$i$l$?$H$-$K$O(B - <code>INCLUDES</code> $B%U%#%k%?$rDL$7$FAw$k$h$&$K@_Dj$7$^$9(B:</p> + <p>次の例は <code>example.com</code> の <code>foo</code> ディレクトリの + すべてのファイルに対して、プロキシサーバを通して送られたときには + <code>INCLUDES</code> フィルタを通して送るように設定します:</p> <example> <Proxy http://example.com/foo/*><br /> @@ -388,343 +388,343 @@ <directivesynopsis> <name>ProxyBadHeader</name> -<description>$B1~Ez$K$*$+$7$J%X%C%@$,$"$k>l9g$N07$$J}$r7h$a$k(B</description> +<description>応答におかしなヘッダがある場合の扱い方を決める</description> <syntax>ProxyBadHeader IsError|Ignore|StartBody</syntax> <default>ProxyBadHeader IsError</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>2.0.44 $B0J9_(B</compatibility> +<compatibility>2.0.44 以降</compatibility> <usage> - <p><directive>ProxyBadHeader</directive> $B%G%#%l%/%F%#%V$O9=J8E*$K(B - $B4V0c$C$?%X%C%@(B (<em>$B$D$^$j(B</em> $B%3%m%s$r4^$^$J$$$b$N(B) $B$r<u$1<h$C$?$H$-$K(B - <module>mod_proxy</module> $B$,$I$&?6$kIq$&$+$r7h$a$^$9!#0J2<$N0z?t$r(B - $B<h$k$3$H$,$G$-$^$9(B:</p> + <p><directive>ProxyBadHeader</directive> ディレクティブは構文的に + 間違ったヘッダ (<em>つまり</em> コロンを含まないもの) を受け取ったときに + <module>mod_proxy</module> がどう振る舞うかを決めます。以下の引数を + 取ることができます:</p> <dl> <dt><code>IsError</code></dt> - <dd>$B%j%/%(%9%H$rCf;_$7$F(B 502 (Bad Gateway) $B1~Ez$rJV$9!#(B - $B$3$l$,%G%U%)%k%H$NF0:n$G$9!#(B</dd> + <dd>リクエストを中止して 502 (Bad Gateway) 応答を返す。 + これがデフォルトの動作です。</dd> <dt><code>Ignore</code></dt> - <dd>$B4V0c$C$?%X%C%@9T$r$=$b$=$bB8:_$7$J$+$C$?$b$N$H$7$F07$&!#(B</dd> + <dd>間違ったヘッダ行をそもそも存在しなかったものとして扱う。</dd> <dt><code>StartBody</code></dt> - <dd>$B4V0c$C$?%X%C%@9T$r<u$1<h$C$?$i!"%X%C%@$NFI$_9~$_$r=*N;$7$F!"(B - $B$=$l0J9_$N;D$j$r%\%G%#$H$7$F07$&!#$3$l$O%X%C%@$H%\%G%#$N4V$K6u9T$rF~$lK:$l$F(B - $B$7$^$C$F$$$k$h$&$J!"$-$A$s$HF0:n$7$F$$$J$$%P%C%/%(%s%I%5!<%P$,$"$k$H$-$K!"(B - $BLdBj$r2sHr$9$k$N$KLr$KN)$A$^$9!#(B</dd> + <dd>間違ったヘッダ行を受け取ったら、ヘッダの読み込みを終了して、 + それ以降の残りをボディとして扱う。これはヘッダとボディの間に空行を入れ忘れて + しまっているような、きちんと動作していないバックエンドサーバがあるときに、 + 問題を回避するのに役に立ちます。</dd> </dl> </usage> </directivesynopsis> <directivesynopsis type="section"> <name>ProxyMatch</name> -<description>$B@55,I=8=$G$N%^%C%A$K$h$k%W%m%-%7%j%=!<%9MQ$N%G%#%l%/%F%#%V%3%s%F%J(B</description> +<description>正規表現でのマッチによるプロキシリソース用のディレクティブコンテナ</description> <syntax><ProxyMatch <var>regex</var>> ...</ProxyMatch></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive type="section">ProxyMatch</directive> $B$O(B URL $B$N%^%C%A$K(B - $B@55,I=8=$rMQ$$$k$3$H$r=|$$$F(B <directive type="section" - >Proxy</directive> $B%G%#%l%/%F%#%V$HF1$8$G$9!#(B</p> + <p><directive type="section">ProxyMatch</directive> は URL のマッチに + 正規表現を用いることを除いて <directive type="section" + >Proxy</directive> ディレクティブと同じです。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyPreserveHost</name> -<description>$B%W%m%-%7%j%/%(%9%H$K!"<u$1IU$1$?(B Host HTTP $B%X%C%@$r;H$&(B</description> +<description>プロキシリクエストに、受け付けた Host HTTP ヘッダを使う</description> <syntax>ProxyPreserveHost On|Off</syntax> <default>ProxyPreserveHost Off</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>Apache 2.0.31 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>Apache 2.0.31 以降で使用可能</compatibility> <usage> - <p>$B$3$N%*%W%7%g%s$,M-8z$K$J$C$F$$$k>l9g!"(B<directive>ProxyPass</directive> - $B$G;XDj$7$?%[%9%HL>$NBe$o$j$K!"<u$1IU$1$?%j%/%(%9%H$N(B Host: $B9T$r(B - $B%W%m%-%7@h$N%[%9%H$KAw$j$^$9!#(B</p> - - <p>$B$3$N%*%W%7%g%s$ODL>o$O(B <code>Off</code> $B$K@_Dj$7$F$/$@$5$$!#(B - $B$[$H$s$I$N>l9g!"$3$l$OBgNL$NL>A0%Y!<%9$N%P!<%A%c%k%[%9%F%#%s%0$r9T$J$C$F$$$F!"(B - $B85!9$N(B Host $B%X%C%@$r%P%C%/%(%s%I%5!<%P$,2r<a$9$kI,MW$N$"$k$H$-$N$h$&$J!"(B - $BFCJL$J@_Dj$,I,MW$J>l9g$K$N$_M-MQ$G$9!#(B</p> + <p>このオプションが有効になっている場合、<directive>ProxyPass</directive> + で指定したホスト名の代わりに、受け付けたリクエストの Host: 行を + プロキシ先のホストに送ります。</p> + + <p>このオプションは通常は <code>Off</code> に設定してください。 + ほとんどの場合、これは大量の名前ベースのバーチャルホスティングを行なっていて、 + 元々の Host ヘッダをバックエンドサーバが解釈する必要のあるときのような、 + 特別な設定が必要な場合にのみ有用です。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyRequests</name> -<description>$B%U%)%o!<%I(B ($BI8=`$N(B) $B%W%m%-%7%j%/%(%9%H$rM-8z$K$9$k(B</description> +<description>フォワード (標準の) プロキシリクエストを有効にする</description> <syntax>ProxyRequests On|Off</syntax> <default>ProxyRequests Off</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$B$3$l$O(B Apache $B$N%U%)%o!<%I%W%m%-%7%5!<%P$H$7$F$NF0:n$r(B - $BM-8z$b$7$/$OL58z$K$7$^$9!#(B(ProxyRequests $B$r(B <code>Off</code> $B$K(B - $B@_Dj$7$F$b!"(B<directive module="mod_proxy">ProxyPass</directive> - $B$N@_Dj$OL58z$K$J$j$^$;$s!#(B)</p> + <p>これは Apache のフォワードプロキシサーバとしての動作を + 有効もしくは無効にします。(ProxyRequests を <code>Off</code> に + 設定しても、<directive module="mod_proxy">ProxyPass</directive> + の設定は無効になりません。)</p> - <p>$BDL>o$N%j%P!<%9%W%m%-%7$N@_Dj$G$O!"$3$N%*%W%7%g%s$O(B <code>Off</code> - $B$K@_Dj$7$F$/$@$5$$!#(B</p> + <p>通常のリバースプロキシの設定では、このオプションは <code>Off</code> + に設定してください。</p> - <p>HTTP $B$d(B FTP $B%5%$%H$X$N%W%m%-%7$N5!G=$rM-8z$K$7$?$$>l9g$O!"(B - <module>mod_proxy_http</module> $B$d(B <module>mod_proxy_ftp</module> $B$,(B - $B%5!<%P$KAH$_9~$^$l$F$$$J$1$l$P$J$j$^$;$s!#(B</p> + <p>HTTP や FTP サイトへのプロキシの機能を有効にしたい場合は、 + <module>mod_proxy_http</module> や <module>mod_proxy_ftp</module> が + サーバに組み込まれていなければなりません。</p> - <note type="warning"><title>$B7Y9p(B</title> + <note type="warning"><title>警告</title> <p><a href="#access" - >$B%5!<%P$r0BA4$K$9$k(B</a>$B$^$G(B <directive module="mod_proxy" - >ProxyRequests</directive> $B$OM-8z$K$7$J$$$G$/$@$5$$!#(B - $B%*!<%W%s%W%m%-%7%5!<%P$O$"$J$?<+?H$N%M%C%H%o!<%/$K$H$C$F$b!"(B - $B%$%s%?!<%M%C%HA4BN$K$H$C$F$b4m81$G$9!#(B</p> + >サーバを安全にする</a>まで <directive module="mod_proxy" + >ProxyRequests</directive> は有効にしないでください。 + オープンプロキシサーバはあなた自身のネットワークにとっても、 + インターネット全体にとっても危険です。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyRemote</name> -<description>$BFCDj$N%j%/%(%9%H$r07$&;~$K;H$o$l$k%j%b!<%H%W%m%-%7$r;XDj$9$k(B</description> +<description>特定のリクエストを扱う時に使われるリモートプロキシを指定する</description> <syntax>ProxyRemote <var>match</var> <var>remote-server</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O$3$N%W%m%-%7$KBP$9$k%j%b!<%H%W%m%-%7$rDj5A$7$^$9!#(B - <var>match</var> $B$O%j%b!<%H%5!<%P$,%5%]!<%H$9$k(B URL $B%9%-!<%`!"(B - $B%j%b!<%H%5!<%P$,;H$&$O$:$N(B URL $B$N0lItJ,!"%5!<%P$,$9$Y$F$N(B - $B%j%/%(%9%H$K;H$o$l$k$3$H$r<($9(B <code>*</code> $B$N$I$l$+$K$J$j$^$9!#(B - <var>remote-server</var> $B$O%j%b!<%H%5!<%P$NItJ,(B URL $B$G$9!#9=J8(B:</p> + <p>このディレクティブはこのプロキシに対するリモートプロキシを定義します。 + <var>match</var> はリモートサーバがサポートする URL スキーム、 + リモートサーバが使うはずの URL の一部分、サーバがすべての + リクエストに使われることを示す <code>*</code> のどれかになります。 + <var>remote-server</var> はリモートサーバの部分 URL です。構文:</p> <example> <dfn>remote-server</dfn> = <var>scheme</var>://<var>hostname</var>[:<var>port</var>] </example> - <p><var>scheme</var> $B$O<B:]>e%j%b!<%H%5!<%P$H$NDL?.$K;H$o$l$k%W%m%H%3%k$r(B - $B7hDj$7$^$9!#$3$N%b%8%e!<%k$G$O(B <code>http</code> $B$@$1$,%5%]!<%H$5$l$F(B - $B$$$^$9!#(B</p> + <p><var>scheme</var> は実際上リモートサーバとの通信に使われるプロトコルを + 決定します。このモジュールでは <code>http</code> だけがサポートされて + います。</p> - <example><title>$BNc(B</title> + <example><title>例</title> ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000<br /> ProxyRemote * http://cleversite.com<br /> ProxyRemote ftp http://ftpproxy.mydomain.com:8080 </example> - <p>$B$3$NNc$G$O!"%W%m%-%7$O(B FTP $B%j%/%(%9%H$rJL$N(B HTTP $B%j%/%(%9%H$GJq$s$G(B - $B$=$N$h$&$J%j%/%(%9%H$r07$($kJL$N%W%m%-%7$KE>Aw$7$^$9!#(B</p> + <p>この例では、プロキシは FTP リクエストを別の HTTP リクエストで包んで + そのようなリクエストを扱える別のプロキシに転送します。</p> - <p>$B$3$N%*%W%7%g%s$O%j%P!<%9%W%m%-%7$N@_Dj$b%5%]!<%H$7$^$9!#(B - $B%5!<%P$,JL$N%U%)%o!<%I%W%m%-%7$N8e$m$K1#$5$l$F$$$k>l9g$G$b(B - $B%P%C%/%(%s%I%&%'%V%5!<%P$r%P!<%A%c%k%[%9%H$N(B URL $B6u4V$KF~$l$k$3$H$,(B - $B$G$-$^$9!#(B</p> + <p>このオプションはリバースプロキシの設定もサポートします。 + サーバが別のフォワードプロキシの後ろに隠されている場合でも + バックエンドウェブサーバをバーチャルホストの URL 空間に入れることが + できます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyRemoteMatch</name> -<description>$B@55,I=8=$G$N%^%C%A$K$h$k%j%/%(%9%H$r07$&%j%b!<%H%W%m%-%7$N;XDj(B</description> +<description>正規表現でのマッチによるリクエストを扱うリモートプロキシの指定</description> <syntax>ProxyRemoteMatch <var>regex</var> <var>remote-server</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>ProxyRemoteMatch</directive> $B$O:G=i$N0z?t$,%j%/%(%9%H$5$l$?(B - URL $B$K%^%C%A$9$k@55,I=8=$G$"$k$3$H$r=|$1$P(B <directive - module="mod_proxy">ProxyRemote</directive> $B%G%#%l%/%F%#%V$HF1$8$G$9!#(B</p> + <p><directive>ProxyRemoteMatch</directive> は最初の引数がリクエストされた + URL にマッチする正規表現であることを除けば <directive + module="mod_proxy">ProxyRemote</directive> ディレクティブと同じです。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyPass</name> -<description>$B%j%b!<%H%5!<%P$r%m!<%+%k%5!<%P$N(B URL $B6u4V$K%^%C%W$9$k(B</description> +<description>リモートサーバをローカルサーバの URL 空間にマップする</description> <syntax>ProxyPass [<var>path</var>] !|<var>url</var> [<var>key=value</var> <var>key=value</var> ...]]</syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context> </contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%j%b!<%H%5!<%P$r%m!<%+%k%5!<%P$NL>A06u4V$K(B - $B%^%C%W$G$-$k$h$&$K$7$^$9!#%m!<%+%k%5!<%P$ODL>o$N0UL#$G$N%W%m%-%7$H(B - $B$7$F$OF0:n$;$:!"%j%b!<%H%5!<%P$N%_%i!<$H$7$F?6$kIq$$$^$9!#(B - <var>path</var> $B$O%m!<%+%k$N2>A[%Q%9$NL>A0$G$9!#(B<var>url</var> $B$O(B - $B%j%b!<%H%5!<%P$NItJ,(B URL $B$K$J$j!"%/%(%j!<J8;zNs$r4^$`$3$H$O$G$-$^$;$s!#(B</p> + <p>このディレクティブはリモートサーバをローカルサーバの名前空間に + マップできるようにします。ローカルサーバは通常の意味でのプロキシと + しては動作せず、リモートサーバのミラーとして振る舞います。 + <var>path</var> はローカルの仮想パスの名前です。<var>url</var> は + リモートサーバの部分 URL になり、クエリー文字列を含むことはできません。</p> - <note type="warning"><directive>ProxyPass</directive> $B%G%#%l%/%F%#%V$r(B - $B;H$C$F$$$k$H$-$O(B <directive - module="mod_proxy">ProxyRequests</directive> $B%G%#%l%/%F%#%V$ODL>o$O(B - <strong>off</strong> $B$K@_Dj$5$l$F$$$k$Y$-$G$9!#(B</note> + <note type="warning"><directive>ProxyPass</directive> ディレクティブを + 使っているときは <directive + module="mod_proxy">ProxyRequests</directive> ディレクティブは通常は + <strong>off</strong> に設定されているべきです。</note> - <p>$B%m!<%+%k%5!<%P$N%"%I%l%9$,(B <code>http://example.com/</code> $B$G$"$k$H(B - $B$7$^$9!#$9$k$H!"(B</p> + <p>ローカルサーバのアドレスが <code>http://example.com/</code> であると + します。すると、</p> <example> ProxyPass /mirror/foo/ http://backend.example.com/ </example> - <p>$B$H@_Dj$9$k$H(B <code>http://example.com/mirror/foo/bar</code> $B$X$N(B - $B%j%/%(%9%H$,FbItE*$K(B <code>http://backend.example.com/bar</code> $B$X$N(B - $B%W%m%-%7%j%/%(%9%H$KJQ49$5$l$k$3$H$K$J$j$^$9!#(B</p> + <p>と設定すると <code>http://example.com/mirror/foo/bar</code> への + リクエストが内部的に <code>http://backend.example.com/bar</code> への + プロキシリクエストに変換されることになります。</p> - <p>$B%5%V%G%#%l%/%H%j$r%j%P!<%9%W%m%-%7$7$?$/$J$$$H$-$K(B <code>!</code> $B$O(B - $BLr$KN)$A$^$9!#(B<em>$BNc$($P(B</em>$B!"(B</p> + <p>サブディレクトリをリバースプロキシしたくないときに <code>!</code> は + 役に立ちます。<em>例えば</em>、</p> <example> ProxyPass /mirror/foo/i !<br /> ProxyPass /mirror/foo http://backend.example.com </example> - <p>$B$O(B <code>/mirror/foo/i</code> $B$r(B<em>$B=|$/(B</em> - <code>/mirror/foo</code> $B$X$N$9$Y$F$N%j%/%(%9%H$r(B - <code>backend.example.com</code> $B$K%W%m%-%7$7$^$9!#(B</p> + <p>は <code>/mirror/foo/i</code> を<em>除く</em> + <code>/mirror/foo</code> へのすべてのリクエストを + <code>backend.example.com</code> にプロキシします。</p> - <note><title>$BCm(B</title> - <p>$B=gHV$O=EMW$G$9!#0lHLE*$J(B <directive>ProxyPass</directive> - $B%G%#%l%/%F%#%V$N(B<em>$BA0$K(B</em> - $B=|30%G%#%l%/%F%#%V$rCV$/I,MW$,$"$j$^$9!#(B</p> + <note><title>注</title> + <p>順番は重要です。一般的な <directive>ProxyPass</directive> + ディレクティブの<em>前に</em> + 除外ディレクティブを置く必要があります。</p> </note> - <p>2.1 $B$N?75!G=$G!"%P%C%/%(%s%I%5!<%P$H$N@\B3$K%W!<%k$5$l$?%3%M%/%7%g%s$r(B - $B;H$($k$h$&$K$J$j$^$7$?!#(B<code>key=value</code> $B7A<0$N%Q%i%a!<%?$G(B - $B$3$N%3%M%/%7%g%s%W!<%j%s%0$ND4@0$,$G$-$^$9!#(B<code>Hard Maximum</code> - $B$N%G%U%)%k%HCM$O!"M-8z$K$J$C$F$$$k(B MPM $B$G$N%W%m%;%9Ev$?$j$N%9%l%C%I?t$H(B - $BF1$8?t$N%3%M%/%7%g%s?t$G$9!#(Bprefork MPM $B$G$ODL>o$O(B 1 $B$G!"(Bworker MPM $B$G$O(B - <directive>ThreadsPerChild</directive> $B$GD4@0$5$l$^$9!#(B</p> + <p>2.1 の新機能で、バックエンドサーバとの接続にプールされたコネクションを + 使えるようになりました。<code>key=value</code> 形式のパラメータで + このコネクションプーリングの調整ができます。<code>Hard Maximum</code> + のデフォルト値は、有効になっている MPM でのプロセス当たりのスレッド数と + 同じ数のコネクション数です。prefork MPM では通常は 1 で、worker MPM では + <directive>ThreadsPerChild</directive> で調整されます。</p> - <p><code>min</code> $B$N@_Dj$G!"%P%C%/%(%s%I%5!<%P$H$N4V$K2?K\$N%3%M%/%7%g%s$r(B - $B>o;~3+$/$+$,7h$^$j$^$9!#(BSoft Maximum <code>smax</code> $B$N?t$K(B - $BC#$9$k$^$GI,MW$K1~$8$F%3%M%/%7%g%s$O@8@.$5$l$^$9!#(B<code>smax</code> - $B$rD6$($??t$N%3%M%/%7%g%s$O!"@8B8;~4V(B <code>ttl</code> $B$G@ZCG$5$l$^$9!#(B - $B%P%C%/%(%s%I%5!<%P$H(B Hard Maximum <code>max</code> $B$N?t0J>e$N%3%M%/%7%g%s$r(B - $B@8@.$9$k$3$H$O$"$j$^$;$s!#(B</p> + <p><code>min</code> の設定で、バックエンドサーバとの間に何本のコネクションを + 常時開くかが決まります。Soft Maximum <code>smax</code> の数に + 達するまで必要に応じてコネクションは生成されます。<code>smax</code> + を超えた数のコネクションは、生存時間 <code>ttl</code> で切断されます。 + バックエンドサーバと Hard Maximum <code>max</code> の数以上のコネクションを + 生成することはありません。</p> <example> ProxyPass /example http://backend.example.com smax=5 max=20 ttl=120 retry=300 </example> <table> - <tr><th>$B%Q%i%a!<%?(B</th> - <th>$B%G%U%)%k%HCM(B</th> - <th>$B@bL@(B</th></tr> + <tr><th>パラメータ</th> + <th>デフォルト値</th> + <th>説明</th></tr> <tr><td>min</td> <td>0</td> - <td>$B%P%C%/%(%s%I%5!<%P$H$N@\B3$G(B - $B>o$K3+$$$F$$$k%3%M%/%7%g%s?t$N:G>.CM(B</td></tr> + <td>バックエンドサーバとの接続で + 常に開いているコネクション数の最小値</td></tr> <tr><td>max</td> <td>1...n</td> - <td>$B%P%C%/%(%s%I%5!<%P$H$N@\B3?t$N(B Hard Maximum - <transnote>$B%O!<%I%j%_%C%H(B</transnote>$B!#(B - $B%G%U%)%k%HCM$O!";HMQ$7$F$$$k(B MPM $B$N%W%m%;%9$"$?$j$N%9%l%C%I?t$K$J$C$F$$$^$9!#(B - Prefork MPM $B$G$O>o$K(B 1 $B$G!"(BWorker MPM $B$G$O(B <directive>ThreadsPerChild</directive> - $B$GD4@a$G$-$^$9!#(BHard Maximum $B0J>e$K%P%C%/%(%s%I%5!<%P$H$N%3%M%/%7%g%s$r(B - $B@8@.$9$k$3$H$O$"$j$^$;$s!#(B</td></tr> + <td>バックエンドサーバとの接続数の Hard Maximum + <transnote>ハードリミット</transnote>。 + デフォルト値は、使用している MPM のプロセスあたりのスレッド数になっています。 + Prefork MPM では常に 1 で、Worker MPM では <directive>ThreadsPerChild</directive> + で調節できます。Hard Maximum 以上にバックエンドサーバとのコネクションを + 生成することはありません。</td></tr> <tr><td>smax</td> <td>max</td> - <td>$B@\B3?t$N(B Soft Maximum <transnote>$B%=%U%H%j%_%C%H(B</transnote>$B$^$G!"(B - $B%3%M%/%7%g%s$OI,MW$K1~$8$F@8@.$5$l$^$9!#(B - <code>smax</code> $B$rD6$($??t$N%3%M%/%7%g%s$O@8B8;~4V(B <code>ttl</code> - $B$G@ZCG$5$l$^$9!#(B + <td>接続数の Soft Maximum <transnote>ソフトリミット</transnote>まで、 + コネクションは必要に応じて生成されます。 + <code>smax</code> を超えた数のコネクションは生存時間 <code>ttl</code> + で切断されます。 </td></tr> <tr><td>ttl</td> <td>-</td> - <td><code>smax</code> $B?t$rD6$($?Hs3hF0>uBV$N%3%M%/%7%g%s$N@8B8;~4V$r!"(B - $BIC$G;XDj$7$^$9!#$3$N4|4VFb$K;HMQ$5$l$J$+$C$?%3%M%/%7%g%s$O!"(B - $BA4$FJD$8$i$l$^$9!#(B + <td><code>smax</code> 数を超えた非活動状態のコネクションの生存時間を、 + 秒で指定します。この期間内に使用されなかったコネクションは、 + 全て閉じられます。 </td></tr> <tr><td>timeout</td> <td><directive>Timeout</directive></td> - <td>$B%3%M%/%7%g%s%?%$%`%"%&%H$rIC$G;XDj$7$^$9!#FC$K;XDj$5$l$J$1$l$P!"(B - $B%U%j!<$J%3%M%/%7%g%s$r<hF@$G$-$k$^$GBT$A$^$9!#$3$N%G%#%l%/%F%#%V$O(B - <code>max</code> $B%Q%i%a!<%?$H9g$o$;$F;H$&$3$H$G!"%P%C%/%(%s%I%5!<%P$H$N(B - $B@\B3?t$r@)8f$9$k$N$K;H$$$^$9!#(B + <td>コネクションタイムアウトを秒で指定します。特に指定されなければ、 + フリーなコネクションを取得できるまで待ちます。このディレクティブは + <code>max</code> パラメータと合わせて使うことで、バックエンドサーバとの + 接続数を制御するのに使います。 </td></tr> <tr><td>acquire</td> <td>-</td> - <td>$B@_Dj$9$k$H!"%3%M%/%7%g%s%W!<%k$+$i%U%j!<$N%3%M%/%7%g%s$r<hF@$9$k$?$a$K(B - $BBT5!$9$kBT$A;~4V$N:GBgCM$K$J$j$^$9!#%U%j!<$N%3%M%/%7%g%s$,%W!<%k$K$J$+$C$?>l9g$O!"(B - <code>SERVER_BUSY</code> $B%9%F!<%?%9$,%/%i%$%"%s%H$KJV$5$l$^$9!#(B + <td>設定すると、コネクションプールからフリーのコネクションを取得するために + 待機する待ち時間の最大値になります。フリーのコネクションがプールになかった場合は、 + <code>SERVER_BUSY</code> ステータスがクライアントに返されます。 </td></tr> <tr><td>keepalive</td> <td>Off</td> - <td>$B%P%C%/%(%s%I%5!<%P$H(B Apache $B$N4V$K%U%!%$%"!<%&%)!<%k$,$"$k>l9g$K$O!"(B - $B$3$N%Q%i%a!<%?$r;H$C$F$/$@$5$$!#%U%!%$%"%&%)!<%k$O1}!9$K$7$F!"(B - $BHs3hF0>uBV$N%3%M%/%7%g%s$rMn$H$=$&$H$7$^$9!#(B - $B$3$N%U%i%0$O(B OS $B$K;X<($7$F!"(B<code>KEEP_ALIVE</code> $B%a%C%;!<%8$rHs3hF0>uBV$N(B - $B%3%M%/%7%g%s$G$bAw$k$h$&$K$7$^$9(B ($B4V3V$O(B OS $B$N%0%m!<%P%k@_Dj$K0MB8$7!"(B - $BDL>o$O(B 120ms $B4V3V(B) $B!#$3$l$K$h$C$F%U%!%$%"%&%)!<%k$K$h$C$F%3%M%/%7%g%s$,(B - $BMn$H$5$l$k$3$H$rKI$2$^$9!#(Bkeepalive $B$rM-8z$K$9$k$K$O!"$3$N%W%m%Q%F%#$r(B - <code>On</code> $B$K$7$F$/$@$5$$!#(B + <td>バックエンドサーバと Apache の間にファイアーウォールがある場合には、 + このパラメータを使ってください。ファイアウォールは往々にして、 + 非活動状態のコネクションを落とそうとします。 + このフラグは OS に指示して、<code>KEEP_ALIVE</code> メッセージを非活動状態の + コネクションでも送るようにします (間隔は OS のグローバル設定に依存し、 + 通常は 120ms 間隔) 。これによってファイアウォールによってコネクションが + 落とされることを防げます。keepalive を有効にするには、このプロパティを + <code>On</code> にしてください。 </td></tr> <tr><td>retry</td> <td>60</td> - <td>$B%3%M%/%7%g%s$r%W!<%j%s%0$9$k$?$a$N!"%j%H%i%$$N%?%$%`%"%&%H$rIC$G(B - $B;XDj$7$^$9!#%P%C%/%(%s%I%5!<%P$X$N%3%M%/%7%g%s%W!<%j%s%0$,<:GT$7$?>l9g$O!"(B - $B%?%$%`%"%&%H$N4|4V$,2a$.$k$^$G!"$=$N%5!<%P$K%j%/%(%9%H$r%U%)%o!<%I$7$^$;$s!#(B - $B$3$N5!G=$r;H$&$H!"%P%C%/%(%s%I%5!<%P$r%a%s%F%J%s%9$N$?$a$K%7%c%C%H%@%&%s$7!"(B - $B8e$G%*%s%i%$%s$KI|5"$5$;$k$H$$$C$?$3$H$,$G$-$^$9!#(B + <td>コネクションをプーリングするための、リトライのタイムアウトを秒で + 指定します。バックエンドサーバへのコネクションプーリングが失敗した場合は、 + タイムアウトの期間が過ぎるまで、そのサーバにリクエストをフォワードしません。 + この機能を使うと、バックエンドサーバをメンテナンスのためにシャットダウンし、 + 後でオンラインに復帰させるといったことができます。 </td></tr> <tr><td>loadfactor</td> <td>1</td> - <td>$B%o!<%+!<$"$?$j$NIi2Y78?t$G$9!#(BBalancerMember $B$G;H$$$^$9!#(B - 1 $B$+$i(B 100 $B$^$G$N?t;z$G$=$N%o!<%+!<$KBP$9$k@55,2=$5$l$?Ii2YN($r;XDj$7$^$9!#(B + <td>ワーカーあたりの負荷係数です。BalancerMember で使います。 + 1 から 100 までの数字でそのワーカーに対する正規化された負荷率を指定します。 </td></tr> <tr><td>route</td> <td>-</td> - <td>$B%m!<%I%P%i%s%5$G;H$C$?>l9g!"%o!<%+!<$N%k!<%F%#%s%0$r$7$^$9!#(B - $B%k!<%H$O%;%C%7%g%s(B ID $B$KIU2C$5$l$?CM$K$J$j$^$9!#(B + <td>ロードバランサで使った場合、ワーカーのルーティングをします。 + ルートはセッション ID に付加された値になります。 </td></tr> <tr><td>redirect</td> <td>-</td> - <td>$B%o!<%+!<$N%j%@%$%l%/%7%g%s7PO)$G$9!#$3$NCM$ODL>o$O!"(B - $B0BA4$K%/%i%9%?$+$i%N!<%I$r<h$j5n$k@_Dj$rF0E*$KF~$l$k$?$a$K;H$$$^$9!#(B - $B%;%C%7%g%s(B ID $B$NL5$$%j%/%(%9%HA4$F$r;XDj$7$?>l9g$O!"(B - $B$3$NCM$HF1$8%k!<%F%#%s%0%Q%i%a!<%?$r;}$D(B - BalancerMember $B$K%j%@%$%l%/%H$5$l$^$9!#(B + <td>ワーカーのリダイレクション経路です。この値は通常は、 + 安全にクラスタからノードを取り去る設定を動的に入れるために使います。 + セッション ID の無いリクエスト全てを指定した場合は、 + この値と同じルーティングパラメータを持つ + BalancerMember にリダイレクトされます。 </td></tr> </table> - <p>Proxy $B%G%#%l%/%F%#%V$N%9%-!<%`$,(B <code>balancer://</code> $B$K$J$C$F$$$k>l9g$O!"(B - $B%P%C%/%(%s%I%5!<%P$H<B:]$K$ODL?.$7$J$$2>A[%o!<%+!<$,@8@.$5$l$^$9!#(B - $B$3$N%o!<%+!<$O4v$D$+$N(B "$BK\J*$N(B" $B%o!<%+!<$N4IM}$r$D$+$5$I$j$^$9!#(B - $B$3$N>l9g%Q%i%a!<%?$O!"$3$N2>A[%o!<%+!<$KBP$7$F@_Dj$5$l$^$9!#(B + <p>Proxy ディレクティブのスキームが <code>balancer://</code> になっている場合は、 + バックエンドサーバと実際には通信しない仮想ワーカーが生成されます。 + このワーカーは幾つかの "本物の" ワーカーの管理をつかさどります。 + この場合パラメータは、この仮想ワーカーに対して設定されます。 </p> <table> - <tr><th>$B%Q%i%a!<%?(B</th> - <th>$B%G%U%)%k%HCM(B</th> - <th>$B@bL@(B</th></tr> + <tr><th>パラメータ</th> + <th>デフォルト値</th> + <th>説明</th></tr> <tr><td>lbmethod</td> <td>-</td> - <td>Balancer $B$N%m!<%I%P%i%s%9J}K!!#;HMQ$9$k%m!<%I%P%i%s%9$N(B - $B%9%1%8%e!<%j%s%0J}K!$rA*$S$^$9!#=hM}$7$?%j%/%(%9%H$N?t$G=E$_IU$1$9$k(B - <code>byrequests</code> $B$+!"E>AwNL$N%P%$%H?t$G=E$_IU$1$9$k(B - <code>bytraffic</code> $B$r@_Dj$G$-$^$9!#%G%U%)%k%H$O(B - <code>byrequests</code> $B$G$9!#(B + <td>Balancer のロードバランス方法。使用するロードバランスの + スケジューリング方法を選びます。処理したリクエストの数で重み付けする + <code>byrequests</code> か、転送量のバイト数で重み付けする + <code>bytraffic</code> を設定できます。デフォルトは + <code>byrequests</code> です。 </td></tr> <tr><td>stickysession</td> <td>-</td> - <td>$B%P%i%s%5!<$N%9%F%#%C%-!<%;%C%7%g%sL>$G$9!#DL>o$O$3$NCM$O(B <code>JSESSIONID</code> - $B$d(B <code>PHPSESSIONID</code> $B$H$$$C$?$b$N$K$J$j$^$9$,!"$3$NCM$O(B - $B%P%C%/%(%s%I%"%W%j%1!<%7%g%s$N%5%]!<%H$9$k%;%C%7%g%s$K0MB8$7$^$9!#(B + <td>バランサーのスティッキーセッション名です。通常はこの値は <code>JSESSIONID</code> + や <code>PHPSESSIONID</code> といったものになりますが、この値は + バックエンドアプリケーションのサポートするセッションに依存します。 </td></tr> <tr><td>nofailover</td> <td>Off</td> - <td><code>On</code> $B$K$J$C$F$$$k$H!"%o!<%+!<$,%(%i!<$r5/$3$7$?$j(B - $BL58z$K$J$C$F$$$k>l9g$K%;%C%7%g%s$,@Z$l$^$9!#(B - $B%P%C%/%(%s%I%5!<%P$,%;%C%7%g%s%l%W%j%1!<%7%g%s$r%5%]!<%H$7$F$$$J$$>l9g$O!"(B - On $B$K$7$F$/$@$5$$!#(B + <td><code>On</code> になっていると、ワーカーがエラーを起こしたり + 無効になっている場合にセッションが切れます。 + バックエンドサーバがセッションレプリケーションをサポートしていない場合は、 + On にしてください。 </td></tr> <tr><td>timeout</td> <td>0</td> - <td>$B%P%i%s%5!<$N%?%$%`%"%&%H$rIC$G;XDj$7$^$9!#(B - $B$3$NCM$r@_Dj$9$k$H!"%U%j!<$N%o!<%+!<$r<hF@$9$k$^$G$N:GBgBT5!;~4V$K$J$j$^$9!#(B - $B%G%U%)%k%H$G$OBT5!$7$^$;$s!#(B + <td>バランサーのタイムアウトを秒で指定します。 + この値を設定すると、フリーのワーカーを取得するまでの最大待機時間になります。 + デフォルトでは待機しません。 </td></tr> <tr><td>maxattempts</td> <td>1</td> - <td>$B%U%'%$%k%*!<%P!<$r;n$_$k:GBg$N2s?t$r;XDj$7$^$9!#(B + <td>フェイルオーバーを試みる最大の回数を指定します。 </td></tr> </table> @@ -742,46 +742,46 @@ </example> <p><directive type="section" module="core" - >Location</directive> $B%;%/%7%g%s$NCf$G;H$o$l$?>l9g!":G=i$N0z?t$O(B - $B>JN,$5$l!"%m!<%+%k%G%#%l%/%H%j$O(B <directive type="section" module="core" - >Location</directive> $B$+$i<hF@$5$l$^$9!#(B</p> + >Location</directive> セクションの中で使われた場合、最初の引数は + 省略され、ローカルディレクトリは <directive type="section" module="core" + >Location</directive> から取得されます。</p> - <p>$B$h$j=@Fp$J%j%P!<%9%W%m%-%7$N@_Dj$,I,MW$J>l9g$O!"(B<code>[P]</code> - $B%U%i%0IU$-$N(B <directive module="mod_rewrite">RewriteRule</directive> - $B%G%#%l%/%F%#%V$r;2>H$7$F$/$@$5$$!#(B</p> + <p>より柔軟なリバースプロキシの設定が必要な場合は、<code>[P]</code> + フラグ付きの <directive module="mod_rewrite">RewriteRule</directive> + ディレクティブを参照してください。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyPassReverse</name> -<description>$B%j%P!<%9%W%m%-%7$5$l$?%5!<%P$+$iAw$i$l$?(B HTTP $B1~Ez%X%C%@$N(B -URL $B$rD4@0$9$k(B</description> +<description>リバースプロキシされたサーバから送られた HTTP 応答ヘッダの +URL を調整する</description> <syntax>ProxyPassReverse [<var>path</var>] <var>url</var></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context> </contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B Apache $B$K(B HTTP $B%j%@%$%l%/%H1~Ez$N(B + <p>このディレクティブは Apache に HTTP リダイレクト応答の <code>Location</code>, <code>Content-Location</code>, <code>URI</code> - $B%X%C%@$ND4@0$r$5$;$^$9!#$3$l$O!"(BApache $B$,%j%P!<%9%W%m%-%7$H$7$F;H$o$l$F$$$k(B - $B$H$-$K!"%j%P!<%9%W%m%-%7$rDL$5$J$$$G%"%/%;%9$9$k$3$H$rKI$0$?$a$K(B - $B=EMW$G$9!#$3$l$K$h$j%P%C%/%(%s%I%5!<%P$N(B HTTP $B%j%@%$%l%/%H$,(B - $B%j%P!<%9%W%m%-%7$H%P%C%/%(%s%I$N4V$G07$o$l$k$h$&$K$J$j$^$9!#(B</p> - - <p>$B%G%#%l%/%F%#%V$GL@<($5$l$F$$$k(B HTTP $B1~Ez%X%C%@$N$_$,=q$-49$($i$l$^$9!#(B - Apache $B$OB>$N1~Ez%X%C%@$r=q$-49$($?$j!"(BHTML $B%Z!<%8$NCf$N(B URL $B;2>H$r(B - $B=q$-49$($?$j$9$k$3$H$O$"$j$^$;$s!#(BHTML $B$NCf$r8+$F!"(BURL $B;2>H$r=q$-49$($k(B - $B%b%8%e!<%k$K(B Nick Kew $B$5$s$N(B <a + ヘッダの調整をさせます。これは、Apache がリバースプロキシとして使われている + ときに、リバースプロキシを通さないでアクセスすることを防ぐために + 重要です。これによりバックエンドサーバの HTTP リダイレクトが + リバースプロキシとバックエンドの間で扱われるようになります。</p> + + <p>ディレクティブで明示されている HTTP 応答ヘッダのみが書き換えられます。 + Apache は他の応答ヘッダを書き換えたり、HTML ページの中の URL 参照を + 書き換えたりすることはありません。HTML の中を見て、URL 参照を書き換える + モジュールに Nick Kew さんの <a href="http://apache.webthing.com/mod_proxy_html/" - >mod_proxy_html</a> $B$,$"$j$^$9!#(B</p> + >mod_proxy_html</a> があります。</p> - <p><var>path</var> $B$O%m!<%+%k2>A[%Q%9$NL>A0$G$9!#(B<var>url</var> $B$O(B - $B%j%b!<%H%5!<%P$NItJ,(B URL $B$G$9!#$3$l$i$O(B <directive module="mod_proxy" - >ProxyPass</directive> $B%G%#%l%/%F%#%V$HF1MM$G$9!#(B</p> + <p><var>path</var> はローカル仮想パスの名前です。<var>url</var> は + リモートサーバの部分 URL です。これらは <directive module="mod_proxy" + >ProxyPass</directive> ディレクティブと同様です。</p> - <p>$BNc$($P!"%m!<%+%k%5!<%P$N%"%I%l%9$,(B <code>http://example.com/</code> - $B$@$H$7$^$9!#$9$k$H(B</p> + <p>例えば、ローカルサーバのアドレスが <code>http://example.com/</code> + だとします。すると</p> <example> ProxyPass /mirror/foo/ http://backend.example.com/<br /> @@ -790,139 +790,139 @@ URL $B$rD4@0$9$k(B</description> ProxyPassReverseCookiePath / /mirror/foo/ </example> - <p>$B$H$$$&@_Dj$r$9$k$H!"(B<code>http://example.com/mirror/foo/bar</code> - $B$X$N%m!<%+%k%j%/%(%9%H$,(B <code>http://backend.example.com/bar</code> - $B$X$N%W%m%-%7%j%/%(%9%H$KFbIt$G%j%@%$%l%/%H$5$l$k$@$1$G$O$"$j$^$;$s(B - ($B$3$l$O(B <code>ProxyPass</code> $B$N5!G=$G$9(B)$B!#(B<code>backend.example.com</code> - $B$,Aw$k%j%@%$%l%/%H$NLLE]$b$_$^$9!#(B<code>http://backend.example.com/bar</code> - $B$,(B <code>http://backend.example.com/quux</code> $B$K%j%@%$%l%/%H$5$l$?$H$-!"(B - Apache $B$O(B HTTP $B%j%@%$%l%/%H1~Ez$r%/%i%$%"%s%H$KAw$kA0$K!"(B - <code>http://example.com/mirror/foo/quux</code> $B$KJQ99$7$^$9!#(B - URL $B$r9=@.$9$k$N$K;H$o$l$k%[%9%HL>$O(B <directive - module="core">UseCanonicalName</directive> $B$N@_Dj$K1~$8$FA*Br$5$l$k$3$H$K(B - $BCm0U$7$F$/$@$5$$!#(B</p> - - <p><directive>ProxyPassReverse</directive> $B%G%#%l%/%F%#%V$O(B - $BBP1~$9$k(B <directive module="mod_proxy" - >ProxyPass</directive> $B%G%#%l%/%F%#%V$K$O0MB8$7$J$$$?$a!"(B - <module>mod_rewrite</module> $B$N%W%m%-%7DL2a5!G=(B - (<code>RewriteRule ... [P]</code>) $B$HJ;$;$F;HMQ$9$k$3$H$,$G$-$^$9!#(B</p> + <p>という設定をすると、<code>http://example.com/mirror/foo/bar</code> + へのローカルリクエストが <code>http://backend.example.com/bar</code> + へのプロキシリクエストに内部でリダイレクトされるだけではありません + (これは <code>ProxyPass</code> の機能です)。<code>backend.example.com</code> + が送るリダイレクトの面倒もみます。<code>http://backend.example.com/bar</code> + が <code>http://backend.example.com/quux</code> にリダイレクトされたとき、 + Apache は HTTP リダイレクト応答をクライアントに送る前に、 + <code>http://example.com/mirror/foo/quux</code> に変更します。 + URL を構成するのに使われるホスト名は <directive + module="core">UseCanonicalName</directive> の設定に応じて選択されることに + 注意してください。</p> + + <p><directive>ProxyPassReverse</directive> ディレクティブは + 対応する <directive module="mod_proxy" + >ProxyPass</directive> ディレクティブには依存しないため、 + <module>mod_rewrite</module> のプロキシ通過機能 + (<code>RewriteRule ... [P]</code>) と併せて使用することができます。</p> <p><directive type="section" module="core" - >Location</directive> $B%;%/%7%g%s$NCf$G;H$o$l$?>l9g$O!"(B - $B:G=i$N0z?t$O>JN,$5$l!"%m!<%+%k%G%#%l%/%H%j$O(B <directive - type="section" module="core">Location</directive> $B$+$i<hF@$5$l$^$9!#(B</p> + >Location</directive> セクションの中で使われた場合は、 + 最初の引数は省略され、ローカルディレクトリは <directive + type="section" module="core">Location</directive> から取得されます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyPassReverseCookieDomain</name> -<description>$B%j%P!<%9%W%m%-%7%5!<%P$+$i$N(B Set-Cookie $B%X%C%@$N(B Domain $BJ8;zNs$r(B -$BD4@0$9$k(B</description> +<description>リバースプロキシサーバからの Set-Cookie ヘッダの Domain 文字列を +調整する</description> <syntax>ProxyPassReverseCookieDomain <var>internal-domain</var> <var>public-domain</var></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context> </contextlist> <usage> -<p>$B;HMQK!$O4pK\E*$K(B -<directive module="mod_proxy">ProxyPassReverse</directive> $B$HF1$8$G$9$,!"(B -$B%X%C%@$N(B URL $B$NBe$o$j$K(B <code>Set-Cookie</code> $B%X%C%@$N(B -<code>domain</code> $BJ8;zNs$r=q$-49$($^$9!#(B</p> +<p>使用法は基本的に +<directive module="mod_proxy">ProxyPassReverse</directive> と同じですが、 +ヘッダの URL の代わりに <code>Set-Cookie</code> ヘッダの +<code>domain</code> 文字列を書き換えます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyPassReverseCookiePath</name> -<description>Reverse $B%W%m%-%7%5!<%P$+$i$N(B Set-Cookie $B%X%C%@$N(B Path $BJ8;zNs$r(B -$BD4@0$9$k(B</description> +<description>Reverse プロキシサーバからの Set-Cookie ヘッダの Path 文字列を +調整する</description> <syntax>ProxyPassReverseCookiePath <var>internal-path</var> <var>public-path</var></syntax> <contextlist><context>server config</context><context>virtual host</context> <context>directory</context> </contextlist> <usage> -<p>$B;HMQK!$O4pK\E*$K(B -<directive module="mod_proxy">ProxyPassReverse</directive> $B$HF1$8$G$9$,!"(B -$B%X%C%@$N(B URL $B$NBe$o$j$K(B <code>Set-Cookie</code> $B%X%C%@$N(B -<code>path</code> $BJ8;zNs$r=q$-49$($^$9!#(B</p> +<p>使用法は基本的に +<directive module="mod_proxy">ProxyPassReverse</directive> と同じですが、 +ヘッダの URL の代わりに <code>Set-Cookie</code> ヘッダの +<code>path</code> 文字列を書き換えます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>AllowCONNECT</name> -<description>$B%W%m%-%7$r7PM3$7$F!"$I$N%]!<%H$K(B <code>CONNECT</code> -$B$G$-$k$+$r;XDj$9$k(B</description> +<description>プロキシを経由して、どのポートに <code>CONNECT</code> +できるかを指定する</description> <syntax>AllowCONNECT <var>port</var> [<var>port</var>] ...</syntax> <default>AllowCONNECT 443 563</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>AllowCONNECT</directive> $B$O%W%m%-%7$N(B <code>CONNECT</code> - $B%a%=%C%I$,@\B3$r5v2D$9$k%]!<%HHV9f$N%j%9%H$r;XDj$7$^$9!#(B - $B:#F|$N%V%i%&%6$O!"(B<code>https</code> $B%3%M%/%7%g%s$,MW5a$5$l$F$$$F!"(B - HTTP $B>e$G$N%W%m%-%7$K$h$k%H%s%M%j%s%0$,$G$-$k$H$-$K!"(B - $B$3$N%a%=%C%I$r;H$$$^$9!#(B</p> - - <p>$B%G%U%)%k%H$N@_Dj$G$O!"(Bhttps $B$N%G%U%)%k%H%]!<%H(B (<code>443</code>) $B$H(B - $B%G%U%)%k%H$N(B snews $B%]!<%H(B (<code>563</code>) $B$,M-8z$K$J$C$F$$$^$9!#(B - $B$3$N%G%U%)%k%H$r>e=q$-$7$F!"%j%9%H$K5-:\$7$?%]!<%H$K$N$_@\B3$r5v2D$7$?$$>l9g!"(B - <directive>AllowCONNECT</directive> $B%G%#%l%/%F%#%V$r;HMQ$7$^$9!#(B</p> - - <p><code>CONNECT</code> $B$r;HMQ$9$k$K$O!"(B<module>mod_proxy_connect</module> - $B$,%5!<%P$KAH$_9~$^$l$F$$$J$1$l$P$J$i$J$$$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + <p><directive>AllowCONNECT</directive> はプロキシの <code>CONNECT</code> + メソッドが接続を許可するポート番号のリストを指定します。 + 今日のブラウザは、<code>https</code> コネクションが要求されていて、 + HTTP 上でのプロキシによるトンネリングができるときに、 + このメソッドを使います。</p> + + <p>デフォルトの設定では、https のデフォルトポート (<code>443</code>) と + デフォルトの snews ポート (<code>563</code>) が有効になっています。 + このデフォルトを上書きして、リストに記載したポートにのみ接続を許可したい場合、 + <directive>AllowCONNECT</directive> ディレクティブを使用します。</p> + + <p><code>CONNECT</code> を使用するには、<module>mod_proxy_connect</module> + がサーバに組み込まれていなければならないことに注意してください。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyBlock</name> -<description>$B%W%m%-%7@\B3$r6X;_$9$k8l6g!"%[%9%HL>!"%I%a%$%s$r;XDj$9$k(B</description> +<description>プロキシ接続を禁止する語句、ホスト名、ドメインを指定する</description> <syntax>ProxyBlock *|<var>word</var>|<var>host</var>|<var>domain</var> [<var>word</var>|<var>host</var>|<var>domain</var>] ...</syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>ProxyBlock</directive> $B%G%#%l%/%F%#%V$O6uGr$G6h@Z$i$l$?(B - $B8l6g!"%[%9%HL>!"%I%a%$%s$N%j%9%H$r;XDj$7$^$9!#%5%$%HL>$K$=$N8l6g!"%[%9%HL>!"(B - $B%I%a%$%s$r4^$`%5%$%H$X$N(B HTTP$B!"(BHTTPS$B!"(BFTP $B$K$h$k%I%-%e%a%s%H$N%j%/%(%9%H$O(B - $B%W%m%-%7%5!<%P$K$h$j(B<em>$B%V%m%C%/$5$l$^$9(B</em>$B!#%W%m%-%7%b%8%e!<%k$O(B - $B5/F0;~$K%[%9%HL>$H;W$7$-9`L\$N(B IP $B%"%I%l%9$rD4$Y!"8e$N%F%9%H$N$?$a$K(B - $B%-%c%C%7%e$7$^$9!#$3$l$K$h$j!"%5!<%P$N5/F0$,>/$7CY$/$J$k$+$b$7$l$^$;$s!#(B</p> + <p><directive>ProxyBlock</directive> ディレクティブは空白で区切られた + 語句、ホスト名、ドメインのリストを指定します。サイト名にその語句、ホスト名、 + ドメインを含むサイトへの HTTP、HTTPS、FTP によるドキュメントのリクエストは + プロキシサーバにより<em>ブロックされます</em>。プロキシモジュールは + 起動時にホスト名と思しき項目の IP アドレスを調べ、後のテストのために + キャッシュします。これにより、サーバの起動が少し遅くなるかもしれません。</p> <example><title>Example</title> ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu </example> - <p><code>rocky.wotsamattau.edu</code> $B$,(B IP $B%"%I%l%9$G;2>H$5$l$?$H$-$G$b(B - $B%^%C%A$7$^$9!#(B</p> + <p><code>rocky.wotsamattau.edu</code> が IP アドレスで参照されたときでも + マッチします。</p> - <p><code>wotsamattau.edu</code> $B$N%^%C%A$K$O(B <code>wotsamattau</code> - $B$@$1$G$b==J,$G$9!#(B</p> + <p><code>wotsamattau.edu</code> のマッチには <code>wotsamattau</code> + だけでも十分です。</p> <example> ProxyBlock * </example> - <p>$B$O$9$Y$F$N%5%$%H$X$N@\B3$r%V%m%C%/$9$k$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + <p>はすべてのサイトへの接続をブロックすることに注意してください。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyReceiveBufferSize</name> -<description>$B%W%m%-%7$5$l$k(B HTTP $B$H(B FTP $B@\B3$N$?$a$N%M%C%H%o!<%/%P%C%U%!%5%$%:(B</description> +<description>プロキシされる HTTP と FTP 接続のためのネットワークバッファサイズ</description> <syntax>ProxyReceiveBufferSize <var>bytes</var></syntax> <default>ProxyReceiveBufferSize 0</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>ProxyReceiveBufferSize</directive> $B%G%#%l%/%F%#%V$O(B - $B%9%k!<%W%C%H$r>e$2$k$?$a$KL@<(E*$K(B (TCP/IP) $B%M%C%H%o!<%/%P%C%U%!$N%5%$%:$r(B - $B@_Dj$7$^$9!#CM$O(B <code>512</code> $B0J>e$+!"%7%9%F%`$N%G%U%)%k%H$N%P%C%U%!(B - $B%5%$%:$r0UL#$9$k(B <code>0</code> $B$G$J$1$l$P$J$j$^$;$s!#(B</p> + <p><directive>ProxyReceiveBufferSize</directive> ディレクティブは + スループットを上げるために明示的に (TCP/IP) ネットワークバッファのサイズを + 設定します。値は <code>512</code> 以上か、システムのデフォルトのバッファ + サイズを意味する <code>0</code> でなければなりません。</p> - <example><title>$BNc(B</title> + <example><title>例</title> ProxyReceiveBufferSize 2048 </example> </usage> @@ -930,37 +930,37 @@ URL $B$rD4@0$9$k(B</description> <directivesynopsis> <name>ProxyIOBufferSize</name> -<description>$BFbIt%G!<%?%9%k!<%W%C%H%P%C%U%!$N%5%$%:$r7hDj$9$k(B</description> +<description>内部データスループットバッファのサイズを決定する</description> <syntax>ProxyIOBufferSize <var>bytes</var></syntax> <default>ProxyIOBufferSize 8192</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p><directive>ProxyIOBufferSize</directive> $B%G%#%l%/%F%#%V$OF~NO$H(B - $B=PNOMQ$N0l;~%a%b%j$H$7$F;H$o$l$kFbIt%P%C%U%!$N%5%$%:$rD4@0$7$^$9!#(B - $B%5%$%:$O(B <code>8192</code> $B0J2<$G$J$1$l$P$J$j$^$;$s!#(B</p> + <p><directive>ProxyIOBufferSize</directive> ディレクティブは入力と + 出力用の一時メモリとして使われる内部バッファのサイズを調整します。 + サイズは <code>8192</code> 以下でなければなりません。</p> - <p>$B$[$H$s$I$9$Y$F$N>l9g!"$3$NCM$rJQ99$9$kM}M3$O$"$j$^$;$s!#(B</p> + <p>ほとんどすべての場合、この値を変更する理由はありません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyMaxForwards</name> -<description>$B%j%/%(%9%H$,%U%)%o!<%I$5$l$k%W%m%-%7$N:GBg?t(B</description> +<description>リクエストがフォワードされるプロキシの最大数</description> <syntax>ProxyMaxForwards <var>number</var></syntax> <default>ProxyMaxForwards 10</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>Apache 2.0 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>Apache 2.0 以降で使用可能</compatibility> <usage> - <p><directive>ProxyMaxForwards</directive> $B%G%#%l%/%F%#%V$O(B - $B%j%/%(%9%H$K(B <code>Max-Forwards</code> $B%X%C%@$,;XDj$5$l$F$$$J$$>l9g$K(B - $B%j%/%(%9%H$,DL2a2DG=$J%W%m%-%7$N:GBg?t$r@_Dj$7$^$9!#$3$l$O(B - $B%W%m%-%7$NL58B%k!<%W$d(B DoS $B967b$rKI$0$?$a$K@_Dj$5$l$F$$$^$9!#(B</p> + <p><directive>ProxyMaxForwards</directive> ディレクティブは + リクエストに <code>Max-Forwards</code> ヘッダが指定されていない場合に + リクエストが通過可能なプロキシの最大数を設定します。これは + プロキシの無限ループや DoS 攻撃を防ぐために設定されています。</p> - <example><title>$BNc(B</title> + <example><title>例</title> ProxyMaxForwards 15 </example> </usage> @@ -968,166 +968,166 @@ URL $B$rD4@0$9$k(B</description> <directivesynopsis> <name>NoProxy</name> -<description>$BD>@\@\B3$9$k(B $B%[%9%H!"%I%a%$%s!"%M%C%H%o!<%/(B</description> +<description>直接接続する ホスト、ドメイン、ネットワーク</description> <syntax>NoProxy <var>host</var> [<var>host</var>] ...</syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%$%s%H%i%M%C%HCf$N(B Apache $B%W%m%-%7%5!<%P$K$N$_(B - $BM-MQ$G$9!#(B<directive>NoProxy</directive> $B%G%#%l%/%F%#%V$O6uGr6h@Z$j$G!"(B - $B%5%V%M%C%H!"(BIP $B%"%I%l%9!"%[%9%H!"%I%a%$%s$N%j%9%H$r;XDj$7$^$9!#(B - $B$3$l$i$N$I$l$+$K%^%C%A$9$k%[%9%H$X$N%j%/%(%9%H$O(B <directive - module="mod_proxy">ProxyRemote</directive> $B$G@_Dj$5$l$?%W%m%-%7%5!<%P$K(B - $B%U%)%o!<%I$5$l$:!"D>@\=hM}$5$l$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p>このディレクティブはイントラネット中の Apache プロキシサーバにのみ + 有用です。<directive>NoProxy</directive> ディレクティブは空白区切りで、 + サブネット、IP アドレス、ホスト、ドメインのリストを指定します。 + これらのどれかにマッチするホストへのリクエストは <directive + module="mod_proxy">ProxyRemote</directive> で設定されたプロキシサーバに + フォワードされず、直接処理されます。</p> + + <example><title>例</title> ProxyRemote * http://firewall.mycompany.com:81<br /> NoProxy .mycompany.com 192.168.112.0/21 </example> - <p><directive>NoProxy</directive> $B%G%#%l%/%F%#%V$N(B <var>host</var> $B0z?t$O(B - $B0J2<$N<oN`$N$I$l$+$G$9(B:</p> + <p><directive>NoProxy</directive> ディレクティブの <var>host</var> 引数は + 以下の種類のどれかです:</p> <dl> <!-- ===================== Domain ======================= --> <dt><var><a name="domain" id="domain">Domain</a></var></dt> <dd> - <p><dfn>Domain</dfn> $B$O@hF,$K%T%j%*%I$NCe$$$?ItJ,(B DNS $B%I%a%$%sL>$G$9!#(B - $BF10l(B DNS $B%I%a%$%s5Z$S%>!<%s(B (<em>$B$9$J$o$A(B</em>$B!"%[%9%HL>$NKvHx$,$9$Y$F(B - <var>Domain</var> $B$G=*$o$C$F$$$k$H$$$&$3$H(B) $B$KB0$9$k%[%9%H$N%j%9%H$r(B - $BI=$7$^$9(B)$B!#(B</p> + <p><dfn>Domain</dfn> は先頭にピリオドの着いた部分 DNS ドメイン名です。 + 同一 DNS ドメイン及びゾーン (<em>すなわち</em>、ホスト名の末尾がすべて + <var>Domain</var> で終わっているということ) に属するホストのリストを + 表します)。</p> - <example><title>$BNc(B</title> + <example><title>例</title> .com .apache.org. </example> - <p><var>Domain</var> $B$r(B <a href="#hostname" - >Hostname</a> $B$H6hJL$9$k$?$a$K(B ($B0UL#E*$K$b9=J8E*$K$b!#(BDNS $B%I%a%$%s$b(B - DNS $B$N(B A $B%l%3!<%I$r;}$D$3$H$,$G$-$k$N$G$9(B!)$B!"(B<var>Domain</var> $B$O(B - $B>o$K%T%j%*%I$G;O$^$j$^$9!#(B</p> + <p><var>Domain</var> を <a href="#hostname" + >Hostname</a> と区別するために (意味的にも構文的にも。DNS ドメインも + DNS の A レコードを持つことができるのです!)、<var>Domain</var> は + 常にピリオドで始まります。</p> - <note><title>$BCm(B</title> - <p>$B%I%a%$%sL>$NHf3S$OBgJ8;z>.J8;z$r6hJL$;$:$K9T$J$o$l!"(B<var>Domain</var> - $B$O>o$K(B DNS $B%D%j!<$N%k!<%H$+$i;O$^$k$b$N$H$_$J$5$l$^$9!#$G$9$+$i!"(B - $B<!$NFs$D$N%I%a%$%s(B <code>.MyDomain.com</code> $B$H(B - <code>.mydomain.com.</code> ($B:G8e$N%T%j%*%I$KCmL\(B) $B$OF10l$G$"$k$H(B - $B$_$J$5$l$^$9!#%I%a%$%s$NHf3S$O(B DNS $B%k%C%/%"%C%W$J$7$G9T$J$o$l$k$?$a!"(B - $B%5%V%M%C%H$NHf3S$h$j$b$:$C$H8zN(E*$G$9!#(B</p> + <note><title>注</title> + <p>ドメイン名の比較は大文字小文字を区別せずに行なわれ、<var>Domain</var> + は常に DNS ツリーのルートから始まるものとみなされます。ですから、 + 次の二つのドメイン <code>.MyDomain.com</code> と + <code>.mydomain.com.</code> (最後のピリオドに注目) は同一であると + みなされます。ドメインの比較は DNS ルックアップなしで行なわれるため、 + サブネットの比較よりもずっと効率的です。</p> </note></dd> <!-- ===================== SubNet ======================= --> <dt><var><a name="subnet" id="subnet">SubNet</a></var></dt> <dd> - <p><dfn>SubNet</dfn> $B$O?tCM7A<0(B ($B%I%C%H$G6h@Z$i$l$?;M$D$N?t;z(B) $B$N(B - $BItJ,%$%s%?!<%M%C%H%"%I%l%9$G$9!#8e$K%9%i%C%7%e$H(B <var>Subnet</var> - $B$N0UL#$N$"$k%S%C%H?t$r;XDj$9$k%M%C%H%^%9%/$H$rB3$1$k$3$H$,$G$-$^$9!#(B - $B6&DL$N%M%C%H%o!<%/%$%s%?%U%'!<%9$r;H$C$FE~C#$9$k$3$H$N$G$-$k%5%V%M%C%H$r(B - $BI=$9$?$a$K;H$o$l$^$9!#L@<(E*$K%M%C%H%^%9%/$r;XDj$7$J$$>l9g$O(B - $B:G8e$N>JN,$5$l$?(B ($B$b$7$/$OCM$,(B 0 $B$N(B) $B?t;z$,%^%9%/$r;XDj$7$^$9!#(B - ($B$3$N>l9g$O!"%M%C%H%^%9%/$O(B 8 $B%S%C%HC10L$G$7$+;XDj$G$-$^$;$s!#(B) - $BNc(B:</p> + <p><dfn>SubNet</dfn> は数値形式 (ドットで区切られた四つの数字) の + 部分インターネットアドレスです。後にスラッシュと <var>Subnet</var> + の意味のあるビット数を指定するネットマスクとを続けることができます。 + 共通のネットワークインタフェースを使って到達することのできるサブネットを + 表すために使われます。明示的にネットマスクを指定しない場合は + 最後の省略された (もしくは値が 0 の) 数字がマスクを指定します。 + (この場合は、ネットマスクは 8 ビット単位でしか指定できません。) + 例:</p> <dl> - <dt><code>192.168</code> $B$b$7$/$O(B <code>192.168.0.0</code></dt> - <dd>$B%5%V%M%C%H(B 192.168.0.0 $B$H0EL[$N(B 16 $B%S%C%HM-8z$J%M%C%H%^%9%/(B - (<code>255.255.0.0</code> $B$H$$$&%M%C%H%^%9%/$N7A<0$G;H$o$l$k$3$H$b(B - $B$"$j$^$9(B)</dd> + <dt><code>192.168</code> もしくは <code>192.168.0.0</code></dt> + <dd>サブネット 192.168.0.0 と暗黙の 16 ビット有効なネットマスク + (<code>255.255.0.0</code> というネットマスクの形式で使われることも + あります)</dd> <dt><code>192.168.112.0/21</code></dt> - <dd>$B%5%V%M%C%H(B<code>192.168.112.0/21</code> $B$H(B 21 $B%S%C%HM-8z$J(B - $B%M%C%H%^%9%/(B (<code>255.255.248.0</code> $B$H$$$&7A<0$G;H$o$l$k$3$H$b(B - $B$"$j$^$9(B)</dd> + <dd>サブネット<code>192.168.112.0/21</code> と 21 ビット有効な + ネットマスク (<code>255.255.248.0</code> という形式で使われることも + あります)</dd> </dl> - <p>$BFCJL$J>l9g$K!"(B32 $B%S%C%HM-8z$J(B <em>SubNet</em> $B$O(B - <var><a href="#ipadr">IPAddr</a></var> $B$HF1Ey$G!"(B - 0 $B%S%C%HM-8z$J(B <var>SubNet</var> (<em>$BNc$($P(B</em>$B!"(B0.0.0.0/0) $B$O(B - $B$9$Y$F$N(B IP $B%"%I%l%9$K%^%C%A$9$kDj?t(B <var>_Default_</var> $B$HF1$8$G$9!#(B</p> + <p>特別な場合に、32 ビット有効な <em>SubNet</em> は + <var><a href="#ipadr">IPAddr</a></var> と同等で、 + 0 ビット有効な <var>SubNet</var> (<em>例えば</em>、0.0.0.0/0) は + すべての IP アドレスにマッチする定数 <var>_Default_</var> と同じです。</p> </dd> <!-- ===================== IPAddr ======================= --> <dt><var><a name="ipaddr" id="ipaddr">IPAddr</a></var></dt> <dd> - <p><dfn>IPAddr</dfn> $B$O?tCM7A<0(B ($B%I%C%H$G6h@Z$i$l$?;M$D$N?t;z(B) $B$N(B - $B40A4%$%s%?!<%M%C%H%"%I%l%9$G$9!#DL>o$O$3$N%"%I%l%9$O%[%9%H$r(B - $BI=$7$^$9$,!"I,$:$7$b%"%I%l%9$KBP1~$9$k(B DNS $B%I%a%$%sL>$,$"$k$o$1$G$O(B - $B$"$j$^$;$s!#(B</p> + <p><dfn>IPAddr</dfn> は数値形式 (ドットで区切られた四つの数字) の + 完全インターネットアドレスです。通常はこのアドレスはホストを + 表しますが、必ずしもアドレスに対応する DNS ドメイン名があるわけでは + ありません。</p> - <example><title>$BNc(B</title> + <example><title>例</title> 192.168.123.7 </example> - <note><title>$BCm(B</title> - <p><var>IPAddr</var> $B$O(B DNS $B%7%9%F%`$K$h$j2r7h$5$l$kI,MW$,$J$$$N$G!"(B - apache $B$N@-G=$,8~>e$9$k$+$b$7$l$^$;$s!#(B</p> + <note><title>注</title> + <p><var>IPAddr</var> は DNS システムにより解決される必要がないので、 + apache の性能が向上するかもしれません。</p> </note></dd> <!-- ===================== Hostname ======================= --> <dt><var><a name="hostname" id="hostname">Hostname</a></var></dt> <dd> - <p><dfn>Hostname</dfn> $B$O(B DNS $B%I%a%$%s%5!<%S%9$K$h$j0l$D$b$7$/$O(B - $BJ#?t$N(B <var><a href="#ipaddr">IPAddr</a></var> $B$K2r7h2DG=$J(B - $B40A4$J(B DNS $B%I%a%$%sL>$G$9!#$3$l$O(B (<var><a href="#domain">Domain</a></var> - $B$H0c$C$F!"@bL@$O>e5-$r;2>H(B) $BO@M}E*$J%[%9%H$rI=$7!">/$/$H$b0l$D$N(B - <var><a href="#ipaddr">IPAddr</a></var> ($B$b$7$/$O0c$&(B - <var><a href="#ipaddr">IPAddr</a></var> $B$N%[%9%H$N%j%9%H(B) $B$K2r7h(B - $B$5$l$J$1$l$P$J$j$^$;$s(B)$B!#(B</p> - - <example><title>$BNc(B</title> + <p><dfn>Hostname</dfn> は DNS ドメインサービスにより一つもしくは + 複数の <var><a href="#ipaddr">IPAddr</a></var> に解決可能な + 完全な DNS ドメイン名です。これは (<var><a href="#domain">Domain</a></var> + と違って、説明は上記を参照) 論理的なホストを表し、少くとも一つの + <var><a href="#ipaddr">IPAddr</a></var> (もしくは違う + <var><a href="#ipaddr">IPAddr</a></var> のホストのリスト) に解決 + されなければなりません)。</p> + + <example><title>例</title> prep.ai.mit.edu<br /> www.apache.org </example> - <note><title>$BCm(B</title> - <p>$BB?$/$N>l9g!"(B<var>Hostname</var> $B$NBe$o$j$K(B <var><a - href="#ipaddr">IPAddr</a></var> $B$r;XDj$7$?J}$,!"(BDNS $B%k%C%/%"%C%W$r(B - $BHr$1$k$3$H$,$G$-$k$?$a!"8zN($,NI$/$J$j$^$9!#(BApache $B$NL>A02r7h$O(B - $B%M!<%`%5!<%P$X$N@\B3$,CY$$(B PPP $B>e$N>l9g$J$I$K$+$J$j;~4V$r<h$i$l$k(B - $B$3$H$,$"$j$^$9!#(B</p> - <p><var>Hostname</var> $B$NHf3S$OBgJ8;z>.J8;z$r6hJL$;$:$K9T$J$o$l!"(B - <var>Hostname</var> $B$O>o$K(B DNS $B%D%j!<$N%k!<%H$+$i;O$^$k$b$N$H$_$J$5$l$^$9!#(B - $B$G$9$+$i!"Fs$D$N%I%a%$%s(B <code>WWW.MyDomain.com</code> $B$H(B - <code>www.mydomain.com.</code> ($B:G8e$N%T%j%*%I$KCmL\(B) $B$OF10l$G$"$k$H(B - $B$_$J$5$l$^$9!#(B</p> + <note><title>注</title> + <p>多くの場合、<var>Hostname</var> の代わりに <var><a + href="#ipaddr">IPAddr</a></var> を指定した方が、DNS ルックアップを + 避けることができるため、効率が良くなります。Apache の名前解決は + ネームサーバへの接続が遅い PPP 上の場合などにかなり時間を取られる + ことがあります。</p> + <p><var>Hostname</var> の比較は大文字小文字を区別せずに行なわれ、 + <var>Hostname</var> は常に DNS ツリーのルートから始まるものとみなされます。 + ですから、二つのドメイン <code>WWW.MyDomain.com</code> と + <code>www.mydomain.com.</code> (最後のピリオドに注目) は同一であると + みなされます。</p> </note></dd> </dl> </usage> -<seealso><a href="../dns-caveats.html">DNS $B$K4X$9$kLdBj(B</a></seealso> +<seealso><a href="../dns-caveats.html">DNS に関する問題</a></seealso> </directivesynopsis> <directivesynopsis> <name>ProxyTimeout</name> -<description>$B%W%m%-%7$5$l$?%j%/%(%9%H$N%M%C%H%o!<%/%?%$%`%"%&%H(B</description> +<description>プロキシされたリクエストのネットワークタイムアウト</description> <syntax>ProxyTimeout <var>seconds</var></syntax> <default>ProxyTimeout 300</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>Apache 2.0.31 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>Apache 2.0.31 以降で使用可能</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%f!<%6$,%W%m%-%7%j%/%(%9%H$N%?%$%`%"%&%H$r(B - $B;XDj$G$-$k$h$&$K$7$^$9!#$3$l$O%O%s%0$7$F$7$^$&CY$$!"$b$7$/$O5sF0$N(B - $B2x$7$$%5!<%P$,$"$j!"%5!<%P$,%G!<%?$rJV$9$^$G$R$?$9$iBT$AB3$1$k$h$j$b(B - $B%?%$%`%"%&%H$rJV$7$F$h$j4K$d$+$K(B<transnote>graceful $B$K(B</transnote> - $B<:GT$5$;$?$$>l9g$KLr$KN)$A$^$9!#(B</p> + <p>このディレクティブはユーザがプロキシリクエストのタイムアウトを + 指定できるようにします。これはハングしてしまう遅い、もしくは挙動の + 怪しいサーバがあり、サーバがデータを返すまでひたすら待ち続けるよりも + タイムアウトを返してより緩やかに<transnote>graceful に</transnote> + 失敗させたい場合に役に立ちます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyDomain</name> -<description>$B%W%m%-%7$5$l$?%j%/%(%9%H$N%G%U%)%k%H$N%I%a%$%sL>(B</description> +<description>プロキシされたリクエストのデフォルトのドメイン名</description> <syntax>ProxyDomain <var>Domain</var></syntax> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%$%s%H%i%M%C%HFb$N(B Apache $B%W%m%-%7%5!<%P$K$N$_(B - $BM-MQ$G$9!#(B<directive>ProxyDomain</directive> $B%G%#%l%/%F%#%V$O(B - apache $B%W%m%-%7%5!<%P$,B0$9$k%G%U%)%k%H$N%I%a%$%s$r;XDj$7$^$9!#(B - $B%I%a%$%sL>$NL5$$%j%/%(%9%H$r<u$1$?>l9g!"@_Dj$5$l$?(B <var>Domain</var> - $B$,DI2C$5$l$?F1$8%[%9%H$X$N%j%@%$%l%/%H1~Ez$,JV$5$l$^$9!#(B</p> + <p>このディレクティブはイントラネット内の Apache プロキシサーバにのみ + 有用です。<directive>ProxyDomain</directive> ディレクティブは + apache プロキシサーバが属するデフォルトのドメインを指定します。 + ドメイン名の無いリクエストを受けた場合、設定された <var>Domain</var> + が追加された同じホストへのリダイレクト応答が返されます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> ProxyRemote * http://firewall.mycompany.com:81<br /> NoProxy .mycompany.com 192.168.112.0/21<br /> ProxyDomain .mycompany.com @@ -1137,56 +1137,56 @@ URL $B$rD4@0$9$k(B</description> <directivesynopsis> <name>ProxyVia</name> -<description>$B%W%m%-%7$5$l$?%j%/%(%9%H$N(B <code>Via</code> HTTP $B1~Ez%X%C%@(B -$B$K$h$jDs6!$5$l$k>pJs(B</description> +<description>プロキシされたリクエストの <code>Via</code> HTTP 応答ヘッダ +により提供される情報</description> <syntax>ProxyVia On|Off|Full|Block</syntax> <default>ProxyVia Off</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%W%m%-%7$N(B <code>Via:</code> HTTP $B%X%C%@$N;HMQ$r(B - $B@)8f$7$^$9!#A[Dj$5$l$F$$$k;H$$J}$O!"%W%m%-%7%5!<%P$,$$$/$D$b7R$,$C$F$$$k$H$-$K(B - $B%W%m%-%7%j%/%(%9%H$NN.$l$r@)8f$9$k$3$H$G$9!#(B<code>Via:</code> $B%X%C%@9T$N(B - $B@bL@$O(B <a + <p>このディレクティブはプロキシの <code>Via:</code> HTTP ヘッダの使用を + 制御します。想定されている使い方は、プロキシサーバがいくつも繋がっているときに + プロキシリクエストの流れを制御することです。<code>Via:</code> ヘッダ行の + 説明は <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> (HTTP/1.1) - $B$N(B 14.45 $B@a$rFI$s$G$/$@$5$$!#(B</p> + の 14.45 節を読んでください。</p> <ul> - <li>$B%G%U%)%k%H$N(B <code>Off</code> $B$K@_Dj$5$l$F$$$k$H!"FCJL$J=hM}$O(B - $B9T$J$o$l$^$;$s!#%j%/%(%9%H$d%j%W%i%$$K(B <code>Via:</code> $B%X%C%@$,$"$l$P!"(B - $BJQ99$5$l$:$K$=$N$^$^EO$7$^$9!#(B</li> + <li>デフォルトの <code>Off</code> に設定されていると、特別な処理は + 行なわれません。リクエストやリプライに <code>Via:</code> ヘッダがあれば、 + 変更されずにそのまま渡します。</li> - <li><code>On</code> $B$K@_Dj$5$l$F$$$l$P!"3F%j%/%(%9%H$H%j%W%i%$$K(B - <code>Via:</code> $B9T$,DI2C$5$l$^$9!#(B</li> + <li><code>On</code> に設定されていれば、各リクエストとリプライに + <code>Via:</code> 行が追加されます。</li> - <li><code>Full</code> $B$K@_Dj$5$l$F$$$l$P!"(B<code>Via:</code> $B%X%C%@$O(B - $B%3%a%s%HItJ,$K(B Apache $B%5!<%P$N%P!<%8%g%s$b4^$`$h$&$K$J$j$^$9!#(B</li> + <li><code>Full</code> に設定されていれば、<code>Via:</code> ヘッダは + コメント部分に Apache サーバのバージョンも含むようになります。</li> - <li><code>Block</code> $B$K@_Dj$5$l$F$$$l$P!"$9$Y$F$N%W%m%-%7%j%/%(%9%H$+$i(B - <code>Via:</code> $B%X%C%@$,<h$j=|$+$l$^$9!#?7$?$K(B <code>Via:</code> $B$,(B - $B@8@.$5$l$k$3$H$O$"$j$^$;$s!#(B</li> + <li><code>Block</code> に設定されていれば、すべてのプロキシリクエストから + <code>Via:</code> ヘッダが取り除かれます。新たに <code>Via:</code> が + 生成されることはありません。</li> </ul> </usage> </directivesynopsis> <directivesynopsis> <name>ProxyErrorOverride</name> -<description>$B%W%m%-%7$5$l$?%3%s%F%s%D$N%(%i!<%Z!<%8$r>e=q$-$9$k(B</description> +<description>プロキシされたコンテンツのエラーページを上書きする</description> <syntax>ProxyErrorOverride On|Off</syntax> <default>ProxyErrorOverride Off</default> <contextlist><context>server config</context><context>virtual host</context> </contextlist> -<compatibility>$B%P!<%8%g%s(B 2.0 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>バージョン 2.0 以降で使用可能</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O%j%P!<%9%W%m%-%7$r;HMQ$7$F$$$F!"(B - $B%(%s%I%f!<%6$KAw$i$l$k%(%i!<%Z!<%8$N308+$r6&DL$N$b$N$K$7$?$$$H$-$K(B - $BM-MQ$G$9!#$3$N%G%#%l%/%F%#%V$O(B (<module>mod_include</module> $B$N(B SSI $B$K$h$C$F(B) - $B%$%s%/%k!<%I$5$l$?%U%!%$%k$,%(%i!<%3!<%I$r<hF@$7$F!"@5$7$/F0:n$r(B - $B$9$k$h$&$K$b$7$^$9(B ($B%G%U%)%k%H$NF0:n$O!"%W%m%-%7$5$l$?%5!<%P$N(B - $B%(%i!<%Z!<%8$NI=<($G!"$3$N%G%#%l%/%F%#%V$rM-8z$K$9$k$H(B SSI $B$N%(%i!<(B - $B%a%C%;!<%8$rI=<($7$^$9(B)$B!#(B</p> + <p>このディレクティブはリバースプロキシを使用していて、 + エンドユーザに送られるエラーページの外見を共通のものにしたいときに + 有用です。このディレクティブは (<module>mod_include</module> の SSI によって) + インクルードされたファイルがエラーコードを取得して、正しく動作を + するようにもします (デフォルトの動作は、プロキシされたサーバの + エラーページの表示で、このディレクティブを有効にすると SSI のエラー + メッセージを表示します)。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_proxy_ajp.xml.ja b/docs/manual/mod/mod_proxy_ajp.xml.ja index 4174298175..361b92bcf4 100644 --- a/docs/manual/mod/mod_proxy_ajp.xml.ja +++ b/docs/manual/mod/mod_proxy_ajp.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 395228:655869 (outdated) --> @@ -23,123 +23,123 @@ <modulesynopsis metafile="mod_proxy_ajp.xml.meta"> <name>mod_proxy_ajp</name> -<description><module>mod_proxy</module> $B$G(B AJP -$B$r%5%]!<%H$9$k$?$a$N%b%8%e!<%k(B</description> +<description><module>mod_proxy</module> で AJP +をサポートするためのモジュール</description> <status>Extension</status> <sourcefile>proxy_ajp.c</sourcefile> <identifier>proxy_ajp_module</identifier> <summary> - <p>$BK\%b%8%e!<%k$K$O(B <module>mod_proxy</module> $B$,(B<em>$BI,MW$G$9(B</em>$B!#(B - <code>Apache JServ Protocol version 1.3</code> ($B0J9_(B <em>AJP13</em>) - $B$r%5%]!<%H$7$^$9!#(B</p> + <p>本モジュールには <module>mod_proxy</module> が<em>必要です</em>。 + <code>Apache JServ Protocol version 1.3</code> (以降 <em>AJP13</em>) + をサポートします。</p> - <p><code>AJP13</code> $B%W%m%H%3%k$r07$($k$h$&$K$9$k$K$O(B - <module>mod_proxy</module> $B$H(B <module>mod_proxy_ajp</module> - $B$r%5!<%P$KAH$_9~$`I,MW$,$"$j$^$9!#(B</p> + <p><code>AJP13</code> プロトコルを扱えるようにするには + <module>mod_proxy</module> と <module>mod_proxy_ajp</module> + をサーバに組み込む必要があります。</p> - <note type="warning"><title>$B7Y9p(B</title> + <note type="warning"><title>警告</title> <p><a href="#access" - >$B0BA4$J%5!<%P$K$9$k(B</a>$B$^$G%W%m%/%75!G=$OM-8z$K$7$J$$$G$/$@$5$$!#(B - $B%*!<%W%s%W%m%-%7%5!<%P$O$"$J$?<+?H$N%M%C%H%o!<%/$K$H$C$F$b!"(B - $B%$%s%?!<%M%C%HA4BN$K$H$C$F$b4m81$G$9!#(B</p> + >安全なサーバにする</a>までプロクシ機能は有効にしないでください。 + オープンプロキシサーバはあなた自身のネットワークにとっても、 + インターネット全体にとっても危険です。</p> </note> </summary> <seealso><module>mod_proxy</module></seealso> -<section id="overviewprotocol"><title>$B%W%m%H%3%k$N35MW(B</title> - <p><code>AJP13</code> $B%W%m%H%3%k$O%Q%1%C%H;X8~$G$9!#(B - $B2DFI$J%W%l!<%s%F%-%9%H7A<0$G$O$J$/%P%$%J%j7A<0$K$J$C$?$N$O!"(B - $B$*$=$i$/%Q%U%)!<%^%s%9>e$NM}M3$K$h$j$^$9!#(B - $B%&%'%V%5!<%P$O%5!<%V%l%C%H%3%s%F%J$H(B TCP $B%3%M%/%7%g%s$GDL?.$7$^$9!#(B - $B%=%1%C%H@8@.$O=E$$=hM}$J$N$G!"Ii2Y$r8:$i$9$?$a$K!"%5!<%V%l%C%H%3%s%F%J$H$N(B - TCP $B@\B3$r0];}$7!"J#?t$N%j%/%(%9%H!&%l%9%]%s%9=hM}%5%$%/%k$KBP$7$F0l$D$N(B - $B%3%M%/%7%g%s$r;H$$$^$o$9$h$&$K$J$C$F$$$^$9!#(B</p> - <p>$B$"$k%j%/%(%9%H$K%3%M%/%7%g%s$,3d$jEv$F$i$l$k$H!"$=$N=hM}%5%$%/%k$,(B - $B40N;$9$k$^$GB>$N$b$N$K;H$o$l$k$3$H$O$"$j$^$;$s!#(B - $B$D$^$j%3%M%/%7%g%s>e$G$O!"%j%/%(%9%H$NF1;~=hM}$O9T$o$l$^$;$s!#(B - $B$3$N$?$a!"%3%M%/%7%g%sN>C<$G$N<B9T$9$k%3!<%I$r4J7i$K$G$-$k0lJ}$G!"(B - $BF1;~$K3+$/%3%M%/%7%g%s$OB?$/$J$C$F$$$^$9!#(B</p> - <p>$B%5!<%V%l%C%H%3%s%F%J$X$N%3%M%/%7%g%s$r3+$$$?8e$O!"%3%M%/%7%g%s$N>uBV$O(B - $B<!$N$I$l$+$K$J$j$^$9(B:</p> +<section id="overviewprotocol"><title>プロトコルの概要</title> + <p><code>AJP13</code> プロトコルはパケット指向です。 + 可読なプレーンテキスト形式ではなくバイナリ形式になったのは、 + おそらくパフォーマンス上の理由によります。 + ウェブサーバはサーブレットコンテナと TCP コネクションで通信します。 + ソケット生成は重い処理なので、負荷を減らすために、サーブレットコンテナとの + TCP 接続を維持し、複数のリクエスト・レスポンス処理サイクルに対して一つの + コネクションを使いまわすようになっています。</p> + <p>あるリクエストにコネクションが割り当てられると、その処理サイクルが + 完了するまで他のものに使われることはありません。 + つまりコネクション上では、リクエストの同時処理は行われません。 + このため、コネクション両端での実行するコードを簡潔にできる一方で、 + 同時に開くコネクションは多くなっています。</p> + <p>サーブレットコンテナへのコネクションを開いた後は、コネクションの状態は + 次のどれかになります:</p> <ul> - <li> Idle <br />$B%3%M%/%7%g%s>e$G=hM}$5$l$F$$$k%j%/%(%9%H$O$"$j$^$;$s!#(B</li> - <li> Assigned <br />$B%3%M%/%7%g%s$O%j%/%(%9%H$r=hM}Cf$G$9!#(B</li> + <li> Idle <br />コネクション上で処理されているリクエストはありません。</li> + <li> Assigned <br />コネクションはリクエストを処理中です。</li> </ul> - <p>$B%3%M%/%7%g%s$,FCDj$N%j%/%(%9%H$K%"%5%$%s$5$l$k$H!"4pK\E*$J>pJs(B ($BNc$($P(B - HTTP $B%X%C%@Ey(B) $B$,05=L$5$l$?7A(B ($BNc$($PDL>o$NJ8;zNs$O@0?t$K%(%s%3!<%I$5$l$^$9(B) - $B$GE>Aw$5$l$^$9!#>\:Y$O2<5-$N!V%j%/%(%9%H%Q%1%C%H$N9=B$!W$r;2>H$7$F$/$@$5$$!#(B - $B%j%/%(%9%H$K%\%G%#$,B8:_(B <code>(content-length > 0)</code> $B$9$l$P!"(B - $B4pK\E*$J>pJs$ND>8e$KJL%Q%1%C%H$GE>Aw$5$l$^$9!#(B</p> - <p>$B$3$N;~E@$G$*$=$i$/!"%5!<%V%l%C%H%3%s%F%J$O=hM}$r3+;O$G$-$k$h$&$K$J$j$^$9!#(B - $B$G$9$N$G!"<!$N%a%C%;!<%8$r%&%'%V%5!<%P$KLa$7$FCN$i$;$i$l$k$h$&$K$J$j$^$9!#(B</p> + <p>コネクションが特定のリクエストにアサインされると、基本的な情報 (例えば + HTTP ヘッダ等) が圧縮された形 (例えば通常の文字列は整数にエンコードされます) + で転送されます。詳細は下記の「リクエストパケットの構造」を参照してください。 + リクエストにボディが存在 <code>(content-length > 0)</code> すれば、 + 基本的な情報の直後に別パケットで転送されます。</p> + <p>この時点でおそらく、サーブレットコンテナは処理を開始できるようになります。 + ですので、次のメッセージをウェブサーバに戻して知らせられるようになります。</p> <ul> - <li>SEND_HEADERS <br/>$B%V%i%&%6$K%X%C%@$rAw?.$7$^$9!#(B</li> - <li>SEND_BODY_CHUNK <br/>$B%V%i%&%6$K%\%G%#%G!<%?$N%A%c%s%/$rAw$j$^$9!#(B + <li>SEND_HEADERS <br/>ブラウザにヘッダを送信します。</li> + <li>SEND_BODY_CHUNK <br/>ブラウザにボディデータのチャンクを送ります。 </li> - <li>GET_BODY_CHUNK <br/>$B%j%/%(%9%H$N%G!<%?$rA4$F<u$1<h$j=*$o$C$F$$$J$$$H$-$K!"(B - $B;D$C$F$$$k%G!<%?$r<u$1<h$j$^$9!#%Q%1%C%H$K$"$kDj$^$C$?:GBgD9$,$"$j!"G$0U$N(B - $BBg$-$5$N%G!<%?$,%j%/%(%9%H$N%\%G%#$H$7$F4^$^$l$&$k>l9g(B - ($BNc$($P%U%!%$%k$N%"%C%W%m!<%I$N>l9g(B) $B$KI,MW$H$J$j$^$9!#(B - ($BCm(B: HTTP $B$N%A%c%s%/E>Aw$H$O4XO"$"$j$^$;$s!#(B)</li> - <li>END_RESPONSE <br/>$B%j%/%(%9%H=hM}%5%$%/%k$r=*N;$7$^$9!#(B</li> + <li>GET_BODY_CHUNK <br/>リクエストのデータを全て受け取り終わっていないときに、 + 残っているデータを受け取ります。パケットにある定まった最大長があり、任意の + 大きさのデータがリクエストのボディとして含まれうる場合 + (例えばファイルのアップロードの場合) に必要となります。 + (注: HTTP のチャンク転送とは関連ありません。)</li> + <li>END_RESPONSE <br/>リクエスト処理サイクルを終了します。</li> </ul> - <p>$B8D!9$N%a%C%;!<%8$O$=$l$>$l0[$J$k%G!<%?%Q%1%C%H7A<0$K$J$C$F$$$^$9!#(B - $B8e=R$N!V%l%9%]%s%9%Q%1%C%H$N9=B$!W$r;2>H$7$F$/$@$5$$!#(B</p> + <p>個々のメッセージはそれぞれ異なるデータパケット形式になっています。 + 後述の「レスポンスパケットの構造」を参照してください。</p> </section> -<section id="basppacketstruct"><title>$B4pK\%Q%1%C%H9=B$(B</title> - <p>$B$3$N%W%m%H%3%k$K$O(B XDR $B$+$i<u$17Q$$$@ItJ,$,>/$7$"$j$^$9$,!"B?$/$NE@$G(B - $B0[$J$j$^$9(B ($BNc$($P(B 4 $B%P%$%H%"%i%$%a%s%H$G$J$$$3$H$J$I(B) $B!#(B</p> - <p>$B%P%$%H%*!<%@!<(B: $B8D!9$N%P%$%H$N%(%s%G%#%"%s$,$I$&$J$C$F$$$k$+$O!"(B - $B;d$O>\$7$/$J$$$N$G$9$,!"%j%H%k%(%s%G%#%"%s$K$J$C$F$$$k$H;W$$$^$9!#(B - XDR $B;EMM$G$=$&$J$C$F$$$k$N$H!"AG@2$i$7$$$3$H$K(B sys/socket $B%i%$%V%i%j$,(B - (C $B$G(B) $B$=$&$$$&Iw$K$G$-$F$$$k$N$G$=$&$J$N$@$H;W$$$^$7$?!#(B - $B%=%1%C%H8F$S=P$7$NFbIt$K$D$$$F$h$j>\$7$$J}$,$$$i$C$7$c$$$^$7$?$i!"(B - $B$465<x$/$@$5$$!#(B</p> - <p>$B%W%m%H%3%k$K$O(B 4 $B$D$N%G!<%?%?%$%W$,$"$j$^$9(B: byte, boolean, - integer, string $B$G$9!#(B</p> +<section id="basppacketstruct"><title>基本パケット構造</title> + <p>このプロトコルには XDR から受け継いだ部分が少しありますが、多くの点で + 異なります (例えば 4 バイトアライメントでないことなど) 。</p> + <p>バイトオーダー: 個々のバイトのエンディアンがどうなっているかは、 + 私は詳しくないのですが、リトルエンディアンになっていると思います。 + XDR 仕様でそうなっているのと、素晴らしいことに sys/socket ライブラリが + (C で) そういう風にできているのでそうなのだと思いました。 + ソケット呼び出しの内部についてより詳しい方がいらっしゃいましたら、 + ご教授ください。</p> + <p>プロトコルには 4 つのデータタイプがあります: byte, boolean, + integer, string です。</p> <dl> - <dt><strong>Byte</strong></dt><dd>$B%P%$%H0l$D$G$9!#(B</dd> + <dt><strong>Byte</strong></dt><dd>バイト一つです。</dd> <dt><strong>Boolean</strong></dt> - <dd>$B%P%$%H0l$D$G!"(B<code>1 = true</code>, <code>0 = false</code> $B$G$9!#(B - (C $B$N$h$&$K(B) $BHsNm$r??$H$7$F07$C$F$7$^$&$H!"$"$k>l9g$OF0$/$+$b$7$l$^$;$s$7!"(B - $BF0$+$J$$$+$b$7$l$^$;$s!#(B</dd> + <dd>バイト一つで、<code>1 = true</code>, <code>0 = false</code> です。 + (C のように) 非零を真として扱ってしまうと、ある場合は動くかもしれませんし、 + 動かないかもしれません。</dd> <dt><strong>Integer</strong></dt> - <dd><code>0 $B$+$i(B 2^16 (32768)</code> $B$NHO0O$N?t;z!#9b<!$N(B 2 $B%P%$%H$,(B - $B@h$K3JG<$5$l$^$9!#(B</dd> + <dd><code>0 から 2^16 (32768)</code> の範囲の数字。高次の 2 バイトが + 先に格納されます。</dd> <dt><strong>String</strong></dt> - <dd>$B2DJQD9$NJ8;zNs(B (2^16 $B$,D9$5$N>e8B(B) $B!#D9$5>pJs$N%Q%1%C%H(B 2 $B%P%$%H$N8e$K(B - $BJ8;zNs(B ($B=*C<J8;z(B '\0' $B$r4^$`(B) $B$,B3$/7A<0$G%(%s%3!<%I$5$l$^$9!#(B - $B%(%s%3!<%I$5$l$F$$$kD9$5>pJs$O:G8e$N(B '\0' $B$r(B<strong>$B%+%&%s%H$7$J$$(B</strong> - $B$3$H$KCm0U$7$F$/$@$5$$!=!=$3$l$O(B <code>strlen</code> $B$HF1MM$G$9!#(B - $B$3$l$i$N=*C<J8;z$r%9%-%C%W$9$k$?$a$K!"$"$^$j0UL#$NL5$$%$%s%/%j%a%s%HJ8(B - $B$r$?$/$5$s=q$+$J$$$H$$$1$J$$$N$O!"(B - Java $B$NB&$+$i8+$k$H>/$7J6$i$o$7$/46$8$i$l$k$+$b$7$l$^$;$s!#(B - $B$3$&$J$C$?M}M3$O$*$=$i$/!"(BServlet $B%3%s%F%J$+$iJV$5$l$kJ8;zNs$rFI$_=P$9;~$K!"(B - $B8zN($h$/(B C $B$N%3!<%I$r=q$1$k$h$&$K$9$k!=!=%5!<%V%l%C%H$+$iJV$5$l$k(B - $BJ8;zNs$O(B \0 $BJ8;z$G=*C<$5$l$F$$$k$N$G!"(BC $B$N%3!<%I$G$O$o$6$o$6%3%T!<$r$;$:$K!"(B - $B0l$D$N%P%C%U%!$X$N%j%U%!%l%s%9$r<h$j2s$9$h$&$K=q$/$3$H$,$G$-$k!=!=(B - $B$?$a$@$H;W$o$l$^$9!#(B - '\0' $BJ8;z$,$J$$>l9g$O!"(BC $B$G$OJ8;zNs$N5,B'$K9g$&$h$&$K%3%T!<$7$J$1$l$P(B - $B$$$1$J$/$J$C$F$7$^$$$^$9!#(B</dd> + <dd>可変長の文字列 (2^16 が長さの上限) 。長さ情報のパケット 2 バイトの後に + 文字列 (終端文字 '\0' を含む) が続く形式でエンコードされます。 + エンコードされている長さ情報は最後の '\0' を<strong>カウントしない</strong> + ことに注意してください――これは <code>strlen</code> と同様です。 + これらの終端文字をスキップするために、あまり意味の無いインクリメント文 + をたくさん書かないといけないのは、 + Java の側から見ると少し紛らわしく感じられるかもしれません。 + こうなった理由はおそらく、Servlet コンテナから返される文字列を読み出す時に、 + 効率よく C のコードを書けるようにする――サーブレットから返される + 文字列は \0 文字で終端されているので、C のコードではわざわざコピーをせずに、 + 一つのバッファへのリファレンスを取り回すように書くことができる―― + ためだと思われます。 + '\0' 文字がない場合は、C では文字列の規則に合うようにコピーしなければ + いけなくなってしまいます。</dd> </dl> - <section><title>$B%Q%1%C%H%5%$%:(B</title> - <p>$BB?$/$N%3!<%I$G$=$&$J$C$F$$$k$N$G$9$,!"%Q%1%C%H%5%$%:$N:GBg%5%$%:$O(B - <code>8 * 1024 (8K)</code> $B$G$9!#%Q%1%C%H$N<B:]$ND9$5$O%X%C%@$K(B - $B%(%s%3!<%I$5$l$FF~$C$F$$$^$9!#(B</p> + <section><title>パケットサイズ</title> + <p>多くのコードでそうなっているのですが、パケットサイズの最大サイズは + <code>8 * 1024 (8K)</code> です。パケットの実際の長さはヘッダに + エンコードされて入っています。</p> </section> - <section><title>$B%Q%1%C%H%X%C%@(B</title> - <p>$B%5!<%P$+$i%3%s%F%J$KAw=P$5$l$k%Q%1%C%H$O(B <code>0x1234</code> $B$G;O$^$j$^$9!#(B - $B%3%s%F%J$+$i%5!<%P$KAw$i$l$k%Q%1%C%H$O(B <code>AB</code> (ASCII $B%3!<%I(B A $B$H(B - ASCII $B%3!<%I(B B) $B$G;O$^$j$^$9!#$3$NFs%P%$%H$N8e$K!"%Z%$%m!<%ID9$,(B ($B>e5-$N7A<0$G(B) - $BB3$-$^$9!#$3$N$?$a!"%Z%$%m!<%ID9$N:GBgCM$O(B 2^16 $B$K$G$-$k$h$&$K;W$($^$9$,!"(B - $B<B:]$K$O%3!<%I$G$O:GBgCM$O(B 8K $B$K@_Dj$5$l$F$$$^$9!#(B</p> + <section><title>パケットヘッダ</title> + <p>サーバからコンテナに送出されるパケットは <code>0x1234</code> で始まります。 + コンテナからサーバに送られるパケットは <code>AB</code> (ASCII コード A と + ASCII コード B) で始まります。この二バイトの後に、ペイロード長が (上記の形式で) + 続きます。このため、ペイロード長の最大値は 2^16 にできるように思えますが、 + 実際にはコードでは最大値は 8K に設定されています。</p> <table> <tr> - <td colspan="6"><em>$B%Q%1%C%H7A<0(B (Server->Container)</em></td> + <td colspan="6"><em>パケット形式 (Server->Container)</em></td> </tr> <tr> <td>Byte</td> @@ -153,13 +153,13 @@ <td>Contents</td> <td>0x12</td> <td>0x34</td> - <td colspan="2">$B%G!<%?D9(B (n)</td> + <td colspan="2">データ長 (n)</td> <td>Data</td> </tr> </table> <table> <tr> - <td colspan="6"><em>$B%Q%1%C%H7A<0(B (Container->Server)</em></td> + <td colspan="6"><em>パケット形式 (Container->Server)</em></td> </tr> <tr> <td>Byte</td> @@ -173,98 +173,98 @@ <td>Contents</td> <td>A</td> <td>B</td> - <td colspan="2">$B%G!<%?D9(B (n)</td> + <td colspan="2">データ長 (n)</td> <td>Data</td> </tr> </table> - <p>$B$[$H$s$I$N%Q%1%C%H$G!"%Z%$%m!<%I$N:G=i$N%P%$%H$,%a%C%;!<%8$N7?$r%(%s%3!<%I(B - $B$7$F$$$^$9!#Nc30$O%5!<%P$+$i%3%s%F%J$KAw$i$l$k%j%/%(%9%H%\%G%#%Q%1%C%H$G$9(B - $B!=!=$3$l$i$OI8=`E*$J%Q%1%C%H7A<0(B (<code>0x1234</code> $B$H%Q%1%C%HD9(B) - $B$G$9$,!"$=$N8e$KB3$/%W%l%U%#%C%/%9%3!<%I$,$"$j$^$;$s!#(B</p> - <p>$B%&%'%V%5!<%P$O<!$N%a%C%;!<%8$r%5!<%V%l%C%H%3%s%F%J$KAw=P$G$-$^$9!#(B</p> + <p>ほとんどのパケットで、ペイロードの最初のバイトがメッセージの型をエンコード + しています。例外はサーバからコンテナに送られるリクエストボディパケットです + ――これらは標準的なパケット形式 (<code>0x1234</code> とパケット長) + ですが、その後に続くプレフィックスコードがありません。</p> + <p>ウェブサーバは次のメッセージをサーブレットコンテナに送出できます。</p> <table> <tr> - <td>$B%3!<%I(B</td> - <td>$B%Q%1%C%H$N7?(B</td> - <td>$B0UL#(B</td> + <td>コード</td> + <td>パケットの型</td> + <td>意味</td> </tr> <tr> <td>2</td> <td>Forward Request</td> - <td>$B%j%/%(%9%H=hM}%5%$%/%k$r8eB3$N%G!<%?$H$H$b$K3+;O$9$k!#(B</td> + <td>リクエスト処理サイクルを後続のデータとともに開始する。</td> </tr> <tr> <td>7</td> <td>Shutdown</td> - <td>$B%&%'%V%5!<%P$,%3%s%F%J$K!"%3%s%F%J$r=*N;$9$k$h$&$KEA$($k!#(B</td> + <td>ウェブサーバがコンテナに、コンテナを終了するように伝える。</td> </tr> <tr> <td>8</td> <td>Ping</td> - <td>$B%&%'%V%5!<%P$,%3%s%F%J$K@)8f$r<u$1;}$D$h$&$KEA$($k(B - ($B%;%-%e%"%m%0%$%s%U%'!<%:(B) $B!#(B</td> + <td>ウェブサーバがコンテナに制御を受け持つように伝える + (セキュアログインフェーズ) 。</td> </tr> <tr> <td>10</td> <td>CPing</td> - <td>$B%&%'%V%5!<%P$,%3%s%F%J$K(B CPong $B$GB(:B$K1~Ez$9$k$h$&$KEA$($k!#(B</td> + <td>ウェブサーバがコンテナに CPong で即座に応答するように伝える。</td> </tr> <tr> <td>none</td> <td>Data</td> - <td>$B%5%$%:(B (2 $B%P%$%H(B) $B$H$=$l$KB3$/%\%G%#%G!<%?!#(B</td> + <td>サイズ (2 バイト) とそれに続くボディデータ。</td> </tr> </table> - <p>$B4pK\E*$J%;%-%e%j%F%#$r3NJ]$9$k$?$a!"%[%9%H$5$l$F$$$k%^%7%s$HF10l$N(B - $B%^%7%s$+$i$N%j%/%(%9%H$KBP$7$F$N$_!"%3%s%F%J$O<B:]$K(B <code>Shutdown</code> - $B$r<B9T$7$^$9!#(B</p> - <p>$B:G=i$N(B <code>Data</code> $B%Q%1%C%H$O!"(B<code>Forward Request</code> - $B$ND>8e$K%&%'%V%5!<%P$+$iAw$i$l$^$9!#(B</p> - <p>$B%5!<%V%l%C%H%3%s%F%J$O%&%'%V%5!<%P$K!"<!$N%?%$%W$N%a%C%;!<%8$rAw$k$3$H$,(B - $B$G$-$^$9(B :</p> + <p>基本的なセキュリティを確保するため、ホストされているマシンと同一の + マシンからのリクエストに対してのみ、コンテナは実際に <code>Shutdown</code> + を実行します。</p> + <p>最初の <code>Data</code> パケットは、<code>Forward Request</code> + の直後にウェブサーバから送られます。</p> + <p>サーブレットコンテナはウェブサーバに、次のタイプのメッセージを送ることが + できます :</p> <table> <tr> - <td>$B%3!<%I(B</td> - <td>$B%Q%1%C%H$N7?(B</td> - <td>$B0UL#(B</td> + <td>コード</td> + <td>パケットの型</td> + <td>意味</td> </tr> <tr> <td>3</td> <td>Send Body Chunk</td> - <td>$B%5!<%V%l%C%H%3%s%F%J$+$i%&%'%V%5!<%P$K(B - ($B$=$7$F$*$=$i$/$=$N$^$^%V%i%&%6$K(B)$B!"%\%G%#$N%A%c%s%/$rAw$k!#(B</td> + <td>サーブレットコンテナからウェブサーバに + (そしておそらくそのままブラウザに)、ボディのチャンクを送る。</td> </tr> <tr> <td>4</td> <td>Send Headers</td> - <td>$B%5!<%V%l%C%H%3%s%F%J$+$i%&%'%V%5!<%P$K(B ($B$=$7$F$*$=$i$/$=$N$^$^%V%i%&%6$K(B) - $B%l%9%]%s%9%X%C%@$rAw$k!#(B</td> + <td>サーブレットコンテナからウェブサーバに (そしておそらくそのままブラウザに) + レスポンスヘッダを送る。</td> </tr> <tr> <td>5</td> <td>End Response</td> - <td>$B%l%9%]%s%9(B ($B$D$^$j%j%/%(%9%H=hM}%5%$%/%k(B) $B=*N;$NL\0u$rAw$k!#(B + <td>レスポンス (つまりリクエスト処理サイクル) 終了の目印を送る。 </td> </tr> <tr> <td>6</td> <td>Get Body Chunk</td> - <td>$B$^$@A4$FE>Aw$5$l$F$$$J$$>l9g!";D$C$F$$$k%j%/%(%9%H$N%G!<%?$r<u$1<h$k!#(B + <td>まだ全て転送されていない場合、残っているリクエストのデータを受け取る。 </td> </tr> <tr> <td>9</td> - <td>CPong $B1~Ez(B</td> - <td>CPing $B%j%/%(%9%H$K1~Ez$9$k!#(B</td> + <td>CPong 応答</td> + <td>CPing リクエストに応答する。</td> </tr> </table> - <p>$B>e5-%a%C%;!<%8$O!"$=$l$>$lFbIt9=B$$,0[$J$C$F$$$^$9!#>\:Y$O2<5-$r$4Mw$/$@$5$$!#(B + <p>上記メッセージは、それぞれ内部構造が異なっています。詳細は下記をご覧ください。 </p> </section> </section> -<section id="rpacetstruct"><title>$B%j%/%(%9%H%Q%1%C%H9=B$(B</title> - <p>$B%5!<%P$+$i%3%s%F%J$XAw$i$l$k%a%C%;!<%8$,(B - <em>Forward Request</em> $B7?$N>l9g(B :</p> +<section id="rpacetstruct"><title>リクエストパケット構造</title> + <p>サーバからコンテナへ送られるメッセージが + <em>Forward Request</em> 型の場合 :</p> <example><pre> AJP13_FORWARD_REQUEST := prefix_code (byte) 0x02 = JK_AJP13_FORWARD_REQUEST @@ -281,7 +281,7 @@ AJP13_FORWARD_REQUEST := attributes *(attribut_name attribute_value) request_terminator (byte) OxFF </pre></example> - <p><code>request_headers</code> $B$O<!$N$h$&$J9=B$$K$J$C$F$$$^$9(B : + <p><code>request_headers</code> は次のような構造になっています : </p><example><pre> req_header_name := sc_req_header_name | (string) [see below for how this is parsed] @@ -290,24 +290,24 @@ sc_req_header_name := 0xA0xx (integer) req_header_value := (string) </pre></example> - <p><code>$BB0@-(B</code> $B$O%*%W%7%g%s$G!"<!$N$h$&$J9=B$$r$7$F$$$^$9(B :</p> + <p><code>属性</code> はオプションで、次のような構造をしています :</p> <example><pre> attribute_name := sc_a_name | (sc_a_req_attribute string) attribute_value := (string) </pre></example> - <p>$B$b$C$H$b=EMW$J%X%C%@$O(B <code>content-length</code> $B$@$H$$$&$3$H$K(B - $BCm0U$7$F$/$@$5$$!#%3%s%F%J$O<!$N%Q%1%C%H$rC5$9$+$I$&$+$r!"(B - $B$=$l$r8+$F7h$a$k$+$i$G$9!#(B</p> - <section><title>Forward Request $BMWAG$N>\:Y$J@bL@(B + <p>もっとも重要なヘッダは <code>content-length</code> だということに + 注意してください。コンテナは次のパケットを探すかどうかを、 + それを見て決めるからです。</p> + <section><title>Forward Request 要素の詳細な説明 </title></section> <section><title>Request prefix</title> - <p>$B%j%/%(%9%H$K$D$$$F$OA4$F!"$3$NCM$O(B 2 $B$K$J$j$^$9!#B>$N(B Prefix $B%3!<%I$N>\:Y$O(B - $B>e5-$r$4Mw$/$@$5$$!#(B</p> + <p>リクエストについては全て、この値は 2 になります。他の Prefix コードの詳細は + 上記をご覧ください。</p> </section> <section><title>Method</title> - <p>HTTP $B%a%=%C%I$O(B 1 $B%P%$%H$K%(%s%3!<%I$5$l$^$9(B :</p> + <p>HTTP メソッドは 1 バイトにエンコードされます :</p> <table> <tr><td>Command Name</td><td>Code</td></tr> <tr><td>OPTIONS</td><td>1</td></tr> @@ -338,25 +338,25 @@ attribute_value := (string) <tr><td>BASELINE_CONTROL</td><td>26</td></tr> <tr><td>MKACTIVITY</td><td>27</td></tr> </table> - <p>$B:#8e$N(B ajp13 $B%P!<%8%g%s$G$O!"$3$N0lMw$K$J$$!":#8eDI2C$5$l$k%a%=%C%I$r(B - $BAw$k$+$b$7$l$^$;$s!#(B</p> + <p>今後の ajp13 バージョンでは、この一覧にない、今後追加されるメソッドを + 送るかもしれません。</p> </section> <section><title>protocol, req_uri, remote_addr, remote_host, server_name, server_port, is_ssl</title> - <p>$B$3$l$i$O$^$5$KJ8;zDL$j$N$b$N$G$9!#$I$l$bI,MW$G!"%j%/%(%9%H$NKh2s$K$D$-(B - $BAw$i$l$^$9!#(B</p> + <p>これらはまさに文字通りのものです。どれも必要で、リクエストの毎回につき + 送られます。</p> </section> <section><title>Headers</title> - <p><code>request_headers</code> $B$N9=B$$O<!$N$h$&$J$b$N$G$9(B : - $B$^$:%X%C%@$N?t(B <code>num_headers</code> $B$,%(%s%3!<%I$5$l$^$9!#(B - $B<!$K%X%C%@L>(B <code>req_header_name</code> / $BCM(B <code>req_header_value</code> - $B$NAH$,B3$-$^$9!#8zN($N$?$a!"0lHLE*$J%X%C%@$O@0?t$G%(%s%3!<%I$7$FE>Aw$7$^$9!#(B - $B%X%C%@L>$,4pK\%X%C%@$N0lMw$KL5$$>l9g$O!"DL>oDL$j(B ($BJ8;zNs$H$7$F!"D9$5(B - $B%W%l%U%#%C%/%9IU$-$G(B) $BE>Aw$5$l$^$9!#0lHLE*$J%X%C%@(B - <code>sc_req_header_name</code> $B$N0lMw$H$=$N%3!<%I$O<!$NDL$j$G$9(B - ($B$I$l$bBgJ8;z>.J8;z$r6hJL$7$^$9(B) :</p> + <p><code>request_headers</code> の構造は次のようなものです : + まずヘッダの数 <code>num_headers</code> がエンコードされます。 + 次にヘッダ名 <code>req_header_name</code> / 値 <code>req_header_value</code> + の組が続きます。効率のため、一般的なヘッダは整数でエンコードして転送します。 + ヘッダ名が基本ヘッダの一覧に無い場合は、通常通り (文字列として、長さ + プレフィックス付きで) 転送されます。一般的なヘッダ + <code>sc_req_header_name</code> の一覧とそのコードは次の通りです + (どれも大文字小文字を区別します) :</p> <table> - <tr><td>$BL>A0(B</td><td>$B%3!<%I$NCM(B</td><td>$B%3!<%IL>(B</td></tr> + <tr><td>名前</td><td>コードの値</td><td>コード名</td></tr> <tr><td>accept</td><td>0xA001</td><td>SC_REQ_ACCEPT</td></tr> <tr><td>accept-charset</td><td>0xA002</td><td>SC_REQ_ACCEPT_CHARSET </td></tr> @@ -378,32 +378,32 @@ attribute_value := (string) <tr><td>referer</td><td>0xA00D</td><td>SC_REQ_REFERER</td></tr> <tr><td>user-agent</td><td>0xA00E</td><td>SC_REQ_USER_AGENT</td></tr> </table> - <p>$B$3$l$rFI$_9~$`(B Java $B$N%3!<%I$G$O!":G=i$N(B 2 $B%P%$%H@0?t$r<h$j9~$_!"(B - $BL\0u$K$J$k%P%$%H(B <code>'0xA0'</code> $B$G$"$l$P!"%X%C%@L>$NG[Ns$N(B - $B%$%s%G%C%/%9$r;H$$$^$9!#@hF,%P%$%H$,(B <code>0xA0</code> $B$G$J$$>l9g$O!"(B - $B@hF,(B 2 $B%P%$%H$OJ8;zNsD9$rI=$9@0?t$G$"$k$H2r<a$7!"FI$_9~$_$O$8$a$^$9!#(B</p> - <p>$B%X%C%@L>$ND9$5$O(B <code>0x9999 (==0xA000 -1)</code> $B0J>e$K$J$i$J$$$H$$$&(B - $B2>Dj$N2<$KF0$$$F$$$F!">/$7$"$$$^$$$G$9$,9gM}E*$J5sF0$K$J$C$F$$$^$9!#(B</p> - <note><title>$BCm(B:</title> - <code>content-length</code> $B%X%C%@$O$H$F$b=EMW$G$9!#(B - $BB8:_$7$F$$$FHs%<%m$G$"$l$P!"%j%/%(%9%H$K$O%\%G%#$,$"$k(B ($BNc$($P(B POST - $B%j%/%(%9%H(B) $B$H?dB,$7!"$=$N%\%G%#$r<h$j9~$`$?$a$K(B - $BD>8e$N%Q%1%C%H$rF~NO%9%H%j!<%`$+$iFI$_9~$_$O$8$a$^$9!#(B + <p>これを読み込む Java のコードでは、最初の 2 バイト整数を取り込み、 + 目印になるバイト <code>'0xA0'</code> であれば、ヘッダ名の配列の + インデックスを使います。先頭バイトが <code>0xA0</code> でない場合は、 + 先頭 2 バイトは文字列長を表す整数であると解釈し、読み込みはじめます。</p> + <p>ヘッダ名の長さは <code>0x9999 (==0xA000 -1)</code> 以上にならないという + 仮定の下に動いていて、少しあいまいですが合理的な挙動になっています。</p> + <note><title>注:</title> + <code>content-length</code> ヘッダはとても重要です。 + 存在していて非ゼロであれば、リクエストにはボディがある (例えば POST + リクエスト) と推測し、そのボディを取り込むために + 直後のパケットを入力ストリームから読み込みはじめます。 </note> </section> - <section><title>$BB0@-(B</title> - <p><code>?</code> $B%W%l%U%#%C%/%9$G;O$^$kB0@-(B ($BNc(B <code>?context</code>) - $B$O!#>JN,2DG=$G$9!#$=$l$>$lB0@-$N7?$r<($9(B 1 $B%P%$%H$N%3!<%I$H!"(B - $BCM$NJ8;zNs$,B3$-$^$9!#(B - $B$3$l$i$O=gITF1$GAw$k$3$H$,$G$-$^$9(B (C $B$N%3!<%I$O>o$K2<$N0lMw=g$K(B - $BAw$k$h$&$G$9$,(B) $B!#(B - $B%*%W%7%g%s$NB0@-$N%j%9%H$N:G8e$K$O!"FCJL$J=*N;%3!<%I$,Aw$i$l$^$9!#(B - $B%3!<%I$N0lMw$O(B : </p> + <section><title>属性</title> + <p><code>?</code> プレフィックスで始まる属性 (例 <code>?context</code>) + は。省略可能です。それぞれ属性の型を示す 1 バイトのコードと、 + 値の文字列が続きます。 + これらは順不同で送ることができます (C のコードは常に下の一覧順に + 送るようですが) 。 + オプションの属性のリストの最後には、特別な終了コードが送られます。 + コードの一覧は : </p> <table> <tr><td>Information</td><td>Code Value</td><td>Note</td></tr> - <tr><td>?context</td><td>0x01</td><td>$BL$<BAu(B + <tr><td>?context</td><td>0x01</td><td>未実装 </td></tr> - <tr><td>?servlet_path</td><td>0x02</td><td>$BL$<BAu(B + <tr><td>?servlet_path</td><td>0x02</td><td>未実装 </td></tr> <tr><td>?remote_user</td><td>0x03</td><td></td></tr> <tr><td>?auth_type</td><td>0x04</td><td></td></tr> @@ -417,33 +417,33 @@ attribute_value := (string) <tr><td>?ssl_key_size</td><td>0x0B</td><td></td></tr> <tr><td>are_done</td><td>0xFF</td><td>request_terminator</td></tr> </table> - <p><code>context</code> $B$H(B <code>servlet_path</code> $B$O8=:_$N(B C $B$N(B - $B%3!<%I$G$O%;%C%H$5$l$F$$$^$;$s!#$^$?!"$[$H$s$I$N(B Java $B$N%3!<%I$G$b!"(B - $B$3$N%U%#!<%k%I$G2?$,Aw$i$l$F$bL5;k$5$l$^$9(B ($B$3$l$i$N%3!<%I$N8e$KJ8;zNs$,(B - $BAw$i$l$k$H2u$l$k$b$N$b$"$j$^$9(B)$B!#(B - $B$3$l$,%P%0$J$N$+!"C1$KL$<BAu$J$N$+!"Nr;KE*7P0^$G;D$C$F$$$k%3!<%I$J$N$+(B - $BJ,$+$j$^$;$s$,!"%3%M%/%7%g%s$NN>B&$H$b$G8+Ev$?$j$^$;$s!#(B</p> - <p><code>remote_user</code> $B$H(B <code>auth_type</code> $B$O$*$=$i$/(B - HTTP $B%l%Y%k$NG'>Z$r;2>H$7$F$$$F!"%j%b!<%H%f!<%6$N%f!<%6L>$HG'>Z$K;HMQ$7$?(B - $B%?%$%W(B ($BNc(B Basic, Digest) $B$K$D$$$F$d$j<h$j$7$^$9!#(B</p> + <p><code>context</code> と <code>servlet_path</code> は現在の C の + コードではセットされていません。また、ほとんどの Java のコードでも、 + このフィールドで何が送られても無視されます (これらのコードの後に文字列が + 送られると壊れるものもあります)。 + これがバグなのか、単に未実装なのか、歴史的経緯で残っているコードなのか + 分かりませんが、コネクションの両側ともで見当たりません。</p> + <p><code>remote_user</code> と <code>auth_type</code> はおそらく + HTTP レベルの認証を参照していて、リモートユーザのユーザ名と認証に使用した + タイプ (例 Basic, Digest) についてやり取りします。</p> <p><code>query_string</code>, <code>ssl_cert</code>, <code>ssl_cipher</code>, <code>ssl_session</code> - $B$O(B HTTP $B$H(B HTTPS $B$NBP1~$9$kItJ,$r;2>H$7$^$9!#(B</p> - <p><code>jvm_route</code> $B$O%9%F%#%C%-!<%;%C%7%g%s$N%5%]!<%H!=!=(B - $B%m!<%I%P%i%s%9$7$F$$$kJ#?t$N%5!<%PCf$NFCDj$N(B Tomcat $B%$%s%9%?%s%9$H!"(B - $B%f!<%6$N%;%C%7%g%s$H$rI3IU$1$k5!G=!=!=$K;H$o$l$^$9!#(B</p> - <p>$B$3$N4pK\B0@-0lMw$KL5$$$b$N$K$D$$$F$O!"(B<code>req_attribute</code> - $B%3!<%I(B <code>0x0A</code> $B7PM3$GB0@-$r2?8D$G$bAw$k$3$H$,$G$-$^$9!#(B - $BB0@-$NL>A0$HCM$NJ8;zNs$NAH$r!"$=$l$>$l$3$N%3!<%I$ND>8e$KAw$j$^$9!#(B - $B4D6-JQ?t$O$3$NJ}K!$GEA$($i$l$^$9!#(B</p> - <p>$B:G8e$KB0@-$,A4$FAw?.$5$l$?8e$K!"B0@-$N=*C<$r<($9(B <code>0xFF</code> - $B$,Aw=P$5$l$^$9!#$3$N?.9f$OB0@-$N0lMw$N=*$o$j$r<($9$HF1;~$K!"%j%/%(%9%H(B - $B%Q%1%C%H$N=*C<$r$b<($7$F$$$^$9!#(B</p> + は HTTP と HTTPS の対応する部分を参照します。</p> + <p><code>jvm_route</code> はスティッキーセッションのサポート―― + ロードバランスしている複数のサーバ中の特定の Tomcat インスタンスと、 + ユーザのセッションとを紐付ける機能――に使われます。</p> + <p>この基本属性一覧に無いものについては、<code>req_attribute</code> + コード <code>0x0A</code> 経由で属性を何個でも送ることができます。 + 属性の名前と値の文字列の組を、それぞれこのコードの直後に送ります。 + 環境変数はこの方法で伝えられます。</p> + <p>最後に属性が全て送信された後に、属性の終端を示す <code>0xFF</code> + が送出されます。この信号は属性の一覧の終わりを示すと同時に、リクエスト + パケットの終端をも示しています。</p> </section> </section> -<section id="resppacketstruct"><title>$B%l%9%]%s%9%Q%1%C%H9=B$(B</title> - <p>$B%3%s%F%J$,%5!<%P$KAw$jJV$9$3$H$N$G$-$k%a%C%;!<%8(B:</p> +<section id="resppacketstruct"><title>レスポンスパケット構造</title> + <p>コンテナがサーバに送り返すことのできるメッセージ:</p> <example><pre> AJP13_SEND_BODY_CHUNK := prefix_code 3 @@ -474,19 +474,19 @@ AJP13_GET_BODY_CHUNK := prefix_code 6 requested_length (integer) </pre></example> - <section><title>$B>\:Y(B :</title></section> + <section><title>詳細 :</title></section> <section><title>Send Body Chunk</title> - <p>$B%A%c%s%/$O4pK\E*$K$O%P%$%J%j%G!<%?$G!"%V%i%&%6$KD>@\Aw$i$l$^$9!#(B</p> + <p>チャンクは基本的にはバイナリデータで、ブラウザに直接送られます。</p> </section> <section><title>Send Headers</title> - <p>$B%9%F!<%?%9%3!<%I$H%a%C%;!<%8$,DL>o$N(B HTTP $B$NDL?.$K$O$"$j$^$9(B ($BNc(B - <code>200</code> $B$H(B <code>OK</code>)$B!#%l%9%]%s%9%X%C%@L>$O!"(B - $B%j%/%(%9%H%X%C%@L>$HF1MM$NJ}K!$G%(%s%3!<%I$5$l$^$9!#(B - $B%3!<%I$HJ8;zNs$NH=JLJ}K!$N>\:Y$K4X$7$F$O!">e5-$N(B header_encoding - $B$r;2>H$7$F$/$@$5$$!#(B - $B0lHLE*$J%X%C%@$N%3!<%I$O(B :</p> + <p>ステータスコードとメッセージが通常の HTTP の通信にはあります (例 + <code>200</code> と <code>OK</code>)。レスポンスヘッダ名は、 + リクエストヘッダ名と同様の方法でエンコードされます。 + コードと文字列の判別方法の詳細に関しては、上記の header_encoding + を参照してください。 + 一般的なヘッダのコードは :</p> <table> - <tr><td>$BL>A0(B</td><td>$B%3!<%I$NCM(B</td></tr> + <tr><td>名前</td><td>コードの値</td></tr> <tr><td>Content-Type</td><td>0xA001</td></tr> <tr><td>Content-Language</td><td>0xA002</td></tr> <tr><td>Content-Length</td><td>0xA003</td></tr> @@ -499,25 +499,25 @@ AJP13_GET_BODY_CHUNK := <tr><td>Status</td><td>0xA00A</td></tr> <tr><td>WWW-Authenticate</td><td>0xA00B</td></tr> </table> - <p>$B%3!<%I$+%X%C%@J8;zNs$ND>8e$K$O!"%X%C%@$NCM$,%(%s%3!<%I$5$l$^$9!#(B</p> + <p>コードかヘッダ文字列の直後には、ヘッダの値がエンコードされます。</p> </section> <section><title>End Response</title> - <p>$B%j%/%(%9%H=hM}%5%$%/%k$N=*N;$rCN$i$;$^$9!#(B<code>reuse</code> $B%U%i%0$,??(B - <code>(==1)</code> $B$N>l9g!"8=:_;HMQ$7$F$$$k(B TCP $B%3%M%/%7%g%s$O<!$N?7$7$$(B - $B%j%/%(%9%H$K;H$($k$h$&$K$J$j$^$9!#(B<code>reuse</code> $B$,56(B (C $B$N%3!<%I$G$O(B - 1 $B0J30$NA4$F(B) $B$N>l9g$O!"%3%M%/%7%g%s$rJD$8$k$3$H$K$J$j$^$9!#(B</p> + <p>リクエスト処理サイクルの終了を知らせます。<code>reuse</code> フラグが真 + <code>(==1)</code> の場合、現在使用している TCP コネクションは次の新しい + リクエストに使えるようになります。<code>reuse</code> が偽 (C のコードでは + 1 以外の全て) の場合は、コネクションを閉じることになります。</p> </section> <section><title>Get Body Chunk</title> - <p>($B%\%G%#$N%5%$%:$,Bg$-$9$.$F:G=i$N%Q%1%C%H$K<}$^$i$J$$>l9g$d!"(B - $B%j%/%(%9%H$,%A%c%s%/E>Aw$5$l$?>l9g$J$I$K$O!"(B) $B%3%s%F%J$O%j%/%(%9%H$+$i$N(B - $B%G!<%?FI$_9~$_MW5a$r$7$^$9!#%5!<%PB&$O$=$l$KBP$7$F!":G>.(B - <code>request_length</code> $B:GBg(B <code>(8186 (8 Kbytes - 6))</code> - $B$NHO0O$G!"L$E>Aw$G;D$C$F$$$k%j%/%(%9%H%\%G%#$NBg$-$5$N%G!<%?$r(B - $BAw$jJV$7$^$9!#(B<br /> - $B%\%G%#$K$=$l0J>e%G!<%?$,;D$C$F$$$J$$>l9g(B ($B$D$^$j%5!<%V%l%C%H$,(B - $B%\%G%#$N:G8e$rD6$($FFI$_9~$b$&$H$7$?>l9g(B) $B!"%5!<%P$O(B - $B%Z%$%m!<%ID9(B 0 $B$N(B<em>$B6u%Q%1%C%H(B</em><code>(0x12,0x34,0x00,0x00)</code> - $B$rAw$jJV$7$^$9!#(B</p> + <p>(ボディのサイズが大きすぎて最初のパケットに収まらない場合や、 + リクエストがチャンク転送された場合などには、) コンテナはリクエストからの + データ読み込み要求をします。サーバ側はそれに対して、最小 + <code>request_length</code> 最大 <code>(8186 (8 Kbytes - 6))</code> + の範囲で、未転送で残っているリクエストボディの大きさのデータを + 送り返します。<br /> + ボディにそれ以上データが残っていない場合 (つまりサーブレットが + ボディの最後を超えて読み込もうとした場合) 、サーバは + ペイロード長 0 の<em>空パケット</em><code>(0x12,0x34,0x00,0x00)</code> + を送り返します。</p> </section> </section> diff --git a/docs/manual/mod/mod_proxy_balancer.xml.ja b/docs/manual/mod/mod_proxy_balancer.xml.ja index dcaf36a1fd..58d03881e3 100644 --- a/docs/manual/mod/mod_proxy_balancer.xml.ja +++ b/docs/manual/mod/mod_proxy_balancer.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 395228:659902 (outdated) --> @@ -23,66 +23,66 @@ <modulesynopsis metafile="mod_proxy_balancer.xml.meta"> <name>mod_proxy_balancer</name> -<description>$BIi2YJ,;6$N$?$a$N(B <module>mod_proxy</module> $B3HD%(B</description> +<description>負荷分散のための <module>mod_proxy</module> 拡張</description> <status>Extension</status> <sourcefile>proxy_balancer.c</sourcefile> <identifier>proxy_balancer_module</identifier> -<compatibility>2.1 $B0J9_(B</compatibility> +<compatibility>2.1 以降</compatibility> <summary> - <p>$BK\%b%8%e!<%k$K$O(B <module>mod_proxy</module> $B$,(B<em>$BI,MW$G$9(B</em>$B!#(B - <code>HTTP</code>, <code>FTP</code> $B$H(B <code>AJP13</code> - $B%W%m%H%3%k$N%m!<%I%P%i%s%95!G=$r;}$C$F$$$^$9!#(B</p> + <p>本モジュールには <module>mod_proxy</module> が<em>必要です</em>。 + <code>HTTP</code>, <code>FTP</code> と <code>AJP13</code> + プロトコルのロードバランス機能を持っています。</p> - <p>$B$G$9$+$i!"(B $B%m!<%I%P%i%s%9$rM-8z$K$9$k>l9g(B <module>mod_proxy</module> - $B$H(B <module>mod_proxy_balancer</module> $B$,%5!<%P$KAH$_9~$^$l$F(B - $B$$$J$1$l$P$$$1$^$;$s!#(B</p> + <p>ですから、 ロードバランスを有効にする場合 <module>mod_proxy</module> + と <module>mod_proxy_balancer</module> がサーバに組み込まれて + いなければいけません。</p> - <note type="warning"><title>$B7Y9p(B</title> + <note type="warning"><title>警告</title> <p><a href="mod_proxy.html#access" - >$B0BA4$J%5!<%P$K$9$k(B</a>$B$^$G%W%m%/%75!G=$OM-8z$K$7$J$$$G$/$@$5$$!#(B - $B%*!<%W%s%W%m%-%7%5!<%P$O$"$J$?<+?H$N%M%C%H%o!<%/$K$H$C$F$b!"(B - $B%$%s%?!<%M%C%HA4BN$K$H$C$F$b4m81$G$9!#(B</p> + >安全なサーバにする</a>までプロクシ機能は有効にしないでください。 + オープンプロキシサーバはあなた自身のネットワークにとっても、 + インターネット全体にとっても危険です。</p> </note> </summary> <seealso><module>mod_proxy</module></seealso> <section id="scheduler"> - <title>$B%m!<%I%P%i%s%5$N%9%1%8%e!<%i$N%"%k%4%j%:%`(B</title> - <p>$B8=;~E@$G$O(B 2 $B<oN`$N%m!<%I%P%i%s%5%9%1%8%e!<%i%"%k%4%j%:%`$+$iA*$Y$^$9!#(B - $B%j%/%(%9%H2s?t$K$h$k$b$N(B <transnote>Request Counting</transnote> - $B$H!"%H%i%U%#%C%/NL$K$h$k$b$N(B <transnote>Weighted Traffic Counting</transnote> - $B$,$"$j$^$9!#%P%i%s%5$N@_Dj(B <code>lbmethod</code> $BCM$G!"$I$A$i$r;H$&$+;XDj$7$^$9!#(B - $B>\:Y$O(B <directive module="mod_proxy">Proxy</directive> $B%G%#%l%/%F%#%V$r(B - $B;2>H$7$F$/$@$5$$!#(B</p> + <title>ロードバランサのスケジューラのアルゴリズム</title> + <p>現時点では 2 種類のロードバランサスケジューラアルゴリズムから選べます。 + リクエスト回数によるもの <transnote>Request Counting</transnote> + と、トラフィック量によるもの <transnote>Weighted Traffic Counting</transnote> + があります。バランサの設定 <code>lbmethod</code> 値で、どちらを使うか指定します。 + 詳細は <directive module="mod_proxy">Proxy</directive> ディレクティブを + 参照してください。</p> </section> <section id="requests"> - <title>Request Counting $B%"%k%4%j%:%`(B</title> - <p><code>lbmethod=byrequests</code> $B$GM-8z$K$J$j$^$9!#(B - $B$3$N%9%1%8%e!<%i$NGX7J$K$"$k9M$(J}$O!"MM!9$J%o!<%+!<$,$=$l$>$l!"(B - $B@_Dj$5$l$F$$$kJ,C4%j%/%(%9%H?t$r$-$A$s$H<u$1<h$l$k$h$&$K!"(B - $B%j%/%(%9%H$r07$&$H$$$&9M$(J}$G$9!#<!$N$h$&$KF0:n$7$^$9(B:</p> + <title>Request Counting アルゴリズム</title> + <p><code>lbmethod=byrequests</code> で有効になります。 + このスケジューラの背景にある考え方は、様々なワーカーがそれぞれ、 + 設定されている分担リクエスト数をきちんと受け取れるように、 + リクエストを扱うという考え方です。次のように動作します:</p> - <p><dfn>lbfactor</dfn> $B$O!"(B<em>$B$I$NDxEY%o!<%+!<$K;E;v$r?6$k$+(B</em> - $B$D$^$j(B<em>$B%o!<%+!<$N%/%*!<%?(B</em>$B$r;X$7$^$9!#$3$NCM$O(B "$BJ,C4(B" - $BNL$rI=$9@55,2=$5$l$?CM$G$9!#(B</p> + <p><dfn>lbfactor</dfn> は、<em>どの程度ワーカーに仕事を振るか</em> + つまり<em>ワーカーのクオータ</em>を指します。この値は "分担" + 量を表す正規化された値です。</p> - <p><dfn>lbstatus</dfn> $B$O!"(B<em>$B%o!<%+!<$N%/%*!<%?$rK~$?$9$?$a$K(B - $B$I$N$0$i$$5^$.$GF/$+$J$1$l$P$J$i$J$$$+(B</em>$B$r;X$7$^$9!#(B</p> + <p><dfn>lbstatus</dfn> は、<em>ワーカーのクオータを満たすために + どのぐらい急ぎで働かなければならないか</em>を指します。</p> - <p><dfn>$B%o!<%+!<(B</dfn>$B$O%m!<%I%P%i%s%5$N%a%s%P$G!"DL>o$O!"(B - $B%5%]!<%H$5$l$k%W%m%H%3%k$N$&$A$N0l$D$rDs6!$7$F$$$k%j%b!<%H%[%9%H$G$9!#(B + <p><dfn>ワーカー</dfn>はロードバランサのメンバで、通常は、 + サポートされるプロトコルのうちの一つを提供しているリモートホストです。 </p> - <p>$B$^$:8D!9$N%o!<%+!<$K%o!<%+!<%/%*!<%?$r3d$j?6$j!"$I$N%o!<%+!<$,:G$b5^$.$G(B - $BF/$+$J$1$l$P$J$i$J$$$+(B (lbstatus $B$,:GBg$N$b$N(B) $B$rD4$Y$^$9!#(B - $B<!$K;E;v$r$9$k$h$&$K$3$N%o!<%+!<$rA*Br$7!"A*Br$7$?%o!<%+!<$N(B lbstatus - $B$rA4BN$K3d$j?6$C$?$V$s$@$1:9$70z$-$^$9!#$G$9$+$i!"(Blbstatus $B$NAmNL$O(B - $B7k2LE*$KJQ2=$7$^$;$s(B(*)$B$7!"%j%/%(%9%H$O4|BTDL$j$KJ,;6$5$l$^$9!#(B</p> + <p>まず個々のワーカーにワーカークオータを割り振り、どのワーカーが最も急ぎで + 働かなければならないか (lbstatus が最大のもの) を調べます。 + 次に仕事をするようにこのワーカーを選択し、選択したワーカーの lbstatus + を全体に割り振ったぶんだけ差し引きます。ですから、lbstatus の総量は + 結果的に変化しません(*)し、リクエストは期待通りに分散されます。</p> - <p>$B$"$k%o!<%+!<$,L58z$K$J$C$F$b!"B>$N$b$N$O@5>o$K%9%1%8%e!<%k$5$lB3$1$^$9!#(B + <p>あるワーカーが無効になっても、他のものは正常にスケジュールされ続けます。 </p> <example><pre><code>for each worker in workers @@ -94,7 +94,7 @@ candidate lbstatus -= total factor</code></pre> </example> - <p>$B%P%i%s%5$r<!$N$h$&$K@_Dj$7$?>l9g(B:</p> + <p>バランサを次のように設定した場合:</p> <table style="data"> <tr><th>worker</th> @@ -114,8 +114,8 @@ candidate lbstatus -= total factor</code></pre> <td>0</td></tr> </table> - <p>$B$=$7$F(B <var>b</var> $B$,L58z$K$J$C$?>l9g!"<!$N$h$&$J%9%1%8%e!<%k$,(B - $B9T$o$l$^$9!#(B</p> + <p>そして <var>b</var> が無効になった場合、次のようなスケジュールが + 行われます。</p> <table style="data"> <tr><th>worker</th> @@ -141,9 +141,9 @@ candidate lbstatus -= total factor</code></pre> <tr><td colspan="5">(repeat)</td></tr> </table> - <p>$B$D$^$j$3$N$h$&$K%9%1%8%e!<%k$5$l$^$9(B: <var>a</var> <var>c</var> + <p>つまりこのようにスケジュールされます: <var>a</var> <var>c</var> <var>d</var> <var>a</var> <var>c</var> <var>d</var> <var>a</var> - <var>c</var> <var>d</var> ... $B<!$NE@$KCm0U$7$F$/$@$5$$(B:</p> + <var>c</var> <var>d</var> ... 次の点に注意してください:</p> <table style="data"> <tr><th>worker</th> @@ -158,7 +158,7 @@ candidate lbstatus -= total factor</code></pre> <td>25</td></tr> </table> - <p>$B$3$N5sF0$O!"<!$N@_Dj$HA4$/F1$8$K$J$j$^$9(B:</p> + <p>この挙動は、次の設定と全く同じになります:</p> <table style="data"> <tr><th>worker</th> @@ -175,8 +175,8 @@ candidate lbstatus -= total factor</code></pre> <p>This is because all values of <dfn>lbfactor</dfn> are normalized with respect to the others. For:</p> - <p><dfn>lbfactor</dfn> $B$OA4$F@55,2=$5$l$?$b$N$G!"(B - $BB>$H$NAjBPCM$@$+$i$G$9!#<!$N@_Dj$G$O(B:</p> + <p><dfn>lbfactor</dfn> は全て正規化されたもので、 + 他との相対値だからです。次の設定では:</p> <table style="data"> <tr><th>worker</th> @@ -189,10 +189,10 @@ candidate lbstatus -= total factor</code></pre> <td>1</td></tr> </table> - <p>$B%o!<%+!<(B <var>b</var> $B$O!"J?6Q$7$F!"(B<var>a</var> $B$H(B <var>c</var> - $B$N(B 4 $BG\$N?t$N%j%/%(%9%H$r<u$1;}$D$3$H$K$J$j$^$9!#(B</p> + <p>ワーカー <var>b</var> は、平均して、<var>a</var> と <var>c</var> + の 4 倍の数のリクエストを受け持つことになります。</p> - <p>$B<!$N$h$&$JHsBP>N$J@_Dj$G$O!"$3$&$J$k$HM=A[$5$l$k$G$7$g$&(B:</p> + <p>次のような非対称な設定では、こうなると予想されるでしょう:</p> <table style="data"> <tr><th>worker</th> @@ -235,23 +235,23 @@ candidate lbstatus -= total factor</code></pre> <tr><td colspan="3">(repeat)</td></tr> </table> - <p>$B%9%1%8%e!<%k$O(B 10 $B%9%1%8%e!<%k8e$K7+$jJV$5$l!"(B<var>a</var> 7 $B2s$H(B - <var>b</var> 3 $B2s$G$^$P$i$KA*$P$l$^$9!#(B</p> + <p>スケジュールは 10 スケジュール後に繰り返され、<var>a</var> 7 回と + <var>b</var> 3 回でまばらに選ばれます。</p> </section> <section id="traffic"> - <title>Weighted Traffic Counting $B%"%k%4%j%:%`(B</title> - <p><code>lbmethod=bytraffic</code> $B$GM-8z$K$J$j$^$9!#(B - $B$3$N%9%1%8%e!<%i$NGX7J$K$"$k9M$(J}$O!"(BRequest Counting - $B$HHs>o$K;w$F$$$^$9$,!"<!$N0c$$$,$"$j$^$9(B:</p> - - <p><dfn>lbfactor</dfn> $B$O(B <em>$B$I$l$@$1$N%P%$%H?t$N%H%i%U%#%C%/NL$r!"(B - $B$3$N%o!<%+!<$K=hM}$7$F$b$i$$$?$$$+(B</em> $B$rI=$7$^$9!#(B - $B$3$NCM$bF1MM$K@55,2=$5$l$?CM$G!"%o!<%+!<A4BN$N$&$A$G$N(B "$BJ,C4(B" - $BNL$rI=8=$7$F$$$^$9!#%j%/%(%9%H?t$rC1=c$K?t$($kBe$o$j$K!"(B - $B$I$l$@$1$NE>AwNL$r=hM}$7$?$+$r?t$($^$9!#(B</p> - - <p>$B<!$N$h$&$K%P%i%s%5$r@_Dj$7$?>l9g(B:</p> + <title>Weighted Traffic Counting アルゴリズム</title> + <p><code>lbmethod=bytraffic</code> で有効になります。 + このスケジューラの背景にある考え方は、Request Counting + と非常に似ていますが、次の違いがあります:</p> + + <p><dfn>lbfactor</dfn> は <em>どれだけのバイト数のトラフィック量を、 + このワーカーに処理してもらいたいか</em> を表します。 + この値も同様に正規化された値で、ワーカー全体のうちでの "分担" + 量を表現しています。リクエスト数を単純に数える代わりに、 + どれだけの転送量を処理したかを数えます。</p> + + <p>次のようにバランサを設定した場合:</p> <table style="data"> <tr><th>worker</th> @@ -264,31 +264,31 @@ candidate lbstatus -= total factor</code></pre> <td>1</td></tr> </table> - <p><var>b</var> $B$K$O(B <var>a</var> $B$d(B <var>c</var> $B$N(B 2 $BG\(B - $B=hM}$7$F$[$7$$$H$$$&$3$H$K$J$j$^$9!#(B - <var>b</var> $B$O(B 2 $BG\$N(B I/O $B$r=hM}$9$k$H$$$&0UL#$K$J$j!"(B - 2 $BG\$N%j%/%(%9%H?t$r=hM}$9$k$H$$$&$3$H$K$O$J$j$^$;$s!#(B - $B$G$9$+$i%j%/%(%9%H$H%l%9%]%s%9$N%5%$%:$,!"(B - $B=E$_IU$1$H?6$jJ,$1$N%"%k%4%j%:%`$K8z$$$F$$$^$9!#(B</p> + <p><var>b</var> には <var>a</var> や <var>c</var> の 2 倍 + 処理してほしいということになります。 + <var>b</var> は 2 倍の I/O を処理するという意味になり、 + 2 倍のリクエスト数を処理するということにはなりません。 + ですからリクエストとレスポンスのサイズが、 + 重み付けと振り分けのアルゴリズムに効いています。</p> </section> <section id="enable"> - <title>$B%P%i%s%5%^%M!<%8%c$N%5%]!<%H$rM-8z$K$9$k(B</title> - <p>$B$3$N%b%8%e!<%k$O(B <module>mod_status</module> $B$N%5!<%S%9$r(B - <em>$BI,MW$H$7$^$9(B</em>$B!#(B - $B%P%i%s%5%^%M!<%8%c$r;H$&$H!"%P%i%s%5$N%a%s%P!<$NF0E*$J99?7$,(B - $B$G$-$^$9!#%P%i%s%5%^%M!<%8%c$r;H$C$F!"%P%i%s%978?t(B (lbfactor) - $B$rJQ99$7$?$j!"%a%s%P!<$rJQ99$7$?$j!"FCDj$N%a%s%P!<$r(B - $B%*%U%i%$%s%b!<%I$K$7$?$j$G$-$^$9!#(B</p> - - <p>$B$G$9$+$i!"%m!<%I%P%i%s%54IM}5!G=$r;H$$$?$1$l$P!"(B - <module>mod_status</module> $B$H(B <module>mod_proxy_balancer</module> - $B$r%5!<%P$KAH$_9~$^$J$1$l$P$J$j$^$;$s!#(B</p> - - <p>foo.com $B%I%a%$%s$N%V%i%&%6$+$i%m!<%I%P%i%s%54IM}5!G=$r(B - $B;H$($k$h$&$K$9$k$K$O!"<!$N$h$&$J%3!<%I$r(B <code>httpd.conf</code> - $B$KDI2C$7$^$9!#(B</p> + <title>バランサマネージャのサポートを有効にする</title> + <p>このモジュールは <module>mod_status</module> のサービスを + <em>必要とします</em>。 + バランサマネージャを使うと、バランサのメンバーの動的な更新が + できます。バランサマネージャを使って、バランス係数 (lbfactor) + を変更したり、メンバーを変更したり、特定のメンバーを + オフラインモードにしたりできます。</p> + + <p>ですから、ロードバランサ管理機能を使いたければ、 + <module>mod_status</module> と <module>mod_proxy_balancer</module> + をサーバに組み込まなければなりません。</p> + + <p>foo.com ドメインのブラウザからロードバランサ管理機能を + 使えるようにするには、次のようなコードを <code>httpd.conf</code> + に追加します。</p> <example> <Location /balancer-manager><br /> SetHandler balancer-manager<br /> @@ -299,9 +299,9 @@ candidate lbstatus -= total factor</code></pre> </Location> </example> - <p>$B$3$&$9$k$H!"(B<code>http://your.server.name/balancer-manager</code> - $B$N%Z!<%87PM3$G!"%&%'%V%V%i%&%6$+$i%m!<%I%P%i%s%5%^%M!<%8%c$K(B - $B%"%/%;%9$G$-$k$h$&$K$J$j$^$9!#(B</p> + <p>こうすると、<code>http://your.server.name/balancer-manager</code> + のページ経由で、ウェブブラウザからロードバランサマネージャに + アクセスできるようになります。</p> </section> </modulesynopsis> diff --git a/docs/manual/mod/mod_proxy_connect.xml.ja b/docs/manual/mod/mod_proxy_connect.xml.ja index cdc5aa93f1..e171edff2e 100644 --- a/docs/manual/mod/mod_proxy_connect.xml.ja +++ b/docs/manual/mod/mod_proxy_connect.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,27 +23,27 @@ <modulesynopsis metafile="mod_proxy_connect.xml.meta"> <name>mod_proxy_connect</name> -<description><code>CONNECT</code> $B%j%/%(%9%H$r07$&(B -<module>mod_proxy</module> $BMQ$N3HD%(B</description> +<description><code>CONNECT</code> リクエストを扱う +<module>mod_proxy</module> 用の拡張</description> <status>Extension</status> <sourcefile>proxy_connect.c</sourcefile> <identifier>proxy_connect_module</identifier> <summary> - <p>$BK\%b%8%e!<%k$K$O(B <module>mod_proxy</module> $B$,(B<em>$BI,MW$G$9(B</em>$B!#(B - <code>CONNECT</code> HTTP $B%a%=%C%I$r%5%]!<%H$7$^$9!#(B - $B$3$N%a%=%C%I$O<g$K%W%m%-%7$K(B SSL $B%j%/%(%9%H$rDL$9(B - <transnote>SSL$B%H%s%M%j%s%0(B</transnote>$B$K;H$o$l$^$9!#(B</p> + <p>本モジュールには <module>mod_proxy</module> が<em>必要です</em>。 + <code>CONNECT</code> HTTP メソッドをサポートします。 + このメソッドは主にプロキシに SSL リクエストを通す + <transnote>SSLトンネリング</transnote>に使われます。</p> - <p><code>CONNECT</code> $B%j%/%(%9%H$r07$($k$h$&$K$9$k$K$O(B - <module>mod_proxy</module> $B$H(B <module>mod_proxy_connect</module> - $B$r%5!<%P$KAH$_9~$`I,MW$,$"$j$^$9!#(B</p> + <p><code>CONNECT</code> リクエストを扱えるようにするには + <module>mod_proxy</module> と <module>mod_proxy_connect</module> + をサーバに組み込む必要があります。</p> - <note type="warning"><title>$B7Y9p(B</title> + <note type="warning"><title>警告</title> <p><a href="mod_proxy.html#access" - >$B0BA4$J%5!<%P$K$9$k(B</a>$B$^$G%W%m%-%75!G=$OM-8z$K$7$J$$$G$/$@$5$$!#(B - $B%*!<%W%s%W%m%-%7%5!<%P$O$"$J$?<+?H$N%M%C%H%o!<%/$K$H$C$F$b!"(B - $B%$%s%?!<%M%C%HA4BN$K$H$C$F$b4m81$G$9!#(B</p> + >安全なサーバにする</a>までプロキシ機能は有効にしないでください。 + オープンプロキシサーバはあなた自身のネットワークにとっても、 + インターネット全体にとっても危険です。</p> </note> </summary> <seealso><directive module="mod_proxy">AllowCONNECT</directive></seealso> diff --git a/docs/manual/mod/mod_setenvif.xml.ja b/docs/manual/mod/mod_setenvif.xml.ja index 4c7902cc2b..af657dc0cc 100644 --- a/docs/manual/mod/mod_setenvif.xml.ja +++ b/docs/manual/mod/mod_setenvif.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:658546 (outdated) --> @@ -23,34 +23,34 @@ <modulesynopsis metafile="mod_setenvif.xml.meta"> <name>mod_setenvif</name> -<description>$B%j%/%(%9%H$NFCD'$K4p$E$$$?4D6-JQ?t$N@_Dj$r2DG=$K$9$k(B</description> +<description>リクエストの特徴に基づいた環境変数の設定を可能にする</description> <status>Base</status> <sourcefile>mod_setenvif.c</sourcefile> <identifier>setenvif_module</identifier> <summary> <p><module>mod_setenvif</module> - $B%b%8%e!<%k$O!"%j%/%(%9%H$N$"$kB&LL$,;XDj$5$l$?@55,I=8=(B - $B$K9g$&$+$I$&$+$K$h$C$F4D6-JQ?t$r@_Dj$9$k5!G=$rDs6!$7$^$9!#(B - $B$3$l$i$N4D6-JQ?t$r;HMQ$7$F!"%5!<%P$NB>$NItJ,$,$I$N$h$&$JF0:n$r$9$k$+$r(B - $B7hDj$9$k$3$H$,$G$-$^$9!#(B</p> - - <p>$B$3$N%b%8%e!<%k$,Ds6!$9$k%G%#%l%/%F%#%V$O!"(B - $B@_Dj%U%!%$%k$K8=$l$k=gHV$KE,MQ$5$l$^$9!#(B - $B$=$l$r;H$C$F!"<!$NNc$N$h$&$K$h$jJ#;($J@_Dj$r$9$k$3$H$,$G$-$^$9!#(B - $B$3$l$O!"%V%i%&%6$,(B mozilla $B$G$O$"$k$1$l$I!"(BMSIE $B$G$O$J$$$H$-$K(B - <code>netscape</code> $B$r@_Dj$7$^$9!#(B</p> + モジュールは、リクエストのある側面が指定された正規表現 + に合うかどうかによって環境変数を設定する機能を提供します。 + これらの環境変数を使用して、サーバの他の部分がどのような動作をするかを + 決定することができます。</p> + + <p>このモジュールが提供するディレクティブは、 + 設定ファイルに現れる順番に適用されます。 + それを使って、次の例のようにより複雑な設定をすることができます。 + これは、ブラウザが mozilla ではあるけれど、MSIE ではないときに + <code>netscape</code> を設定します。</p> <example> BrowserMatch ^Mozilla netscape<br /> BrowserMatch MSIE !netscape<br /> </example> </summary> -<seealso><a href="../env.html">Apache $B$N4D6-JQ?t(B</a></seealso> +<seealso><a href="../env.html">Apache の環境変数</a></seealso> <directivesynopsis> <name>BrowserMatch</name> -<description>HTTP User-Agent $B$K4p$E$$$F4D6-JQ?t$r@_Dj$9$k(B +<description>HTTP User-Agent に基づいて環境変数を設定する </description> <syntax>BrowserMatch <em>regex [!]env-variable</em>[=<em>value</em>] [[!]<em>env-variable</em>[=<em>value</em>]] ...</syntax> @@ -60,17 +60,17 @@ <override>FileInfo</override> <usage> - <p><directive>BrowserMatch</directive> $B$O(B - <directive module="mod_setenvif">SetEnvIf</directive> $B%G%#%l%/%F%#%V$N(B - $BFCNc$G!"(B<code>User-Agent</code> HTTP $B%j%/%(%9%H%X%C%@$K4p$E$$$F(B - $B4D6-JQ?t$r@_Dj$7$^$9!#0J2<$N(B 2 $B9T$N8z2L$OF1$8$K$J$j$^$9(B:</p> + <p><directive>BrowserMatch</directive> は + <directive module="mod_setenvif">SetEnvIf</directive> ディレクティブの + 特例で、<code>User-Agent</code> HTTP リクエストヘッダに基づいて + 環境変数を設定します。以下の 2 行の効果は同じになります:</p> <example> BrowserMatchNoCase Robot is_a_robot<br /> SetEnvIfNoCase User-Agent Robot is_a_robot<br /> </example> - <p>$B$=$NB>$NNc(B:</p> + <p>その他の例:</p> <example> BrowserMatch ^Mozilla forms jpeg=yes browser=netscape<br /> BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript<br /> @@ -81,37 +81,37 @@ <directivesynopsis> <name>BrowserMatchNoCase</name> -<description>HTTP User-Agent $B$K4p$E$$$FBgJ8;z>.J8;z$r6hJL$;$:$K(B -$B4D6-JQ?t$r@_Dj$9$k(B</description> +<description>HTTP User-Agent に基づいて大文字小文字を区別せずに +環境変数を設定する</description> <syntax>BrowserMatchNoCase <em>regex [!]env-variable</em>[=<em>value</em>] [[!]<em>env-variable</em>[=<em>value</em>]] ...</syntax> <contextlist><context>server config</context> <context>virtual host</context><context>directory</context> <context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>Apache 1.2 $B0J9_(B - (Apache 1.2 $B$G$O$3$N%G%#%l%/%F%#%V$O$b$&MQ$$$i$l$F$$$J$$(B - mod_browser $B%b%8%e!<%k$K$"$j$^$7$?(B)</compatibility> +<compatibility>Apache 1.2 以降 + (Apache 1.2 ではこのディレクティブはもう用いられていない + mod_browser モジュールにありました)</compatibility> <usage> - <p><directive>BrowserMatchNoCase</directive> $B%G%#%l%/%F%#%V$O(B - $B0UL#E*$K$O(B <directive - module="mod_setenvif">BrowserMatch</directive> $B%G%#%l%/%F%#%V$H(B - $BF1$8$G$9!#$?$@$7!"$3$N%G%#%l%/%F%#%V$OBgJ8;z>.J8;z$r6hJL$7$J$$(B - $B%^%C%A%s%0$r9T$J$$$^$9!#Nc$($P(B:</p> + <p><directive>BrowserMatchNoCase</directive> ディレクティブは + 意味的には <directive + module="mod_setenvif">BrowserMatch</directive> ディレクティブと + 同じです。ただし、このディレクティブは大文字小文字を区別しない + マッチングを行ないます。例えば:</p> <example> BrowserMatchNoCase mac platform=macintosh<br /> BrowserMatchNoCase win platform=windows<br /> </example> - <p><directive>BrowserMatch</directive> $B%G%#%l%/%F%#%V$H(B - <directive>BrowserMatchNoCase</directive> $B%G%#%l%/%F%#%V$O(B - <directive module="mod_setenvif">SetEnvIf</directive> $B%G%#%l%/%F%#%V$H(B + <p><directive>BrowserMatch</directive> ディレクティブと + <directive>BrowserMatchNoCase</directive> ディレクティブは + <directive module="mod_setenvif">SetEnvIf</directive> ディレクティブと <directive - module="mod_setenvif">SetEnvIfNoCase</directive> $B%G%#%l%/%F%#%V$N(B - $BFCNc$G$9!#0J2<$N(B 2 $B9T$N8z2L$OF1$8$G$9(B:</p> + module="mod_setenvif">SetEnvIfNoCase</directive> ディレクティブの + 特例です。以下の 2 行の効果は同じです:</p> <example> BrowserMatchNoCase Robot is_a_robot<br /> @@ -122,7 +122,7 @@ <directivesynopsis> <name>SetEnvIf</name> -<description>$B%j%/%(%9%H$NB0@-$K4p$E$$$F4D6-JQ?t$r@_Dj$9$k(B +<description>リクエストの属性に基づいて環境変数を設定する </description> <syntax>SetEnvIf <em>attribute regex [!]env-variable</em>[=<em>value</em>] @@ -134,60 +134,60 @@ <usage> <p><directive>SetEnvIf</directive> - $B%G%#%l%/%F%#%V$O!"%j%/%(%9%H$NB0@-$K4p$E$$$F4D6-JQ?t$rDj5A$7$^$9!#(B - $B:G=i$N0z?t$G;XDj$G$-$k(B <em>attribute</em> $B$O0J2<$N;0$D$N$I$l$+$G$9(B:</p> + ディレクティブは、リクエストの属性に基づいて環境変数を定義します。 + 最初の引数で指定できる <em>attribute</em> は以下の三つのどれかです:</p> <ol> -<li>HTTP $B%j%/%(%9%H%X%C%@%U%#!<%k%I(B ($B>\$7$$>pJs$O(B <a - href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC 2616</a> $B$r(B - $B;2>H$7$F$/$@$5$$(B)$B!#Nc$($P!"(B<code>Host</code>, +<li>HTTP リクエストヘッダフィールド (詳しい情報は <a + href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC 2616</a> を + 参照してください)。例えば、<code>Host</code>, <code>User-Agent</code>, <code>Referer</code>, - <code>Accept-Language</code> $B$G$9!#%j%/%(%9%H%X%C%@$N=89g$r8=$9$?$a$K(B - $B@55,I=8=$r;H$&$3$H$b$G$-$^$9!#(B</li> + <code>Accept-Language</code> です。リクエストヘッダの集合を現すために + 正規表現を使うこともできます。</li> -<li>$B0J2<$N%j%/%(%9%H$N0lItJ,$N$I$l$+(B: +<li>以下のリクエストの一部分のどれか: <ul> <li><code>Remote_Host</code> - - $B%j%/%(%9%H$r9T$J$C$F$$$k%/%i%$%"%s%H$N%[%9%HL>(B ($B$b$7$"$l$P(B)</li> + リクエストを行なっているクライアントのホスト名 (もしあれば)</li> <li><code>Remote_Addr</code> - - $B%j%/%(%9%H$r9T$J$C$F$$$k%/%i%$%"%s%H$N(B IP $B%"%I%l%9(B</li> + リクエストを行なっているクライアントの IP アドレス</li> <li><code>Server_Addr</code> - - $B%j%/%(%9%H$r<u$1<h$C$?%5!<%P$N(B IP $B%"%I%l%9(B - (2.0.43 $B0J9_$N$_(B)</li> + リクエストを受け取ったサーバの IP アドレス + (2.0.43 以降のみ)</li> <li><code>Request_Method</code> - - $B;HMQ$5$l$F$$$k%a%=%C%IL>(B (<code>GET</code>, <code>POST</code> - <em>$B$J$I(B</em>)</li> + 使用されているメソッド名 (<code>GET</code>, <code>POST</code> + <em>など</em>)</li> <li><code>Request_Protocol</code> - - $B%j%/%(%9%H$,9T$J$o$l$?%W%m%H%3%k$NL>A0$H%P!<%8%g%s(B - (<em>$BNc$($P(B</em>$B!"(B"HTTP/0.9", "HTTP/1.1" <em>$B$J$I!#(B</em>)</li> + リクエストが行なわれたプロトコルの名前とバージョン + (<em>例えば</em>、"HTTP/0.9", "HTTP/1.1" <em>など。</em>)</li> <li><code>Request_URI</code> - - URL $B$N%9%-!<%`$H%[%9%H$N8e$NItJ,(B</li> + URL のスキームとホストの後の部分</li> </ul> </li> -<li>$B%j%/%(%9%H$H4XO"IU$1$i$l$k4D6-JQ?t$N%j%9%H!#$3$l$K$h$j(B -<directive>SetEnvIf</directive> $B%G%#%l%/%F%#%V$,0JA0$N%^%C%A$N7k2L$r(B -$B;H$&$3$H$,$G$-$k$h$&$K$J$j$^$9!#$3$NJ}K!$N%F%9%H$G$OA0$NItJ,$K$"$k(B -<code>SetEnvIf[NoCase]</code> $B$N7k2L$N$_$r;HMQ2DG=$G$9!#!VA0!W$H$O!"(B -$B$h$j9-$$HO0O$KBP$7$FDj5A$5$l$F$$$k(B ($B%5!<%PA4BN$N$h$&$K(B) $B$+!"8=:_$N%G%#%l%/%F%#%V$N(B -$BHO0O$G$h$jA0$NItJ,$GDj5A$5$l$F$$$k$+!"$H$$$&$3$H$G$9!#(B -$B4D6-JQ?t$G$"$k2DG=@-$O!"%j%/%(%9%H$NFC@-$KBP$9$k%^%C%A$,B8:_$;$:!"(B -<em>attribute</em> $B$K@55,I=8=$,;H$o$l$J$+$C$?$H$-$K$N$_9MN8$5$l$^$9!#(B</li> +<li>リクエストと関連付けられる環境変数のリスト。これにより +<directive>SetEnvIf</directive> ディレクティブが以前のマッチの結果を +使うことができるようになります。この方法のテストでは前の部分にある +<code>SetEnvIf[NoCase]</code> の結果のみを使用可能です。「前」とは、 +より広い範囲に対して定義されている (サーバ全体のように) か、現在のディレクティブの +範囲でより前の部分で定義されているか、ということです。 +環境変数である可能性は、リクエストの特性に対するマッチが存在せず、 +<em>attribute</em> に正規表現が使われなかったときにのみ考慮されます。</li> </ol> -<p>$BFs$DL\$N0z?t(B (<em>regex</em>) $B$O(B <a -href="http://www.pcre.org/">Perl $B8_49$N@55,I=8=(B</a>$B$G$9!#(B -$B$3$l$O(B POSIX.2 $B$N(B egrep $B7A<0$N@55,I=8=$H;w$F$$$^$9!#(B<em>regex</em> $B$,(B -<em>attribute</em> $B$K%^%C%A$9$k>l9g$O!";D$j$N0z?t$,I>2A$5$l$^$9!#(B</p> +<p>二つ目の引数 (<em>regex</em>) は <a +href="http://www.pcre.org/">Perl 互換の正規表現</a>です。 +これは POSIX.2 の egrep 形式の正規表現と似ています。<em>regex</em> が +<em>attribute</em> にマッチする場合は、残りの引数が評価されます。</p> -<p>$B;D$j$N0z?t$O@_Dj$9$kJQ?t$NL>A0$G!"@_Dj$5$l$kCM$r;XDj$9$k$3$H$b$G$-$^$9!#(B -$B$3$l$O!"(B</p> +<p>残りの引数は設定する変数の名前で、設定される値を指定することもできます。 +これは、</p> <ol> <li><code><em>varname</em></code></li> @@ -197,17 +197,17 @@ href="http://www.pcre.org/">Perl $B8_49$N@55,I=8=(B</a>$B$G$9!#(B <li><code><em>varname</em>=<em>value</em></code></li> </ol> - <p>$B$N$I$l$+$N7A<0$K$J$j$^$9!#(B</p> + <p>のどれかの形式になります。</p> - <p>$B:G=i$N7A<0$G$O!"CM$O(B "1" $B$K@_Dj$5$l$^$9!#(B - $BFs$DL\$O$b$7CM$,Dj5A$5$l$F$$$l$P$=$l$r<h$j=|$-$^$9!#(B - $B;0$DL\$OJQ?t$r(B <code><em>value</em></code> $B$NM?$($i$l$?CM$K@_Dj$7$^$9!#(B - 2.0.51 $B0J9_$G$O!"(B<var>regex</var> $BFb$K(B <code>$1</code>..<code>$9</code> - $B$,B8:_$9$l$P$=$l$rG'<1$7!"(B<var>regex</var> $B$NBP1~$9$k4]3g8L$G0O$^$l$?ItJ,$G(B - $BCV49$7$^$9!#(B</p> + <p>最初の形式では、値は "1" に設定されます。 + 二つ目はもし値が定義されていればそれを取り除きます。 + 三つ目は変数を <code><em>value</em></code> の与えられた値に設定します。 + 2.0.51 以降では、<var>regex</var> 内に <code>$1</code>..<code>$9</code> + が存在すればそれを認識し、<var>regex</var> の対応する丸括弧で囲まれた部分で + 置換します。</p> <example> -<title>$BNc(B:</title> +<title>例:</title> SetEnvIf Request_URI "\.gif$" object_is_image=gif<br /> SetEnvIf Request_URI "\.jpg$" object_is_image=jpg<br /> SetEnvIf Request_URI "\.xbm$" object_is_image=xbm<br /> @@ -219,22 +219,22 @@ href="http://www.pcre.org/">Perl $B8_49$N@55,I=8=(B</a>$B$G$9!#(B SetEnvIf ^TS* ^[a-z].* HAVE_TS<br /> </example> - <p>$B=i$a$N;0$D$O%j%/%(%9%H$,2hA|$G$"$k$H$-$K4D6-JQ?t(B - <code>object_is_image</code> $B$r@_Dj$7$^$9!#;M$DL\$O(B - $B;2>H85$N%Z!<%8$,%&%'%V%5%$%H(B <code>www.mydomain.com</code> $B$K$"$k$H$-$K(B - <code>intra_site_referral</code> $B$r@_Dj$7$^$9!#(B</p> + <p>初めの三つはリクエストが画像であるときに環境変数 + <code>object_is_image</code> を設定します。四つ目は + 参照元のページがウェブサイト <code>www.mydomain.com</code> にあるときに + <code>intra_site_referral</code> を設定します。</p> - <p>$B:G8e$NNc$O!"%j%/%(%9%H$K(B "TS" $B$G;O$^$j!"CM$,=89g(B [a-z] $B$N$I$l$+$G(B - $B;O$^$k%X%C%@$,$"$k$H$-$K(B <code>HAVE_TS</code> $B$r@_Dj$7$^$9!#(B</p> + <p>最後の例は、リクエストに "TS" で始まり、値が集合 [a-z] のどれかで + 始まるヘッダがあるときに <code>HAVE_TS</code> を設定します。</p> </usage> -<seealso>$BB>$NNc$O!"(B<a href="../env.html">Apache $B$N4D6-JQ?t(B</a> +<seealso>他の例は、<a href="../env.html">Apache の環境変数</a> </seealso> </directivesynopsis> <directivesynopsis> <name>SetEnvIfNoCase</name> -<description>$B%j%/%(%9%H$NB0@-$K4p$E$$$FBgJ8;z>.J8;z$r6hJL$;$:$K4D6-JQ?t$r@_Dj$9$k(B</description> +<description>リクエストの属性に基づいて大文字小文字を区別せずに環境変数を設定する</description> <syntax>SetEnvIfNoCase <em>attribute regex [!]env-variable</em>[=<em>value</em>] [[!]<em>env-variable</em>[=<em>value</em>]] ...</syntax> @@ -242,23 +242,23 @@ href="http://www.pcre.org/">Perl $B8_49$N@55,I=8=(B</a>$B$G$9!#(B <context>virtual host</context><context>directory</context> <context>.htaccess</context></contextlist> <override>FileInfo</override> -<compatibility>Apache 1.3 $B0J9_(B</compatibility> +<compatibility>Apache 1.3 以降</compatibility> <usage> - <p><directive>SetEnvIfNoCase</directive> $B$O0UL#E*$K$O(B - <directive module="mod_setenvif">SetEnvIf</directive> $B%G%#%l%/%F%#%V$H(B - $BF1$8$G$9!#0c$$$O!"@55,I=8=$N%^%C%A%s%0$,BgJ8;z>.J8;z$r6hJL$7$J$$$G(B - $B9T$J$o$l$k$3$H$G$9!#Nc$($P(B:</p> + <p><directive>SetEnvIfNoCase</directive> は意味的には + <directive module="mod_setenvif">SetEnvIf</directive> ディレクティブと + 同じです。違いは、正規表現のマッチングが大文字小文字を区別しないで + 行なわれることです。例えば:</p> <example> SetEnvIfNoCase Host Apache\.Org site=apache </example> - <p>$B$3$l$O(B HTTP $B%j%/%(%9%H%X%C%@$K%U%#!<%k%I(B <code>Host:</code> $B$,(B - $B$"$j!"$=$NCM$,(B <code>Apache.Org</code> $B$d(B <code>apache.org</code>$B!"(B - $B$=$NB>$NBgJ8;z>.J8;z$NAH$_9g$o$;$G$"$C$?$H$-$K(B <code>site</code> - $B4D6-JQ?t$r(B "<code>apache</code>" $B$K@_Dj$7$^$9!#(B</p> + <p>これは HTTP リクエストヘッダにフィールド <code>Host:</code> が + あり、その値が <code>Apache.Org</code> や <code>apache.org</code>、 + その他の大文字小文字の組み合わせであったときに <code>site</code> + 環境変数を "<code>apache</code>" に設定します。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_so.xml.ja b/docs/manual/mod/mod_so.xml.ja index 24b8e9c627..7df17bde0b 100644 --- a/docs/manual/mod/mod_so.xml.ja +++ b/docs/manual/mod/mod_so.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,107 +23,107 @@ <modulesynopsis metafile="mod_so.xml.meta"> <name>mod_so</name> -<description>$B5/F0;~$d:F5/F0;~$K<B9T%3!<%I$H%b%8%e!<%k$r%5!<%P$K%m!<%I$9$k(B +<description>起動時や再起動時に実行コードとモジュールをサーバにロードする </description> <status>Extension</status> <sourcefile>mod_so.c</sourcefile> <identifier>so_module</identifier> -<compatibility>$B$3$N%b%8%e!<%k$O(B Window $B$G$O(B ($B>o$K4^$^$l$F$$$k(B) Base -$B%b%8%e!<%k$G$9(B</compatibility> +<compatibility>このモジュールは Window では (常に含まれている) Base +モジュールです</compatibility> <summary> - <p>$B$$$/$D$+$N%*%Z%l!<%F%#%s%0%7%9%F%`$G$O!"%5!<%P$N:F%3%s%Q%$%k$r$9$kBe$o$j$K!"(B - $B$3$N%b%8%e!<%k$r;HMQ$7$F(B - <a href="../dso.html">$BF0E*6&M-%*%V%8%'%/%H(B</a> - (DSO) $B5!9=$K$h$j!"<B9T;~$K(B Apache $B$K%b%8%e!<%k$rFI$_9~$^$;$k$3$H$,(B - $B$G$-$^$9!#(B</p> - - <p>Unix $B>e$G$O!"FI$_9~$^$l$k%3!<%I$ODL>o$O6&M-%*%V%8%'%/%H%U%!%$%k(B - ($BIaDL(B <code>.so</code> $B$H$$$&3HD%;R$,IU$$$F$$$^$9(B) $B$+$i$G$9!#(B - Windows $B>e$G$O$3$N%b%8%e!<%k$N3HD%;R$O(B <code>.so</code> $B$+(B <code>.dll</code> - $B$G$9!#(B</p> - - <note type="warning"><title>$B7Y9p(B</title> - <p>Apache 1.3 $B$N%b%8%e!<%k$rD>@\(B Apache 2.0 $B$G;H$&$3$H$O$G$-$^$;$s(B - $B!=(B $B%b%8%e!<%k$O(B Apache 2.0 $BMQ$KF0E*$K%m!<%I$5$l$k$+!"(B - $BD>@\AH$_9~$^$l$k$?$a$K=$@5$5$l$J$1$l$P$J$j$^$;$s!#(B</p> + <p>いくつかのオペレーティングシステムでは、サーバの再コンパイルをする代わりに、 + このモジュールを使用して + <a href="../dso.html">動的共有オブジェクト</a> + (DSO) 機構により、実行時に Apache にモジュールを読み込ませることが + できます。</p> + + <p>Unix 上では、読み込まれるコードは通常は共有オブジェクトファイル + (普通 <code>.so</code> という拡張子が付いています) からです。 + Windows 上ではこのモジュールの拡張子は <code>.so</code> か <code>.dll</code> + です。</p> + + <note type="warning"><title>警告</title> + <p>Apache 1.3 のモジュールを直接 Apache 2.0 で使うことはできません + ― モジュールは Apache 2.0 用に動的にロードされるか、 + 直接組み込まれるために修正されなければなりません。</p> </note> </summary> -<section><title>Windows $BMQ$N%m!<%I2DG=$J%b%8%e!<%k$r:n@.$9$k(B</title> +<section><title>Windows 用のロード可能なモジュールを作成する</title> - <note><title>$BCm(B</title> - <p>Apache 1.3.15 $B$H(B 2.0 $B$H$G(B Windows $B$N%b%8%e!<%kL>$N7A<0$OJQ99$5$l$^$7$?(B - $B!=(B $B%b%8%e!<%k$O(B mod_foo.so $B$H$$$&L>A0$K$J$j$^$7$?!#(B</p> + <note><title>注</title> + <p>Apache 1.3.15 と 2.0 とで Windows のモジュール名の形式は変更されました + ― モジュールは mod_foo.so という名前になりました。</p> - <p>$B$^$@(B mod_so $B$G(B ApacheModuleFoo.dll $B$H$$$&L>A0$N%b%8%e!<%k$b(B - $B%m!<%I$5$l$^$9$,!"?7$7$$L>A0$NIU$1J}$r;H$&J}$,9%$^$l$^$9!#%b%8%e!<%k$r(B - 2.0 $BMQ$K0\?"$7$F$$$k$N$G$"$l$P!"(B2.0 $B$N=,47$K9g$&$h$&$KL>A0$r(B - $B=$@5$7$F$/$@$5$$!#(B</p></note> + <p>まだ mod_so で ApacheModuleFoo.dll という名前のモジュールも + ロードされますが、新しい名前の付け方を使う方が好まれます。モジュールを + 2.0 用に移植しているのであれば、2.0 の習慣に合うように名前を + 修正してください。</p></note> - <p>Apache $B$N%b%8%e!<%k(B API $B$O(B UNIX $B$H(B Windows $B4V$G$OJQ99$5$l$F$$$^$;$s!#(B - $BB?$/$N%b%8%e!<%k$OA4$/JQ99$J$7!"$b$7$/$O4JC1$JJQ99$K$h$j(B Windows - $B$G<B9T$G$-$k$h$&$K$J$j$^$9!#$?$@$7!"$=$l0J30$N(B Windows $B$K$OL5$$(B Unix - $B%"!<%-%F%/%A%c!<$N5!G=$K0MB8$7$?%b%8%e!<%k$OF0:n$7$^$;$s!#(B</p> + <p>Apache のモジュール API は UNIX と Windows 間では変更されていません。 + 多くのモジュールは全く変更なし、もしくは簡単な変更により Windows + で実行できるようになります。ただし、それ以外の Windows には無い Unix + アーキテクチャーの機能に依存したモジュールは動作しません。</p> - <p>$B%b%8%e!<%k$,<B:]$KF0:n$9$k$H$-$O!"(B - $BFs$D$NJ}K!$N$I$A$i$+$G%5!<%P$KDI2C$9$k$3$H$,$G$-$^$9!#$^$:!"(BUnix - $B$HF1MM$K%5!<%P$K%3%s%Q%$%k$7$FAH$_9~$`$3$H$,$G$-$^$9!#(BWindows - $BMQ$N(B Apache $B$O(B Unix $BMQ$N(B Apache $B$K$"$k(B <code>Configure</code> - $B%W%m%0%i%`$,$"$j$^$;$s$N$G!"%b%8%e!<%k$N%=!<%9%U%!%$%k$r(B - ApacheCore $B%W%m%8%'%/%H%U%!%$%k$KDI2C$7!"%7%s%\%k$r(B - <code>os\win32\modules.c</code> $B%U%!%$%k$KDI2C$9$kI,MW$,$"$j$^$9!#(B</p> + <p>モジュールが実際に動作するときは、 + 二つの方法のどちらかでサーバに追加することができます。まず、Unix + と同様にサーバにコンパイルして組み込むことができます。Windows + 用の Apache は Unix 用の Apache にある <code>Configure</code> + プログラムがありませんので、モジュールのソースファイルを + ApacheCore プロジェクトファイルに追加し、シンボルを + <code>os\win32\modules.c</code> ファイルに追加する必要があります。</p> - <p>$BFs$DL\$O%b%8%e!<%k$r(B DLL $B$H$7$F%3%s%Q%$%k$9$kJ}K!$G$9!#(B - DLL $B$O6&M-%i%$%V%i%j$G!"<B9T;~$K(B + <p>二つ目はモジュールを DLL としてコンパイルする方法です。 + DLL は共有ライブラリで、実行時に <code><directive>LoadModule</directive></code> - $B%G%#%l%/%F%#%V$K$h$j%5!<%P$KFI$_9~$`$3$H$,$G$-$^$9!#$3$l$i$N%b%8%e!<%k(B - DLL $B$O$=$N$^$^G[I[$9$k$3$H$,2DG=$G!"%5!<%P$r:F%3%s%Q%$%k$9$k$3$H$J$/!"(BWindows - $BMQ$N(B Apache $B$N$9$Y$F$N%$%s%9%H!<%k$G<B9T$9$k$3$H$,$G$-$^$9!#(B</p> - - <p>$B%b%8%e!<%k(B DLL $B$r:n@.$9$k$?$a$K$O!"(B - $B%b%8%e!<%k$N:n@.$K>.$5$JJQ99$r9T$J$&I,MW$,$"$j$^$9!#(B - $B$D$^$j!"%b%8%e!<%k$N%l%3!<%I(B ($B$3$l$O8e$G:n@.$5$l$^$9!#(B - $B0J2<$r;2>H$7$F$/$@$5$$(B) $B$,(B DLL $B$+$i%(%/%9%]!<%H$5$l$J$1$l$P$J$j$^$;$s!#(B - $B$3$l$r9T$J$&$K$O!"(B<code>AP_MODULE_DECLARE_DATA</code> (Apache - $B$N%X%C%@%U%!%$%k$GDj5A$5$l$F$$$^$9(B) $B$r%b%8%e!<%k$N%b%8%e!<%k%l%3!<%I(B - $BDj5A$NItJ,$KDI2C$7$F$/$@$5$$!#$?$H$($P!"%b%8%e!<%k$K(B</p> + ディレクティブによりサーバに読み込むことができます。これらのモジュール + DLL はそのまま配布することが可能で、サーバを再コンパイルすることなく、Windows + 用の Apache のすべてのインストールで実行することができます。</p> + + <p>モジュール DLL を作成するためには、 + モジュールの作成に小さな変更を行なう必要があります。 + つまり、モジュールのレコード (これは後で作成されます。 + 以下を参照してください) が DLL からエクスポートされなければなりません。 + これを行なうには、<code>AP_MODULE_DECLARE_DATA</code> (Apache + のヘッダファイルで定義されています) をモジュールのモジュールレコード + 定義の部分に追加してください。たとえば、モジュールに</p> <example> module foo_module; </example> - <p>$B$,$"$k$H$9$k$H!"$=$l$r<!$N$b$N$GCV$-49$($F$/$@$5$$!#(B</p> + <p>があるとすると、それを次のもので置き換えてください。</p> <example> module AP_MODULE_DECLARE_DATA foo_module; </example> - <p>Unix $B>e$G$b$3$N%b%8%e!<%k$r(B - $BJQ99L5$7$G;H$$B3$1$i$l$k$h$&$K!"$3$N%^%/%m$O(B Windows - $B>e$G$N$_8zNO$r;}$A$^$9!#(B<code>.DEF</code> - $B%U%!%$%k$NJ}$rNI$/CN$C$F$$$k$H$$$&>l9g$O!"(B - $BBe$o$j$K$=$l$r;H$C$F%b%8%e!<%k%l%3!<%I$r(B - $B%(%/%9%]!<%H$9$k$3$H$b$G$-$^$9!#(B</p> - <p>$B$5$"!"$"$J$?$N%b%8%e!<%k$N(B DLL $B$r:n@.$7$^$7$g$&!#$3$l$r!"(B - libhttpd.lib $B6&M-%i%$%V%i%j$,%3%s%Q%$%k$5$l$?$H$-$K:n@.$5$l$?(B - ibhttpd.lib $B%(%/%9%]!<%H%i%$%V%i%j$H%j%s%/$7$F$/$@$5$$!#$3$N;~$K!"(B - Apache $B$N%X%C%@%U%!%$%k$,@5$7$$0LCV$K$"$k$h$&$K!"(B - $B%3%s%Q%$%i$N@_Dj$rJQ$($kI,MW$,$"$k$+$b$7$l$^$;$s!#(B - $B$3$N%i%$%V%i%j$O%5!<%P%k!<%H$N(B modules $B%G%#%l%/%H%j$K$"$j$^$9!#(B - $B%S%k%I4D6-$,@5$7$/@_Dj$5$l$k$h$&$K!"4{B8$N%b%8%e!<%kMQ$N(B .dsp $B$r(B - $B<h$C$F$/$k$N$,0lHVNI$$$G$7$g$&!#$b$7$/$O!"$"$J$?$N(B .dsp $B$H(B - $B%3%s%Q%$%i$H%j%s%/$N%*%W%7%g%s$rHf3S$9$k!"$H$$$&$b$N$G$bNI$$$G$9!#(B</p> - - <p>$B$3$l$G(B DLL $BHG$N%b%8%e!<%k$,:n@.$5$l$F$$$k$O$:$G$9!#(B - $B%5!<%P%k!<%H$N(B <code>modules</code> - $B%G%#%l%/%H%j$K%b%8%e!<%k$rCV$$$F!"(B + <p>Unix 上でもこのモジュールを + 変更無しで使い続けられるように、このマクロは Windows + 上でのみ効力を持ちます。<code>.DEF</code> + ファイルの方を良く知っているという場合は、 + 代わりにそれを使ってモジュールレコードを + エクスポートすることもできます。</p> + <p>さあ、あなたのモジュールの DLL を作成しましょう。これを、 + libhttpd.lib 共有ライブラリがコンパイルされたときに作成された + ibhttpd.lib エクスポートライブラリとリンクしてください。この時に、 + Apache のヘッダファイルが正しい位置にあるように、 + コンパイラの設定を変える必要があるかもしれません。 + このライブラリはサーバルートの modules ディレクトリにあります。 + ビルド環境が正しく設定されるように、既存のモジュール用の .dsp を + 取ってくるのが一番良いでしょう。もしくは、あなたの .dsp と + コンパイラとリンクのオプションを比較する、というものでも良いです。</p> + + <p>これで DLL 版のモジュールが作成されているはずです。 + サーバルートの <code>modules</code> + ディレクトリにモジュールを置いて、 <code><directive>LoadModule</directive></code> - $B%G%#%l%/%F%#%V$r;H$C$FFI$_9~$s$G$/$@$5$$!#(B</p> + ディレクティブを使って読み込んでください。</p> </section> <directivesynopsis> <name>LoadFile</name> -<description>$B;XDj$5$l$?%*%V%8%'%/%H%U%!%$%k$d%i%$%V%i%j$r%j%s%/$9$k(B</description> +<description>指定されたオブジェクトファイルやライブラリをリンクする</description> <syntax>LoadFile <em>filename</em> [<em>filename</em>] ...</syntax> <contextlist> <context>server config</context> @@ -131,13 +131,13 @@ <usage> - <p>LoadFile $B%G%#%l%/%F%#%V$O!"%5!<%P$,5/F0$5$l$?$H$-$d:F5/F0$5$l$?$H$-$K!"(B - $B;XDj$5$l$?%*%V%8%'%/%H%U%!%$%k$d%i%$%V%i%j$r%j%s%/$7$^$9!#(B - $B$3$l$O%b%8%e!<%k$,F0:n$9$k$?$a$KI,MW$K$J$k$+$b$7$l$J$$DI2C$N(B - $B%3!<%I$rFI$_9~$`$?$a$K;HMQ$5$l$^$9!#(B<em>Filename</em> $B$O@dBP%Q%9$+!"(B<a - href="core.html#serverroot">ServerRoot</a> $B$+$i$NAjBP%Q%9$G$9!#(B</p> + <p>LoadFile ディレクティブは、サーバが起動されたときや再起動されたときに、 + 指定されたオブジェクトファイルやライブラリをリンクします。 + これはモジュールが動作するために必要になるかもしれない追加の + コードを読み込むために使用されます。<em>Filename</em> は絶対パスか、<a + href="core.html#serverroot">ServerRoot</a> からの相対パスです。</p> - <p>$BNc(B:</p> + <p>例:</p> <example>LoadFile libexec/libxmlparse.so</example> @@ -146,8 +146,8 @@ <directivesynopsis> <name>LoadModule</name> -<description>$B%*%V%8%'%/%H%U%!%$%k$d%i%$%V%i%j$r%j%s%/$7!";HMQ%b%8%e!<%k$N(B -$B%j%9%H$KDI2C$9$k(B</description> +<description>オブジェクトファイルやライブラリをリンクし、使用モジュールの +リストに追加する</description> <syntax>LoadModule <em>module filename</em></syntax> <contextlist> <context>server config</context> @@ -155,20 +155,20 @@ <usage> - <p>LoadModule $B%G%#%l%/%F%#%V$O(B <em>filename</em> - $B$H$$$&%*%V%8%'%/%H%U%!%$%k$*$h$S%i%$%V%i%j$r%j%s%/$7!"(B<em>module</em> - $B$H$$$&L>A0$N%b%8%e!<%k$N9=B$$r%"%/%F%#%V$J%b%8%e!<%k$N%j%9%H$KDI2C$7$^$9!#(B - <em>Module</em> $B$O%U%!%$%kCf$N(B <code>module</code> - $B7?$N30ItJQ?t$NL>A0$G!"%b%8%e!<%k$N%I%-%e%a%s%H$K(B + <p>LoadModule ディレクティブは <em>filename</em> + というオブジェクトファイルおよびライブラリをリンクし、<em>module</em> + という名前のモジュールの構造をアクティブなモジュールのリストに追加します。 + <em>Module</em> はファイル中の <code>module</code> + 型の外部変数の名前で、モジュールのドキュメントに <a href="module-dict.html#moduleidentifier" - >$B%b%8%e!<%k<1JL;R(B</a>$B$H$7$F=q$+$l$F$$$k$b$N$G$9!#Nc(B :</p> + >モジュール識別子</a>として書かれているものです。例 :</p> <example> LoadModule status_module modules/mod_status.so </example> - <p>$B$3$l$O(B ServerRoot $B$N(B modules $B%5%V%G%#%l%/%H%j$+$i;XDj$5$l$?L>A0$N(B - $B%b%8%e!<%k$r%m!<%I$7$^$9!#(B</p> + <p>これは ServerRoot の modules サブディレクトリから指定された名前の + モジュールをロードします。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_speling.xml.ja b/docs/manual/mod/mod_speling.xml.ja index 4ee0d5eae9..71ff8d6a25 100644 --- a/docs/manual/mod/mod_speling.xml.ja +++ b/docs/manual/mod/mod_speling.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 395228:420990 (outdated) --> @@ -23,9 +23,9 @@ <modulesynopsis metafile="mod_speling.xml.meta"> <name>mod_speling</name> -<description>$B%f!<%6$,F~NO$7$?$G$"$m$&4V0c$C$?(B URL $B$r!"(B -$BBgJ8;z>.J8;z$N6hJL$rL5;k$9$k$3$H$H0l$D0J2<$NDV$j4V0c$$$r5vMF$9$k$3$H$G(B -$B=$@5$r;n$_$k(B</description> +<description>ユーザが入力したであろう間違った URL を、 +大文字小文字の区別を無視することと一つ以下の綴り間違いを許容することで +修正を試みる</description> <status>Extension</status> <sourcefile>mod_speling.c</sourcefile> <identifier>speling_module</identifier> @@ -33,38 +33,38 @@ <summary> - <p>$B%j%/%(%9%H$NDV$j$,4V0c$C$F$$$?$j!"(B - $BBgJ8;z>.J8;z$,0c$C$F$$$?$j$9$k$?$a$K!"(BApache $B$N%3%"%5!<%P$,(B - $B%I%-%e%a%s%H$X$N%j%/%(%9%H$X$N1~Ez$r@5$7$/Ds6!$G$-$J$$$3$H$,$"$j$^$9!#(B - $B$3$N%b%8%e!<%k$O!"B>$N$9$Y$F$N%b%8%e!<%k$,$"$-$i$a$?8e$G$"$C$?$H$7$F$b!"(B - $B%j%/%(%9%H$K9g$&%I%-%e%a%s%H$r8+$D$1$h$&$H$9$k$3$H$K$h$j$3$NLdBj$N(B - $B2r7h$r;n$_$^$9!#$3$N%b%8%e!<%k$O%j%/%(%9%H$5$l$?%G%#%l%/%H%j$K$"$k(B - $B$=$l$>$l$N%I%-%e%a%s%H$NL>A0$H!"%j%/%(%9%H$5$l$?%I%-%e%a%s%H$NL>A0$H$r(B - <strong>$BBgJ8;z>.J8;z$N6hJL$rL5;k$7(B</strong>$B!"(B<strong>$B0lJ8;z$^$G$N(B - $BDV$j$N4V0c$$(B</strong> ($BJ8;z$NA^F~(B/$B>JN,(B/$BNY9g$&J8;z$NCV49!"4V0c$C$?J8;z(B) - $B$r5v2D$7$FHf3S$9$k$3$H$K$h$j!"L\E*$rC#@.$7$h$&$H$7$^$9!#(B - $B$3$NJ}K!$G%j%/%(%9%H$K9g$&%I%-%e%a%s%H$N0lMw$,:n@.$5$l$^$9!#(B</p> + <p>リクエストの綴りが間違っていたり、 + 大文字小文字が違っていたりするために、Apache のコアサーバが + ドキュメントへのリクエストへの応答を正しく提供できないことがあります。 + このモジュールは、他のすべてのモジュールがあきらめた後であったとしても、 + リクエストに合うドキュメントを見つけようとすることによりこの問題の + 解決を試みます。このモジュールはリクエストされたディレクトリにある + それぞれのドキュメントの名前と、リクエストされたドキュメントの名前とを + <strong>大文字小文字の区別を無視し</strong>、<strong>一文字までの + 綴りの間違い</strong> (文字の挿入/省略/隣合う文字の置換、間違った文字) + を許可して比較することにより、目的を達成しようとします。 + この方法でリクエストに合うドキュメントの一覧が作成されます。</p> - <p>$B%G%#%l%/%H%j$r%9%-%c%s$7$?8e$K!"(B</p> + <p>ディレクトリをスキャンした後に、</p> <ul> - <li>$BE,@Z$J%I%-%e%a%s%H$,8+$D$+$i$J$+$C$?>l9g!"(B - Apache $B$O$$$D$b$HF1$8$h$&$K=hM}$r$7!"(B - $B!V%I%-%e%a%s%H$,8+$D$+$i$J$$!W$H$$$&%(%i!<$rJV$7$^$9!#(B</li> + <li>適切なドキュメントが見つからなかった場合、 + Apache はいつもと同じように処理をし、 + 「ドキュメントが見つからない」というエラーを返します。</li> - <li>$B%j%/%(%9%H$K!V$[$H$s$I!W9g$&%I%-%e%a%s%H$,0l$D$@$18+$D$+$C$?>l9g!"(B - $B$=$l$,%j%@%$%l%/%H1~Ez$H$7$FJV$5$l$^$9!#(B</li> + <li>リクエストに「ほとんど」合うドキュメントが一つだけ見つかった場合、 + それがリダイレクト応答として返されます。</li> - <li>$B$h$/;w$?%I%-%e%a%s%H$,J#?t8+$D$+$C$?>l9g!"(B - $B$=$N%j%9%H$,%/%i%$%"%s%H$KJV$5$l!"(B - $B%/%i%$%"%s%H$,@5$7$$8uJd$rA*Br$G$-$k$h$&$K$7$^$9!#(B</li> + <li>よく似たドキュメントが複数見つかった場合、 + そのリストがクライアントに返され、 + クライアントが正しい候補を選択できるようにします。</li> </ul> </summary> <directivesynopsis> <name>CheckSpelling</name> -<description>spelling $B%b%8%e!<%k$r;HMQ$9$k$h$&$K$9$k(B</description> +<description>spelling モジュールを使用するようにする</description> <syntax>CheckSpelling on|off</syntax> <default>CheckSpelling Off</default> <contextlist> @@ -74,43 +74,43 @@ <context>.htaccess</context> </contextlist> <override>Options</override> -<compatibility>CheckSpelling $B$O(B Apache 1.1 $B$G$OJLG[I[$N%b%8%e!<%k$G!"(B -$BBgJ8;z>.J8;z$N4V0c$$$N$_$N5!G=$G$7$?!#(BApache 1.3 $B$G(B Apache $B$NG[I[$K(B -$B4^$^$l$k$h$&$K$J$j$^$7$?!#(BApache 1.3.2 $B$h$jA0$G$O(B <code>CheckSpelling</code> -$B%G%#%l%/%F%#%V$O!V%5!<%P!W$H!V%P!<%A%c%k%[%9%H!W%3%s%F%-%9%H$G$N$_(B -$B;HMQ2DG=$G$7$?(B</compatibility> +<compatibility>CheckSpelling は Apache 1.1 では別配布のモジュールで、 +大文字小文字の間違いのみの機能でした。Apache 1.3 で Apache の配布に +含まれるようになりました。Apache 1.3.2 より前では <code>CheckSpelling</code> +ディレクティブは「サーバ」と「バーチャルホスト」コンテキストでのみ +使用可能でした</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$ODV$jMQ$N%b%8%e!<%k$r;HMQ$9$k$+$I$&$+$r(B - $B7h$a$^$9!#;HMQ;~$K$O!"0J2<$N$3$H$r3P$($F$*$$$F$/$@$5$$(B</p> + <p>このディレクティブは綴り用のモジュールを使用するかどうかを + 決めます。使用時には、以下のことを覚えておいてください</p> <ul> - <li>$BF1;~$K$?$/$5$s$NDV$j$ND{@5$r9T$J$o$J$1$l$P$J$i$J$$$H$-$O!"(B - $B$=$N$?$a$K9T$J$o$l$k%G%#%l%/%H%j$N%9%-%c%s$,%5!<%P$N@-G=$K(B - $B1F6A$rM?$($^$9!#(B</li> + <li>同時にたくさんの綴りの訂正を行なわなければならないときは、 + そのために行なわれるディレクトリのスキャンがサーバの性能に + 影響を与えます。</li> - <li>$B%I%-%e%a%s%H$NCf$KDV$j$N!VD{@5!W$K$h$j(B - $B0U?^$;$:9g$C$F$7$^$&$h$&$J=EMW$J%U%!%$%k$,$J$$$h$&$K$7$F$/$@$5$$!#(B + <li>ドキュメントの中に綴りの「訂正」により + 意図せず合ってしまうような重要なファイルがないようにしてください。 </li> - <li>$B%b%8%e!<%k$O%f!<%6L>$NDV$j$N4V0c$$(B - (<code>http://my.host/~apahce/</code> $B$N$h$&$K(B) - $B$rD{@5$9$k$3$H$O$G$-$^$;$s!#(B - $BD{@5$G$-$k$N$O%U%!%$%kL>$H%G%#%l%/%H%jL>$@$1$G$9!#(B</li> + <li>モジュールはユーザ名の綴りの間違い + (<code>http://my.host/~apahce/</code> のように) + を訂正することはできません。 + 訂正できるのはファイル名とディレクトリ名だけです。</li> - <li>$BDV$j$ND{@5$OB8:_$9$k%U%!%$%k$K87L)$KE,MQ$5$l$^$9$N$G!"(B + <li>綴りの訂正は存在するファイルに厳密に適用されますので、 <code><Location /status></code> - $B$O%M%4%7%(!<%7%g%s$N7k2L$N%U%!%$%k(B "<code>/stats.html</code>" - $B$H$7$F4V0c$C$F07$o$l$k$+$b$7$l$^$;$s!#(B</li> + はネゴシエーションの結果のファイル "<code>/stats.html</code>" + として間違って扱われるかもしれません。</li> </ul> <!-- XXX: is that really true?! -nd --> - <p><a href="mod_dav.html">DAV</a> $B$,M-8z$J%G%#%l%/%H%j$G$O(B - <module>mod_speling</module> $B$OM-8z$K$7$J$$$G$/$@$5$$!#(B - $B?7$7$/:n@.$7$?%j%=!<%9L>$r4{$KB8:_$9$k%U%!%$%kL>$K!V=$@5!W$7$h$&$H$9$k!"(B - $BNc$($P!"?75,%I%-%e%a%s%H(B <code>doc43.html</code> $B$,4{$KB8:_$9$k(B - <code>doc34.html</code> $B$K%j%@%$%l%/%H$5$l$F!"(B - $B4|BT$H$O0c$&5sF0$K$J$k$+$i$G$9!#(B</p> + <p><a href="mod_dav.html">DAV</a> が有効なディレクトリでは + <module>mod_speling</module> は有効にしないでください。 + 新しく作成したリソース名を既に存在するファイル名に「修正」しようとする、 + 例えば、新規ドキュメント <code>doc43.html</code> が既に存在する + <code>doc34.html</code> にリダイレクトされて、 + 期待とは違う挙動になるからです。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_status.xml.ja b/docs/manual/mod/mod_status.xml.ja index 39abac036e..a197b614a0 100644 --- a/docs/manual/mod/mod_status.xml.ja +++ b/docs/manual/mod/mod_status.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <modulesynopsis metafile="mod_status.xml.meta"> @@ -22,54 +22,54 @@ --> <name>mod_status</name> -<description>$B%5!<%P$N3hF0>u67$H@-G=$K4X$9$k>pJs$rDs6!$9$k(B</description> +<description>サーバの活動状況と性能に関する情報を提供する</description> <status>Base</status> <sourcefile>mod_status.c</sourcefile> <identifier>status_module</identifier> <summary> - <p>$B$3$N(B Status $B%b%8%e!<%k$K$h$j%5!<%P4IM}<T$O%5!<%P$,$I$N$/$i$$(B - $B$N@-G=$GF0:n$7$F$$$k$+$rCN$k$3$H$,$G$-$k$h$&$K$J$j$^$9!#(B - $B8=;~E@$G$N%5!<%P$NE}7W>pJs$rFI$_$d$9$$7A<0$G8=$7$?(B HTML $B%Z!<%8$,(B - $BI=<($5$l$^$9!#I,MW$G$"$l$P!"$3$N%Z!<%8$O<+F0E*$K%j%U%l%C%7%e$5$;$k(B - $B$3$H$b$G$-$^$9(B ($B8_49@-$N$"$k%V%i%&%6$r;HMQ$7$F$$$k>l9g(B)$B!#(B - $BJL$K!"8=;~E@$G$N%5!<%P$N>uBV$rC1=c$J5!3#FI$_<h$j2DG=$J%j%9%H$G(B - $B8=$9%Z!<%8$b$"$j$^$9!#(B</p> + <p>この Status モジュールによりサーバ管理者はサーバがどのくらい + の性能で動作しているかを知ることができるようになります。 + 現時点でのサーバの統計情報を読みやすい形式で現した HTML ページが + 表示されます。必要であれば、このページは自動的にリフレッシュさせる + こともできます (互換性のあるブラウザを使用している場合)。 + 別に、現時点でのサーバの状態を単純な機械読み取り可能なリストで + 現すページもあります。</p> - <p>$BI=<($5$l$k>pJs$O(B:</p> + <p>表示される情報は:</p> <ul> - <li>$B%j%/%(%9%H$r07$C$F$$$k%o!<%+!<$N?t(B</li> + <li>リクエストを扱っているワーカーの数</li> - <li>$B%"%$%I%k(B ($BLuCm(B: $B%j%/%(%9%H$r07$C$F$$$J$$(B) $B%o!<%+!<$N?t(B</li> + <li>アイドル (訳注: リクエストを扱っていない) ワーカーの数</li> - <li>$B3F%o!<%+!<$N>uBV!"%o!<%+!<$,07$C$?%j%/%(%9%H$N?t!"(B - $B%o!<%+!<$,Aw$C$?Am%P%$%H?t(B (*)</li> + <li>各ワーカーの状態、ワーカーが扱ったリクエストの数、 + ワーカーが送った総バイト数 (*)</li> - <li>$BAm%"%/%;%9?t$HAm%P%$%H?t(B (*)</li> + <li>総アクセス数と総バイト数 (*)</li> - <li>$B%5!<%P$,5/F0$b$7$/$O:F5/F0$5$l$?;~9o$HF0:n$7$F$$$k;~4V(B</li> + <li>サーバが起動もしくは再起動された時刻と動作している時間</li> - <li>$BJ?6Q$N(B 1 $BIC$"$?$j$N%j%/%(%9%H?t!"(B1 $BIC$"$?$j$NAw$i$l$?%P%$%H?t!"(B - $B%j%/%(%9%H$"$?$j$N%P%$%H?t(B (*)</li> + <li>平均の 1 秒あたりのリクエスト数、1 秒あたりの送られたバイト数、 + リクエストあたりのバイト数 (*)</li> - <li>$B3F%o!<%+!<$H(B Apache $BA4BN$G;HMQ$5$l$F$$$k(B CPU $B$N3d9g(B (*)</li> + <li>各ワーカーと Apache 全体で使用されている CPU の割合 (*)</li> - <li>$B8=;~E@$N%[%9%H$H=hM}$5$l$F$$$k%j%/%(%9%H(B (*)</li> + <li>現時点のホストと処理されているリクエスト (*)</li> </ul> - <p>"(*)" $B$NIU$$$F$$$k>pJs$rI=<($9$k$?$a$K$O%3%s%Q%$%k;~$N%*%W%7%g%s(B - $B$r;HMQ$9$kI,MW$,$"$j$^$9!#$3$l$i$NE}7W>pJs$rF@$k$?$a$KI,MW$J(B - $B%3!<%I$OI8=`$N(B Apache $B$K$O4^$^$l$F$$$^$;$s!#(B</p> + <p>"(*)" の付いている情報を表示するためにはコンパイル時のオプション + を使用する必要があります。これらの統計情報を得るために必要な + コードは標準の Apache には含まれていません。</p> </summary> <section id="enable"> - <title>Status $B$r;HMQ2DG=$K$9$k(B</title> + <title>Status を使用可能にする</title> - <p>foo.com $B%I%a%$%s$+$i$N%V%i%&%6$N$_$KBP$7$F(B - $B%9%F!<%?%9$NJs9p$r;HMQ2DG=$K$9$k$K$O(B - $B0J2<$N%3!<%I$r(B <code>httpd.conf</code> $B@_Dj%U%!%$%k$KDI2C$7$^$9(B</p> + <p>foo.com ドメインからのブラウザのみに対して + ステータスの報告を使用可能にするには + 以下のコードを <code>httpd.conf</code> 設定ファイルに追加します</p> <example> <Location /server-status><br /> SetHandler server-status<br /> @@ -80,37 +80,37 @@ </Location> </example> - <p>$B$3$l$G!"%5!<%P$NE}7W>pJs$r%&%'%V%V%i%&%6$r;H$C$F(B - <code>http://your.server.name/server-status</code> $B$r%"%/%;%9$9$k$3$H$K$h$j(B - $BCN$k$3$H$,$G$-$k$h$&$K$J$j$^$9!#(B</p> + <p>これで、サーバの統計情報をウェブブラウザを使って + <code>http://your.server.name/server-status</code> をアクセスすることにより + 知ることができるようになります。</p> </section> <section id="autoupdate"> - <title>$B<+F099?7(B</title> - <p>$B%V%i%&%6$,!V%j%U%l%7%e!W5!G=$r%5%]!<%H$7$F$$$l$P!"%9%F!<%?%9%Z!<%8$r(B - $B<+F0E*$K99?7$9$k$h$&$K$G$-$^$9!#(BN $BICKh$K99?7$5$;$k$?$a$K$O(B + <title>自動更新</title> + <p>ブラウザが「リフレシュ」機能をサポートしていれば、ステータスページを + 自動的に更新するようにできます。N 秒毎に更新させるためには <code>http://your.server.name/server-status?refresh=N</code> - $B$H$$$&%Z!<%8$r%"%/%;%9$7$F$/$@$5$$!#(B</p> + というページをアクセスしてください。</p> </section> <section id="machinereadable"> - <title>$B5!3#FI$_<h$j2DG=$J%9%F!<%?%9%U%!%$%k(B</title> - <p><code>http://your.server.name/server-status?auto</code> $B$r(B - $B%"%/%;%9$9$k$3$H$K$h$j!"%9%F!<%?%9%U%!%$%k$N5!3#FI$_<h$j2DG=$J%P!<%8%g%s$r(B - $BF@$k$3$H$,$G$-$^$9!#$3$l$O<+F0E*$K<B9T$5$l$k$H$-$KJXMx$G$9!#(B - Apache $B$N(B <code>/support</code> $B%G%#%l%/%H%j$K$"$k(B - Perl $B%W%m%0%i%`(B <code>log_server_status</code> $B$r8+$F$/$@$5$$!#(B</p> + <title>機械読み取り可能なステータスファイル</title> + <p><code>http://your.server.name/server-status?auto</code> を + アクセスすることにより、ステータスファイルの機械読み取り可能なバージョンを + 得ることができます。これは自動的に実行されるときに便利です。 + Apache の <code>/support</code> ディレクトリにある + Perl プログラム <code>log_server_status</code> を見てください。</p> <note> - <strong><module>mod_status</module> $B$,%5!<%P$KAH$_9~$^$l$F$$$k(B - $B>l9g!"%O%s%I%i$N5!G=$O%G%#%l%/%H%j(B<em>$BKh(B</em>$B$N%U%!%$%k(B - (<em>$B$9$J$o$A(B</em>$B!"(B<code>.htaccess</code>) $B$b4^$`(B<em>$B$9$Y$F(B</em>$B$N(B - $B@_Dj%U%!%$%k$G;HMQ2DG=$K$J$k$3$H$K$OCm0U$r$7$F$*$/I,MW$,$"$j$^$9!#(B - $B$3$l$O!"%5%$%H$K$h$C$F$O%;%-%e%j%F%#$K4X$9$kK>$^$7$/$J$$7k2L$r(B - $B$b$?$i$9$3$H$,$"$k$+$b$7$l$^$;$s!#(B</strong> + <strong><module>mod_status</module> がサーバに組み込まれている + 場合、ハンドラの機能はディレクトリ<em>毎</em>のファイル + (<em>すなわち</em>、<code>.htaccess</code>) も含む<em>すべて</em>の + 設定ファイルで使用可能になることには注意をしておく必要があります。 + これは、サイトによってはセキュリティに関する望ましくない結果を + もたらすことがあるかもしれません。</strong> </note> </section> @@ -118,16 +118,16 @@ <directivesynopsis> <name>ExtendedStatus</name> -<description>$B3F%j%/%(%9%H$KBP$7$F3HD%%9%F!<%?%9>pJs$rJ]B8$9$k(B</description> +<description>各リクエストに対して拡張ステータス情報を保存する</description> <syntax>ExtendedStatus On|Off</syntax> <default>ExtendedStatus Off</default> <contextlist><context>server config</context></contextlist> -<compatibility>ExtendedStatus $B$O(B Apache 1.3.2 $B0J9_$G$N$_;HMQ2DG=(B</compatibility> +<compatibility>ExtendedStatus は Apache 1.3.2 以降でのみ使用可能</compatibility> <usage> - <p>$B$3$N@_Dj$O%5!<%PA4BN$KBP$7$FE,MQ$5$l!"%P!<%A%c%k%[%9%HKh$K(B - $BJQ99$9$k$3$H$O$G$-$^$;$s!#3HD%%9%F!<%?%9>pJs$N<}=8$O%5!<%P$N(B - $BF0:n$rCY$/$9$k$3$H$,$"$j$^$9!#(B</p> + <p>この設定はサーバ全体に対して適用され、バーチャルホスト毎に + 変更することはできません。拡張ステータス情報の収集はサーバの + 動作を遅くすることがあります。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mod_suexec.xml.ja b/docs/manual/mod/mod_suexec.xml.ja index ab4d11a45b..6be14662e3 100644 --- a/docs/manual/mod/mod_suexec.xml.ja +++ b/docs/manual/mod/mod_suexec.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,39 +23,39 @@ <modulesynopsis metafile="mod_suexec.xml.meta"> <name>mod_suexec</name> -<description>$B;XDj$5$l$?%f!<%6$H%0%k!<%W$G(B CGI $B%9%/%j%W%H$r<B9T$9$k(B</description> +<description>指定されたユーザとグループで CGI スクリプトを実行する</description> <status>Extension</status> <sourcefile>mod_suexec.c</sourcefile> <identifier>suexec_module</identifier> -<compatibility>Apache 2.0 $B0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>Apache 2.0 以降で使用可能</compatibility> <summary> - <p>$B$3$N%b%8%e!<%k$H(B <program>suexec</program> $B%5%]!<%H%W%m%0%i%`(B - $B$K$h$j!"(BCGI $B%9%/%j%W%H$,;XDj$5$l$?%f!<%6$H%0%k!<%W$G(B - $B<B9T$5$l$k$h$&$K$G$-$^$9!#(B</p> + <p>このモジュールと <program>suexec</program> サポートプログラム + により、CGI スクリプトが指定されたユーザとグループで + 実行されるようにできます。</p> </summary> -<seealso><a href="../suexec.html">SuEXEC $B%5%]!<%H(B</a></seealso> +<seealso><a href="../suexec.html">SuEXEC サポート</a></seealso> <directivesynopsis> <name>SuexecUserGroup</name> -<description>CGI $B%W%m%0%i%`$N%f!<%6%Q!<%_%C%7%g%s!"%0%k!<%W%Q!<%_%C%7%g%s(B</description> +<description>CGI プログラムのユーザパーミッション、グループパーミッション</description> <syntax>SuexecUserGroup <em>User Group</em></syntax> <contextlist><context>server config</context> <context>virtual host</context></contextlist> -<compatibility>SuexecUserGroup $B$O(B 2.0 $B0J9_$G$N$_;HMQ2DG=!#(B</compatibility> +<compatibility>SuexecUserGroup は 2.0 以降でのみ使用可能。</compatibility> <usage> - <p><directive>SuexecUserGroup</directive> $B%G%#%l%/%F%#%V$O(B CGI $B%W%m%0%i%`(B - $B$,<B9T$5$l$k%f!<%6$H%0%k!<%W$r;XDj$G$-$k$h$&$K$7$^$9!#(BCGI $B0J30$N(B - $B%j%/%(%9%H$O(B User $B%G%#%l%/%F%#%V$G;XDj$5$l$?%f!<%6$N$^$^$G=hM}$5$l$^$9!#(B - $B$3$N%G%#%l%/%F%#%V$O(B Apache 1.3 $B$K$*$1$k(B VirtualHosts $B$NCf$G(B - User $B%G%#%l%/%F%#%V$H(B Group $B%G%#%l%/%F%#%V$r;H$&MQK!$NBe$o$j$K$J$j$^$9!#(B</p> + <p><directive>SuexecUserGroup</directive> ディレクティブは CGI プログラム + が実行されるユーザとグループを指定できるようにします。CGI 以外の + リクエストは User ディレクティブで指定されたユーザのままで処理されます。 + このディレクティブは Apache 1.3 における VirtualHosts の中で + User ディレクティブと Group ディレクティブを使う用法の代わりになります。</p> <example> - <title>$BNc(B</title> + <title>例</title> SuexecUserGroup nobody nogroup </example> diff --git a/docs/manual/mod/mod_unique_id.xml.ja b/docs/manual/mod/mod_unique_id.xml.ja index 1704d0ff60..9fee392749 100644 --- a/docs/manual/mod/mod_unique_id.xml.ja +++ b/docs/manual/mod/mod_unique_id.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,176 +23,176 @@ <modulesynopsis metafile="mod_unique_id.xml.meta"> <name>mod_unique_id</name> -<description>$B$=$l$>$l$N%j%/%(%9%H$KBP$9$k0l0U$J<1JL;R$NF~$C$?4D6-JQ?t$r(B -$BDs6!$9$k(B</description> +<description>それぞれのリクエストに対する一意な識別子の入った環境変数を +提供する</description> <status>Extension</status> <sourcefile>mod_unique_id.c</sourcefile> <identifier>unique_id_module</identifier> <summary> - <p>$B$3$N%b%8%e!<%k$OHs>o$K@)8B$5$l$?>r7o2<$G!"(B - $B$=$l$>$l$N%j%/%(%9%H$K!V$9$Y$F!W$N%j%/%(%9%H$KBP$7$F(B - $B0l0U$K7h$^$k$3$H$,J]>Z$5$l$F$$$kKbK!$N%H!<%/%s$rDs6!$7$^$9!#(B - $B$3$N0l0U$J<1JL;R$O!"E,@Z$K@_Dj$5$l$?%/%i%9%?$G$OJ#?t$N(B - $B%^%7%s$N4V$G$5$($b0l0U$K$J$j$^$9!#$=$l$>$l$N%j%/%(%9%H$KBP$7$F4D6-JQ?t(B - <code>UNIQUE_ID</code> $B$K<1JL;R$,@_Dj$5$l$^$9!#(B - $B0l0U$J<1JL;R$,JXMx$JM}M3$O$$$m$$$m$"$j$^$9$,!"(B - $B$3$N%I%-%e%a%s%H$NL\E*$+$i$O30$l$k$?$a!"$3$3$G$O@bL@$7$^$;$s!#(B</p> + <p>このモジュールは非常に制限された条件下で、 + それぞれのリクエストに「すべて」のリクエストに対して + 一意に決まることが保証されている魔法のトークンを提供します。 + この一意な識別子は、適切に設定されたクラスタでは複数の + マシンの間でさえも一意になります。それぞれのリクエストに対して環境変数 + <code>UNIQUE_ID</code> に識別子が設定されます。 + 一意な識別子が便利な理由はいろいろありますが、 + このドキュメントの目的からは外れるため、ここでは説明しません。</p> </summary> <section id="theory"> - <title>$BM}O@(B</title> - - <p>$B$^$:$O$8$a$K!"(BApache $B%5!<%P$,(B Unix - $B%^%7%s$G$I$N$h$&$KF0:n$r$9$k$+$r4JC1$K@bL@$7$^$9!#(B - $B$3$N5!G=$O8=;~E@$G$O(B Windows NT $B$G$O%5%]!<%H$5$l$F$$$^$;$s!#(B - Unix $B%^%7%s$G$O(B Apache $B$O$$$/$D$+$N;R%W%m%;%9$r:n@.$7!"(B - $B$=$N;R%W%m%;%9$,0l$D$:$D%j%/%(%9%H$r=hM}$7$^$9!#$=$l$>$l$N;R%W%m%;%9$O!"(B - $B@8B84|4VCf$KJ#?t$N%j%/%(%9%H$r07$&$3$H$,$G$-$^$9!#(B - $B$3$N5DO@$G$O;R%W%m%;%94V$G$O0l@Z%G!<%?$r6&M-$7$J$$$3$H$K$7$^$9!#(B - $B0J8e!"$3$N;R%W%m%;%9$N$3$H$r(B <dfn>httpd $B%W%m%;%9(B</dfn> $B$H8F$S$^$9!#(B</p> - - <p>$B$"$J$?$N%&%'%V%5%$%H$K$O$"$J$?$,4IM}$9$k$$$/$D$+$N%^%7%s$,$"$k$H$7$^$9!#(B - $B$=$l$i$r$^$H$a$F%/%i%9%?$H8F$V$3$H$K$7$^$9!#$=$l$>$l$N%^%7%s$OJ#?t$N(B - Apache $B$r<B9T$9$k$3$H$b$G$-$^$9!#(B - $B$3$l$i$9$Y$F$r$^$H$a$?$b$N$,!V1'Ch!W$G$"$k$H9M$($i$l$^$9!#(B - $B$$$/$D$+$N2>Dj$N2<$G!"%/%i%9%?$N%^%7%s4V$,$?$/$5$sDL?.$r$9$k$3$H$J$/!"(B - $B$3$N1'Ch$NCf$G$=$l$>$l$N%j%/%(%9%H$K0l0U$J<1JL;R$r@8@.$G$-$k$3$H$r<($7$^$9!#(B + <title>理論</title> + + <p>まずはじめに、Apache サーバが Unix + マシンでどのように動作をするかを簡単に説明します。 + この機能は現時点では Windows NT ではサポートされていません。 + Unix マシンでは Apache はいくつかの子プロセスを作成し、 + その子プロセスが一つずつリクエストを処理します。それぞれの子プロセスは、 + 生存期間中に複数のリクエストを扱うことができます。 + この議論では子プロセス間では一切データを共有しないことにします。 + 以後、この子プロセスのことを <dfn>httpd プロセス</dfn> と呼びます。</p> + + <p>あなたのウェブサイトにはあなたが管理するいくつかのマシンがあるとします。 + それらをまとめてクラスタと呼ぶことにします。それぞれのマシンは複数の + Apache を実行することもできます。 + これらすべてをまとめたものが「宇宙」であると考えられます。 + いくつかの仮定の下で、クラスタのマシン間がたくさん通信をすることなく、 + この宇宙の中でそれぞれのリクエストに一意な識別子を生成できることを示します。 </p> - <p>$B%/%i%9%?$K$"$k%^%7%s$O0J2<$NMW5a$r8+$?$5$J$1$l$P$J$j$^$;$s!#(B - ($B%^%7%s$,0l$D$@$1$@$H$7$F$b!"(BNTP $B$G;~7W$r9g$o$;$kJ}$,NI$$$G$9!#(B)</p> + <p>クラスタにあるマシンは以下の要求を見たさなければなりません。 + (マシンが一つだけだとしても、NTP で時計を合わせる方が良いです。)</p> <ul> - <li>NTP $B$dB>$N%M%C%H%o!<%/>e$G;~4V$r9g$o$;$k%W%m%H%3%k$K$h$C$F(B - $B3F%^%7%s$N;~4V$NF14|$,<h$i$l$F$$$k$3$H!#(B</li> + <li>NTP や他のネットワーク上で時間を合わせるプロトコルによって + 各マシンの時間の同期が取られていること。</li> - <li>$B%b%8%e!<%k$,%[%9%HL>$r0z$$$F0c$&(B IP - $B%"%I%l%9$r<u$1<h$k$3$H$,$G$-$k$h$&$K!"(B - $B%/%i%9%?$N$=$l$>$l$N%^%7%s$N%[%9%HL>$,0c$&$3$H!#(B</li> + <li>モジュールがホスト名を引いて違う IP + アドレスを受け取ることができるように、 + クラスタのそれぞれのマシンのホスト名が違うこと。</li> </ul> - <p>$B%*%Z%l!<%F%#%s%0%7%9%F%`$K$*$$$F$O!"(Bpid ($B%W%m%;%9(B ID) $B$,(B - 32 $B%S%C%H$NHO0OFb$G$"$k$3$H$r2>Dj$7$^$9!#%*%Z%l!<%F%#%s%0%7%9%F%`$N(B - pid $B$,(B 32 $B%S%C%H$rD6$($k>l9g$O!"4JC1$J=$@5$G$O$"$j$^$9$,!"(B - $B%3!<%I$rJQ99$9$kI,MW$,$"$j$^$9!#(B</p> - - <p>$B$3$l$i$N2>Dj$,K~$?$5$l$F$$$k$H!"$"$k;~E@$K$*$$$F!"(B - $B%/%i%9%?Fb$N$I$N%^%7%s$N$I$N(B httpd - $B%W%m%;%9$G$b!"0l0U$KF1Dj$9$k$3$H$,$G$-$^$9!#$3$l$O%^%7%s$N(B IP - $B%"%I%l%9$H(B httpd $B%W%m%;%9$N(B pid $B$G==J,$K9T$J$&$3$H$,$G$-$^$9!#(B - $B$G$9$+$i!"%j%/%(%9%H$K0l0U$J<1JL;R$r@8@.$9$k$?$a$K$O!"(B - $B;~9o$r6hJL$9$kI,MW$,$"$k$@$1$G$9!#(B</p> - - <p>$B;~9o$r6hJL$9$k$?$a$K!"(BUnix $B$N%?%$%`%9%?%s%W(B (UTC $B$N(B 1970 $BG/(B - 1 $B7n(B 1 $BF|$+$i$NIC?t(B) $B$H!"(B16 $B%S%C%H$N%+%&%s%?$r;H$$$^$9!#(B - $B%?%$%`%9%?%s%W$NN3EY$O0lIC$G$9$N$G!"0lIC4V$N(B 65536 - $B$^$G$NCM$rI=8=$9$k$?$a$K%+%&%s%?$r;HMQ$7$^$9!#;M$D$NCM(B - <em>( ip_addr, pid, time_stamp, counter )</em> $B$G3F(B httpd - $B%W%m%;%9$G0lIC$N4V$K(B 65536 $B%j%/%(%9%H$r?t$($"$2$k$3$H$,$G$-$^$9!#(B - $B;~4V$,7P$D$H(B pid $B$,:FMxMQ$5$l$k$H$$$&LdBj$,$"$j$^$9$,!"(B - $B$3$NLdBj$r2r7h$9$k$?$a$K%+%&%s%?$,;HMQ$5$l$^$9!#(B</p> - - <p>httpd $B$N;R%W%m%;%9$,:n@.$5$l$k$H!"%+%&%s%?$O(B - ($B$=$N;~E@$N%^%$%/%mIC(B $B!`(B 10) modulo 65536 $B$G=i4|2=$5$l$^$9(B - ($B$3$N<0$O$$$/$D$+$N%7%9%F%`$K$"$k!"%^%$%/%mIC$N(B - $B%?%$%^$N2<0L%S%C%H$,0[$J$k$H$$$&LdBj$r2r7h$9$k$?$a$KA*$P$l$^$7$?(B)$B!#(B - $B0l0U$J<1JL;R$,@8@.$5$l$?$H$-!";HMQ$5$l$k%?%$%`%9%?%s%W$O(B - $B%&%'%V%5!<%P$K%j%/%(%9%H$,E~Ce$7$?;~9o$K$J$j$^$9!#(B - $B%+%&%s%?$O<1JL;R$,@8@.$5$l$k$?$S$KA}2C$7$^$9(B - ($B$"$U$l$?>l9g$O(B 0 $B$KLa$j$^$9(B)$B!#(B</p> - - <p>$B%+!<%M%k$O%W%m%;%9$r%U%)!<%/$9$k$H!"$=$l$>$l$N%W%m%;%9$N$?$a$K(B - pid $B$r@8@.$7$^$9!#(Bpid $B$O7+$jJV$5$l$k$3$H$,5v2D$5$l$F$$$^$9(B - (pid $B$NCM$OB?$/$N(B Unix $B$G$O(B 16 $B%S%C%H$G$9$,!"?7$7$$%7%9%F%`$G$O(B - 32 $B%S%C%H$K3HD%$5$l$F$$$^$9(B)$B!#(B - $B$G$9$+$i!"$"$kDxEY$N;~4V$,7P2a$9$k$HF1$8(B pid $B$,:F$S;HMQ$5$l$^$9!#(B - $B$7$+$7!"0lICFb$K:F;HMQ$5$l$J$1$l$P!"(B - $B;M$D$NCM$N0l0U@-$OJ]$?$l$^$9!#$D$^$j!"2f!9$O%7%9%F%`$,0lIC4V(B - $B$K(B 65536 $B8D$N%W%m%;%9$r5/F0$7$J$$$H2>Dj$7$F$$$^$9(B ($B$$$/$D$+$N(B Unix - $B$G$O(B 32768 $B%W%m%;%9$G$9$,!"$=$l$G$9$i$[$H$s$I$"$jF@$J$$$G$7$g$&(B)$B!#(B</p> - - <p>$B2?$i$+$NM}M3$G!"F1$8;~9o$,7+$jJV$5$l$?$H$7$^$7$g$&!#(B - $B$D$^$j!"%7%9%F%`$N;~7W$,68$C$F$$$F!"$b$&0lEY2a5n$N;~9o$K$J$C$F$7$^$C$?(B - ($B$b$7$/$O?J$_$9$.$F$$$?$H$-$K!"(B - $B@5$7$$;~9o$KLa$7$?$?$a$K:F$S>-Mh$N;~9o$K$J$C$F$7$^$C$?(B) $B$H$7$^$9!#(B - $B$3$N>l9g!"(Bpid $B$H%?%$%`%9%?%s%W$,:F;HMQ$5$l$k$3$H$,4JC1$K<($5$l$^$9!#(B - $B%+%&%s%?=i4|2=MQ$N4X?t$O!"$3$NLdBj$N2sHr$r<j=u$1$7$h$&$HA*Br$5$l$F$$$^$9!#(B - $BK\Ev$O%+%&%s%?$N=i4|2=$r$9$k$?$a$K%i%s%@%`$J?t;z$r;H$$$?$$$N$G$9$,!"(B - $B$[$H$s$I$N%7%9%F%`$G$O4JC1$K;HMQ$G$-$k?t$OL5$$$3$H$KCm0U$7$F$/$@$5$$(B - (<em>$B$9$J$o$A(B</em>$B!"(Brand ()$B$O;H$($^$;$s!#(Brand () $B$K$O(B seed - $B$rM?$($kI,MW$,$"$j!"(Bseed $B$K$O;~9o$r;H$($^$;$s!#0lICC10L$G$O!"(B - $B$=$N;~9o$O$9$G$K7+$jJV$5$l$F$$$k$+$i$G$9(B)$B!#(B - $B$3$l$O!"40`z$JBP:v$G$O$"$j$^$;$s!#(B</p> - - <p>$B$3$NBP:v$O$I$N$/$i$$8z2L$,$"$k$G$7$g$&$+(B? - $B$3$3$G$O!"%^%7%s72$NCf$N0l$D$O:GBg$G0lIC$K(B 500 - $B%j%/%(%9%H$r07$&$H2>Dj$7$^$9(B ($B$3$l$r=q$$$F$$$k;~E@$G$OBEEv$J>e8B$G$9!#(B - $BDL>o%7%9%F%`$,$9$k$3$H$O@EE*$J%U%!%$%k$r<h$j$@$9$@$1$G$O$"$j$^$;$s$+$i(B)$B!#(B - $B$=$l$r9T$J$&$?$a$K!"$=$N%^%7%s$OJB9T$7$FMh$k%/%i%$%"%s%H$N?t$K(B - $B1~$8$??t$N;R%W%m%;%9$rMW5a$7$^$9!#(B - $B$7$+$7$J$,$i!"Ha4QE*$K9M$($F!"0l$D$N;R%W%m%;%9$,0lIC$K(B 500 - $B%j%/%(%9%H$r07$($k$H$7$^$9!#$=$&$9$k$H!"(B($B0lIC$N@:EY$K$*$$$F(B) - $B;~9o$,F1$8;~$r7+$jJV$9$H!"$3$N;R%W%m%;%9$,%+%&%s%?$NCM$r:F$S;H$$!"(B - $B0l0U@-$,2u$l$k2DG=@-$,(B 1.5% $B$"$j$^$9!#(B - $B$3$l$OHs>o$KHa4QE*$JNc$G!"<B@$3&$NCM$G$O!"$[$H$s$I5/$3$j$=$&$K$"$j$^$;$s!#(B - $B$=$l$G$b$3$l$,5/$3$k2DG=@-$N$"$k$h$&$J%7%9%F%`$J$i!"(B - ($B%W%m%0%i%`%3!<%I$rJT=8$7$F(B) - $B%+%&%s%?$r(B 32 $B%S%C%H$K$9$k$N$,NI$$$G$7$g$&!#(B + <p>オペレーティングシステムにおいては、pid (プロセス ID) が + 32 ビットの範囲内であることを仮定します。オペレーティングシステムの + pid が 32 ビットを超える場合は、簡単な修正ではありますが、 + コードを変更する必要があります。</p> + + <p>これらの仮定が満たされていると、ある時点において、 + クラスタ内のどのマシンのどの httpd + プロセスでも、一意に同定することができます。これはマシンの IP + アドレスと httpd プロセスの pid で十分に行なうことができます。 + ですから、リクエストに一意な識別子を生成するためには、 + 時刻を区別する必要があるだけです。</p> + + <p>時刻を区別するために、Unix のタイムスタンプ (UTC の 1970 年 + 1 月 1 日からの秒数) と、16 ビットのカウンタを使います。 + タイムスタンプの粒度は一秒ですので、一秒間の 65536 + までの値を表現するためにカウンタを使用します。四つの値 + <em>( ip_addr, pid, time_stamp, counter )</em> で各 httpd + プロセスで一秒の間に 65536 リクエストを数えあげることができます。 + 時間が経つと pid が再利用されるという問題がありますが、 + この問題を解決するためにカウンタが使用されます。</p> + + <p>httpd の子プロセスが作成されると、カウンタは + (その時点のマイクロ秒 ÷ 10) modulo 65536 で初期化されます + (この式はいくつかのシステムにある、マイクロ秒の + タイマの下位ビットが異なるという問題を解決するために選ばれました)。 + 一意な識別子が生成されたとき、使用されるタイムスタンプは + ウェブサーバにリクエストが到着した時刻になります。 + カウンタは識別子が生成されるたびに増加します + (あふれた場合は 0 に戻ります)。</p> + + <p>カーネルはプロセスをフォークすると、それぞれのプロセスのために + pid を生成します。pid は繰り返されることが許可されています + (pid の値は多くの Unix では 16 ビットですが、新しいシステムでは + 32 ビットに拡張されています)。 + ですから、ある程度の時間が経過すると同じ pid が再び使用されます。 + しかし、一秒内に再使用されなければ、 + 四つの値の一意性は保たれます。つまり、我々はシステムが一秒間 + に 65536 個のプロセスを起動しないと仮定しています (いくつかの Unix + では 32768 プロセスですが、それですらほとんどあり得ないでしょう)。</p> + + <p>何らかの理由で、同じ時刻が繰り返されたとしましょう。 + つまり、システムの時計が狂っていて、もう一度過去の時刻になってしまった + (もしくは進みすぎていたときに、 + 正しい時刻に戻したために再び将来の時刻になってしまった) とします。 + この場合、pid とタイムスタンプが再使用されることが簡単に示されます。 + カウンタ初期化用の関数は、この問題の回避を手助けしようと選択されています。 + 本当はカウンタの初期化をするためにランダムな数字を使いたいのですが、 + ほとんどのシステムでは簡単に使用できる数は無いことに注意してください + (<em>すなわち</em>、rand ()は使えません。rand () には seed + を与える必要があり、seed には時刻を使えません。一秒単位では、 + その時刻はすでに繰り返されているからです)。 + これは、完璧な対策ではありません。</p> + + <p>この対策はどのくらい効果があるでしょうか? + ここでは、マシン群の中の一つは最大で一秒に 500 + リクエストを扱うと仮定します (これを書いている時点では妥当な上限です。 + 通常システムがすることは静的なファイルを取りだすだけではありませんから)。 + それを行なうために、そのマシンは並行して来るクライアントの数に + 応じた数の子プロセスを要求します。 + しかしながら、悲観的に考えて、一つの子プロセスが一秒に 500 + リクエストを扱えるとします。そうすると、(一秒の精度において) + 時刻が同じ時を繰り返すと、この子プロセスがカウンタの値を再び使い、 + 一意性が壊れる可能性が 1.5% あります。 + これは非常に悲観的な例で、実世界の値では、ほとんど起こりそうにありません。 + それでもこれが起こる可能性のあるようなシステムなら、 + (プログラムコードを編集して) + カウンタを 32 ビットにするのが良いでしょう。 </p> - <p>$B%5%^!<%?%$%`$K$h$j;~7W$,!VLa$5$l$k!W$3$H$r5$$K$7$F$$$k?M$,(B - $B$$$k$+$b$7$l$^$;$s!#$3$3$G;HMQ$5$l$k;~4V$O(B UTC $B$G$"$j!"(B - $B$=$l$O!V>o$K!W?J$`$N$G$3$3$G$OLdBj$K$J$j$^$;$s!#(Bx86 $B>e$N(B Unix - $B$O$3$N>r7o$rK~$?$9$?$a$KE,@Z$J@_Dj$,I,MW$+$b$7$l$J$$$3$H$K(B - $BCm0U$7$F$/$@$5$$!#%^%6!<%\!<%I$N;~7W$O(B UTC $B$K$J$C$F$$$F!"(B - $BB>$N;~4V$O$=$3$+$iE,@Z$KJd@5$5$l$k$3$H$r2>Dj$G$-$k$h$&$K(B - $B@_Dj$5$l$J$1$l$P$J$j$^$;$s!#$=$N$h$&$J>l9g$G$5$(!"(BNTP - $B$r;H$C$F$$$k$J$i$P%j%V!<%H8e$K$9$0@5$7$$(B UTC $B$N;~4V$K$J$k$G$7$g$&!#(B</p> - - <p><code>UNIQUE_ID</code> $B4D6-JQ?t$O(B 112 $B%S%C%H(B (32 $B%S%C%H(B IP - $B%"%I%l%9!"(B32 $B%S%C%H(B pid, 32 $B%S%C%H%?%$%`%9%?%s%W!"(B16 - $B%S%C%H%+%&%s%?$N;M$D$NAH(B) $B$r%"%k%U%!%Y%C%H(B <code>[A-Za-z0-9@-]</code> - $B$rMQ$$$F(B MIME $B$N(B base64 $BId9f2=$HF1MM$NJ}K!$K$h$jId9f2=$7!"(B19 - $B$NJ8;z$r@8@.$9$k$3$H$K$h$j:n@.$5$l$^$9!#(BMIME $B$N(B base64 - $B$N%"%k%U%!%Y%C%H$O<B:]$O(B <code>[A-Za-z0-9+/]</code> $B$G$9$,!"(B - <code>+</code> $B$H(B <code>/</code> $B$H$O(B URL - $B$G$OFCJL$JId9f2=$,I,MW$J$N$G!"$"$^$jK>$^$7$/$"$j$^$;$s!#(B - $BA4$F$NCM$O%M%C%H%o!<%/%P%$%H%*!<%@$GId9f2=$5$l$^$9$N$G!"(B - $BId9f$O0c$C$?%P%$%H%*!<%@$N%"!<%-%F%/%A%c4V$GHf3S2DG=$G$9!#(B - $B<B:]$NId9f2=$N=gHV$O(B: $B%?%$%`%9%?%s%W!"(BIP $B%"%I%l%9!"(Bpid, - $B%+%&%s%?$G$9!#$3$N=g$K$OL\E*$,$"$j$^$9$,!"(B - $B%"%W%j%1!<%7%g%s$OId9f$r2r@O$9$k$Y$-$G$O$J$$$3$H$r6/D4$7$F$*$-$^$9!#(B - $B%"%W%j%1!<%7%g%s$OId9f2=$5$l$?(B <code>UNIQUE_ID</code> - $BA4BN$rF)2aE*$J%H!<%/%s$H$7$F07$&$Y$-$G$9!#(B - <code>UNIQUE_ID</code> $B$OB>$N(B <code>UNIQUE_ID</code> - $B$H$NEy2A@-$rD4$Y$k$?$a$@$1$K$N$_;HMQ$G$-$^$9!#(B</p> - - <p>$B$3$N=gHV$O>-Mh!"4{B8$N(B <code>UNIQUE_ID</code> - $B$N%G!<%?%Y!<%9$H$N>WFM$r?4G[$9$k$3$H$J$/Id9f$rJQ99$9$k$3$H$,(B - $B2DG=$K$J$k$h$&$KA*Br$7$F$$$^$9!#(B - $B?7$7$$Id9f$O%?%$%`%9%?%s%W$r:G=i$NMWAG$H$7$F;D$9$N$,K>$^$7$/!"(B - $B$=$l0J30$OF1$8%"%k%U%!%Y%C%H$H%S%C%HD9$r;H$&$3$H$,$G$-$^$9!#(B - $B%?%$%`%9%?%s%W$OK\<AE*$KA}2C7ONs$G$9$N$G!"(B - $B%/%i%9%?$NA4$F$N%^%7%s$,%j%/%(%9%H$H%5!<%P5!G=$rDd;_$7$F!"(B - $B8E$$Id9f2=J}<0$r;HMQ$9$k$N$r$d$a$k(B<em>$B%U%i%0IC(B</em>$B$,$"$l$P==J,$G$9!#(B - $B$=$N8e$O!"%j%/%(%9%H$r:F3+$7!"(B - $B?7$7$$Id9f$rH/9T$9$k$3$H$,$G$-$k$h$&$K$J$j$^$9!#(B</p> - - <p>$B2f!9$O$3$l$,!"(B - $B$3$NLdBj$KBP$9$kHf3SE*0\?"@-$N9b$$2r7hK!$@$H9M$($F$$$^$9!#(B - Windows NT $B$N$h$&$J%^%k%A%9%l%C%I$N%7%9%F%`$K3HD%$9$k$3$H$,$G$-$^$9$7!"(B - $B>-MhI,MW$K$J$l$P$5$i$KA}$d$9$3$H$b$G$-$^$9!#(B - ID $B$OI,MW$K1~$8$FD9$/$9$k$3$H$,$G$-$^$9$N$G!"@8@.$5$l$?(B ID - $B$O<B<A>e!"L58B$KM-8z$G$9!#$^$?!"%/%i%9%?$N%^%7%s4V$NDL?.$b;v<B>eI,MW$J$/(B - (NTP $B$K$h$kF14|$N$_$,I,MW$G!"$3$l$O%*!<%P%X%C%I$O$"$^$j$"$j$^$;$s(B)$B!"(Bhttpd - $B%W%m%;%94V$NDL?.$bI,MW$"$j$^$;$s(B ($BDL?.$O%+!<%M%k$K$h$j3d$jEv$F$i$l$?(B - pid $B$NCM$K$h$j0EL[$NFb$K9T$J$o$F$$$^$9(B)$B!#(B - $B$5$i$K8B$i$l$?>u672<$G$O!"(BID $B$O$5$i$KC;$/$9$k$3$H$,$G$-$^$9$,!"(B - $B$h$jB?$/$N>pJs$r2>Dj$9$kI,MW$,$G$F$-$^$9(B ($BNc$($P!"(B32 $B%S%C%H(B - IP $B%"%I%l%9$O$I$N%5%$%H$K$*$$$F$b2a>j$J>pJs$G$9$,!"(B - $B$=$l$NBe$o$j$K$J$k0\?"@-$N$"$k$b$N$O$"$j$^$;$s(B)$B!#(B</p> + <p>サマータイムにより時計が「戻される」ことを気にしている人が + いるかもしれません。ここで使用される時間は UTC であり、 + それは「常に」進むのでここでは問題になりません。x86 上の Unix + はこの条件を満たすために適切な設定が必要かもしれないことに + 注意してください。マザーボードの時計は UTC になっていて、 + 他の時間はそこから適切に補正されることを仮定できるように + 設定されなければなりません。そのような場合でさえ、NTP + を使っているならばリブート後にすぐ正しい UTC の時間になるでしょう。</p> + + <p><code>UNIQUE_ID</code> 環境変数は 112 ビット (32 ビット IP + アドレス、32 ビット pid, 32 ビットタイムスタンプ、16 + ビットカウンタの四つの組) をアルファベット <code>[A-Za-z0-9@-]</code> + を用いて MIME の base64 符号化と同様の方法により符号化し、19 + の文字を生成することにより作成されます。MIME の base64 + のアルファベットは実際は <code>[A-Za-z0-9+/]</code> ですが、 + <code>+</code> と <code>/</code> とは URL + では特別な符号化が必要なので、あまり望ましくありません。 + 全ての値はネットワークバイトオーダで符号化されますので、 + 符号は違ったバイトオーダのアーキテクチャ間で比較可能です。 + 実際の符号化の順番は: タイムスタンプ、IP アドレス、pid, + カウンタです。この順には目的がありますが、 + アプリケーションは符号を解析するべきではないことを強調しておきます。 + アプリケーションは符号化された <code>UNIQUE_ID</code> + 全体を透過的なトークンとして扱うべきです。 + <code>UNIQUE_ID</code> は他の <code>UNIQUE_ID</code> + との等価性を調べるためだけにのみ使用できます。</p> + + <p>この順番は将来、既存の <code>UNIQUE_ID</code> + のデータベースとの衝突を心配することなく符号を変更することが + 可能になるように選択しています。 + 新しい符号はタイムスタンプを最初の要素として残すのが望ましく、 + それ以外は同じアルファベットとビット長を使うことができます。 + タイムスタンプは本質的に増加系列ですので、 + クラスタの全てのマシンがリクエストとサーバ機能を停止して、 + 古い符号化方式を使用するのをやめる<em>フラグ秒</em>があれば十分です。 + その後は、リクエストを再開し、 + 新しい符号を発行することができるようになります。</p> + + <p>我々はこれが、 + この問題に対する比較的移植性の高い解決法だと考えています。 + Windows NT のようなマルチスレッドのシステムに拡張することができますし、 + 将来必要になればさらに増やすこともできます。 + ID は必要に応じて長くすることができますので、生成された ID + は実質上、無限に有効です。また、クラスタのマシン間の通信も事実上必要なく + (NTP による同期のみが必要で、これはオーバヘッドはあまりありません)、httpd + プロセス間の通信も必要ありません (通信はカーネルにより割り当てられた + pid の値により暗黙の内に行なわています)。 + さらに限られた状況下では、ID はさらに短くすることができますが、 + より多くの情報を仮定する必要がでてきます (例えば、32 ビット + IP アドレスはどのサイトにおいても過剰な情報ですが、 + それの代わりになる移植性のあるものはありません)。</p> </section> diff --git a/docs/manual/mod/mod_userdir.xml.ja b/docs/manual/mod/mod_userdir.xml.ja index b7a725bcb3..03b8add7b4 100644 --- a/docs/manual/mod/mod_userdir.xml.ja +++ b/docs/manual/mod/mod_userdir.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:657842 (outdated) --> @@ -23,81 +23,81 @@ <modulesynopsis metafile="mod_userdir.xml.meta"> <name>mod_userdir</name> -<description>$B%f!<%6@lMQ$N%G%#%l%/%H%j$rDs6!(B +<description>ユーザ専用のディレクトリを提供 </description> <status>Base</status> <sourcefile>mod_userdir.c</sourcefile> <identifier>userdir_module</identifier> <summary> -<p>$B$3$N%b%8%e!<%k$O!"(B +<p>このモジュールは、 <code>http://example.com/~user/</code> -$B9=J8$r;H$C$F%f!<%6@lMQ%G%#%l%/%H%j$K%"%/%;%9$G$-$k$h$&$K$7$^$9!#(B</p> +構文を使ってユーザ専用ディレクトリにアクセスできるようにします。</p> </summary> -<seealso><a href="../urlmapping.html">URL $B$+$i(B -$B%U%!%$%k%7%9%F%`$X$N%^%C%T%s%0(B</a></seealso> +<seealso><a href="../urlmapping.html">URL から +ファイルシステムへのマッピング</a></seealso> <seealso><a href="../howto/public_html.html">public_html -$B%A%e!<%H%j%"%k(B</a></seealso> +チュートリアル</a></seealso> <directivesynopsis> <name>UserDir</name> -<description>$B%f!<%6@lMQ%G%#%l%/%H%j$N0LCV(B</description> +<description>ユーザ専用ディレクトリの位置</description> <syntax>UserDir <em>directory-filename</em></syntax> <contextlist><context>server config</context> <context>virtual host</context></contextlist> <usage> - <p><directive>UserDir</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%f!<%6$N%I%-%e%a%s%H$X$N%j%/%(%9%H$r<u$1$?;~$K;H$&(B - $B%f!<%6$N%[!<%`%G%#%l%/%H%jCf$N!"<B:]$N%G%#%l%/%H%j$r(B - $B@_Dj$7$^$9!#(B - <em>directory-filename</em> $B$K$O<!$N$I$l$+$r;XDj$7$^$9(B:</p> + <p><directive>UserDir</directive> ディレクティブは、 + ユーザのドキュメントへのリクエストを受けた時に使う + ユーザのホームディレクトリ中の、実際のディレクトリを + 設定します。 + <em>directory-filename</em> には次のどれかを指定します:</p> <ul> - <li>$B%G%#%l%/%H%jL>$+2<$K<($9$h$&$J%Q%?!<%s!#(B</li> - - <li><code>disabled</code> $B%-!<%o!<%I!#(B - <code>enabled</code> $B%-!<%o!<%I(B ($B2<5-;2>H(B) $B$GL@<(E*$K(B - $B;XDj$5$l$?%f!<%60J30$N(B - <em>$BA4$F$N(B</em>$B%f!<%6L>(B-$B%G%#%l%/%H%jJQ49$r(B - $B$7$J$$$h$&$K$7$^$9!#(B</li> - - <li><code>disabled</code> $B%-!<%o!<%I$H!"%9%Z!<%96h@Z$j$N%f!<%6L>%j%9%H!#(B - $B$3$N%j%9%HCf$K4^$^$l$k%f!<%6L>$KBP$7$F$O!"$?$H$((B - <code>enabled</code> $B@a$K$"$C$?$H$7$F$b!"(B - <em>$B7h$7$F(B</em>$B%G%#%l%/%H%jJQ49$O9T$o$l$^$;$s!#(B</li> - - <li><code>enebled</code> $B%-!<%o!<%I$H%9%Z!<%96h@Z$j$N%f!<%6L>%j%9%H!#(B - $BA4BN$G$OJQ49$,L58z$K$J$C$F$$$?$H$$$?$H$7$F$b!"(B - $B$3$l$i$N%f!<%6L>$K$O%G%#%l%/%H%jJQ49$,9T$o$l$^$9!#(B - $B$?$@$7!"(B<code>disabled</code> $B@a$K$b$"$l$PJQ49$O$5$l$^$;$s!#(B + <li>ディレクトリ名か下に示すようなパターン。</li> + + <li><code>disabled</code> キーワード。 + <code>enabled</code> キーワード (下記参照) で明示的に + 指定されたユーザ以外の + <em>全ての</em>ユーザ名-ディレクトリ変換を + しないようにします。</li> + + <li><code>disabled</code> キーワードと、スペース区切りのユーザ名リスト。 + このリスト中に含まれるユーザ名に対しては、たとえ + <code>enabled</code> 節にあったとしても、 + <em>決して</em>ディレクトリ変換は行われません。</li> + + <li><code>enebled</code> キーワードとスペース区切りのユーザ名リスト。 + 全体では変換が無効になっていたといたとしても、 + これらのユーザ名にはディレクトリ変換が行われます。 + ただし、<code>disabled</code> 節にもあれば変換はされません。 </li> </ul> - <p>$B$b$7(B <code>enabled</code> $B$b(B <code>disabled</code> - $B%-!<%o!<%I$b(B <code>UserDir</code> $B$K8=$o$l$F$$$J$1$l$P!"(B - $B0z?t$O%U%!%$%kL>%Q%?!<%s$H$7$F07$o$l!"(B - $BL>A0$+$i%G%#%l%/%H%j$X$NJQ49$N;XDj$r9T$J$&;~$K;H$o$l$^$9!#(B + <p>もし <code>enabled</code> も <code>disabled</code> + キーワードも <code>UserDir</code> に現われていなければ、 + 引数はファイル名パターンとして扱われ、 + 名前からディレクトリへの変換の指定を行なう時に使われます。 <code>http://www.foo.com/~bob/one/two.html</code> - $B$X$N%j%/%(%9%H$O<!$N$h$&$KJQ49$5$l$^$9(B:</p> + へのリクエストは次のように変換されます:</p> <table> -<tr><th>UserDir $B%G%#%l%/%F%#%V(B</th> -<th>$BJQ498e$N%Q%9(B</th></tr> +<tr><th>UserDir ディレクティブ</th> +<th>変換後のパス</th></tr> <tr><td>UserDir public_html</td><td>~bob/public_html/one/two.html</td></tr> <tr><td>UserDir /usr/web</td><td>/usr/web/bob/one/two.html</td></tr> <tr><td>UserDir /home/*/www</td><td>/home/bob/www/one/two.html</td></tr> </table> - <p>$B<!$N%G%#%l%/%F%#%V$O%/%i%$%"%s%H$KBP$7$F%j%@%$%l%/%H$r(B - $BAw?.$7$^$9(B:</p> + <p>次のディレクティブはクライアントに対してリダイレクトを + 送信します:</p> <table> -<tr><th>UserDir $B%G%#%l%/%F%#%V(B</th> -<th>$BJQ498e$N%Q%9(B</th></tr> +<tr><th>UserDir ディレクティブ</th> +<th>変換後のパス</th></tr> <tr><td>UserDir http://www.foo.com/users</td><td>http://www.foo.com/users/bob/one/two.html</td></tr> <tr><td>UserDir http://www.foo.com/*/usr</td><td>http://www.foo.com/bob/usr/one/two.html</td></tr> @@ -106,63 +106,63 @@ http://www.foo.com/~*/</td><td>http://www.foo.com/~bob/one/two.html</td></tr> </table> <note> - <strong>$B$3$N%G%#%l%/%F%#%V$r;H$&$H$-$OCm0U$7$F$/$@$5$$(B; - "<code>UserDir ./</code>" $B$O(B - "<code>/~root</code>" $B$+$i(B "<code>/</code>" $B$X%^%C%W$7$^$9$,!"(B - $B$3$l$OK>$^$7$$F0:n$G$O$J$$$G$7$g$&!#(B - "<code>UserDir disabled root</code>" $B@k8@$r(B - $B@_Dj$NCf$K4^$a$F$*$/$3$H$r6/$/$*A&$a$7$^$9!#(B - $BDI2C>pJs$K(B <directive module="core">Directory</directive> - $B%G%#%l%/%F%#%V$d(B - <a href="../misc/security_tips.html">$B%;%-%e%j%F%#(B - Tips</a> $B$N%Z!<%8$b$4Mw2<$5$$!#(B</strong> + <strong>このディレクティブを使うときは注意してください; + "<code>UserDir ./</code>" は + "<code>/~root</code>" から "<code>/</code>" へマップしますが、 + これは望ましい動作ではないでしょう。 + "<code>UserDir disabled root</code>" 宣言を + 設定の中に含めておくことを強くお薦めします。 + 追加情報に <directive module="core">Directory</directive> + ディレクティブや + <a href="../misc/security_tips.html">セキュリティ + Tips</a> のページもご覧下さい。</strong> </note> -<p>$BDI2C$NNc(B:</p> +<p>追加の例:</p> -<p>$B>/?t$N%f!<%6$N$_$,(B <code>UserDir</code> -$B%G%#%l%/%H%j$rMxMQ$7!"$=$l0J30$K$OMxMQ$5$;$?$/$J$$>l9g$O(B -$B<!$r;H$$$^$7$g$&(B:</p> +<p>少数のユーザのみが <code>UserDir</code> +ディレクトリを利用し、それ以外には利用させたくない場合は +次を使いましょう:</p> <example> UserDir disabled<br /> UserDir enabled user1 user2 user3 </example> -<p>$BBgItJ,$N%f!<%6$O(B <code>UserDir</code> $B%G%#%l%/%H%j$rMxMQ$9$k$1$l$I!"(B -$B>/?t$N?M$OIT5v2D$K$7$?$$>l9g$O!"<!$r;H$$$^$7$g$&(B:</p> +<p>大部分のユーザは <code>UserDir</code> ディレクトリを利用するけれど、 +少数の人は不許可にしたい場合は、次を使いましょう:</p> <example> UserDir enabled<br /> UserDir disabled user4 user5 user6 </example> -<p>$BB>$N%f!<%6%G%#%l%/%H%j$r;XDj$9$k$3$H$b$G$-$^$9!#(B -$B<!$N$h$&$J%3%^%s%I$r;H$&$H(B:</p> +<p>他のユーザディレクトリを指定することもできます。 +次のようなコマンドを使うと:</p> <example> Userdir public_html /usr/web http://www.foo.com/ </example> -<p>http://www.foo.com/~bob/one/two.html $B$X$N%j%/%(%9%H$O$^$:(B -~bob/public_html/one/two.html $B$N%Z!<%8$rD4$Y!"$=$N<!$K(B -/usr/web/bob/one/two.html $B$rD4$Y!":G8e$K(B http://www.foo.com/bob/one/two.html -$B$X$N%j%@%$%l%/%H$rAw$j$^$9!#(B</p> +<p>http://www.foo.com/~bob/one/two.html へのリクエストはまず +~bob/public_html/one/two.html のページを調べ、その次に +/usr/web/bob/one/two.html を調べ、最後に http://www.foo.com/bob/one/two.html +へのリダイレクトを送ります。</p> -<p>$B%j%@%$%l%/%H$r2C$($k>l9g$O!"%j%9%H$N:G8e$NA*Br;h$G$J$1$l$P$J$j$^$;$s!#(B -Apache $B$O%j%@%$%l%/%H$,@.8y$9$k$+$I$&$+$r7h$a$k$3$H$O$G$-$^$;$s$N$G!"(B -$B%j%9%H$NA0$NJ}$K%j%@%$%l%/%H$r=q$/$H!"$=$l$,I,$:;HMQ$5$l$kA*Br;h$K(B -$B$J$C$F$7$^$$$^$9!#(B</p> +<p>リダイレクトを加える場合は、リストの最後の選択肢でなければなりません。 +Apache はリダイレクトが成功するかどうかを決めることはできませんので、 +リストの前の方にリダイレクトを書くと、それが必ず使用される選択肢に +なってしまいます。</p> -<p>2.1.4 $B0J9_$G$O!"%f!<%6%G%#%l%/%H%jCV495!G=$O%G%U%)%k%H$G$O5/F0$7$^$;$s!#(B -$B$=$l0JA0$N%P!<%8%g%s$G$O!"(B<directive module="mod_userdir">UserDir</directive> -$B%G%#%l%/%F%#%V$,B8:_$7$J$1$l$P!"(B<code>UserDir public_html</code> -$B$G$"$k$H2>Dj$5$l$F$$$^$7$?!#(B</p> +<p>2.1.4 以降では、ユーザディレクトリ置換機能はデフォルトでは起動しません。 +それ以前のバージョンでは、<directive module="mod_userdir">UserDir</directive> +ディレクティブが存在しなければ、<code>UserDir public_html</code> +であると仮定されていました。</p> </usage> <seealso><a href="../howto/public_html.html">public_html -$B%A%e!<%H%j%"%k(B</a></seealso> +チュートリアル</a></seealso> </directivesynopsis> </modulesynopsis> diff --git a/docs/manual/mod/mod_version.xml.ja b/docs/manual/mod/mod_version.xml.ja index a3de876511..d54861cb0f 100644 --- a/docs/manual/mod/mod_version.xml.ja +++ b/docs/manual/mod/mod_version.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420993 (outdated) --> @@ -22,21 +22,21 @@ <modulesynopsis metafile="mod_version.xml.meta"> <name>mod_version</name> -<description>$B%P!<%8%g%s0MB8$N@_Dj(B</description> +<description>バージョン依存の設定</description> <status>Extension</status> <sourcefile>mod_version.c</sourcefile> <identifier>version_module</identifier> -<compatibility>$B%P!<%8%g%s(B 2.1 $B0J9_(B</compatibility> +<compatibility>バージョン 2.1 以降</compatibility> <summary> - <p>$BMM!9$J%P!<%8%g%s$N(B httpd $B$N0[$J$k@_Dj$r07$&$3$H$K$J$k!"(B - $B%F%9%H%9%$!<%H$dBg5,LO%M%C%H%o!<%/$G$N;HMQ$N$?$a$K@_7W$5$l$F$$$^$9!#(B - $B$3$N%b%8%e!<%k$O?7$7$$%3%s%F%J(B $B!=(B <directive - type="section" module="mod_version">IfVersion</directive> $B$r(B - $BDs6!$7$^$9!#$3$l$r;H$&$H!"?t;z$NHf3S$d@55,I=8=$K$h$k=@Fp$J(B - $B%P!<%8%g%s%A%'%C%/$,$G$-$k$h$&$K$J$j$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p>様々なバージョンの httpd の異なる設定を扱うことになる、 + テストスイートや大規模ネットワークでの使用のために設計されています。 + このモジュールは新しいコンテナ ― <directive + type="section" module="mod_version">IfVersion</directive> を + 提供します。これを使うと、数字の比較や正規表現による柔軟な + バージョンチェックができるようになります。</p> + + <example><title>例</title> <IfVersion 2.1.0><br /> <indent> # current httpd version is exactly 2.1.0<br /> @@ -50,12 +50,12 @@ </IfVersion> </example> - <p>$B>\:Y$O0J2<$rFI$s$G$/$@$5$$!#(B</p> + <p>詳細は以下を読んでください。</p> </summary> <directivesynopsis type="section"> <name>IfVersion</name> -<description>$B%P!<%8%g%s0MB8$N@_Dj$rF~$l$k(B</description> +<description>バージョン依存の設定を入れる</description> <syntax><IfVersion [[!]<var>operator</var>] <var>version</var>> ... </IfVersion></syntax> <contextlist><context>server config</context><context>virtual host</context> @@ -63,30 +63,30 @@ <override>All</override> <usage> - <p><directive type="section">IfVersion</directive> $B$O(B <program>httpd</program> $B$N%P!<%8%g%s(B - $B$,4p=`$rK~$?$7$?$H$-$K$N$_<B9T$5$;$?$$%G%#%l%/%F%#%V$r0O$_$^$9!#(B - $BDL>o$N(B ($B?tCM(B) $BHf3S$N$H$-$O(B <var>version</var> $B0z?t$O(B - <code><var>major</var>[.<var>minor</var>[.<var>patch</var>]]</code> $B$H$$$&(B - $B7A<0!"Nc$($P!"(B<code>2.1.0</code> $B$d(B <code>2.2</code> $B$H$J$j$^$9!#(B - <var>minor</var> $B$H(B <var>patch</var> $B$O>JN,2DG=$G$9!#>JN,$5$l$?>l9g$O!"(B - 0 $B$r;XDj$7$?$b$N$H$_$J$5$l$^$9!#Hf3S$K$O<!$N?tCM(B <var>operator</var> $B$r(B - $B;XDj$G$-$^$9(B:</p> + <p><directive type="section">IfVersion</directive> は <program>httpd</program> のバージョン + が基準を満たしたときにのみ実行させたいディレクティブを囲みます。 + 通常の (数値) 比較のときは <var>version</var> 引数は + <code><var>major</var>[.<var>minor</var>[.<var>patch</var>]]</code> という + 形式、例えば、<code>2.1.0</code> や <code>2.2</code> となります。 + <var>minor</var> と <var>patch</var> は省略可能です。省略された場合は、 + 0 を指定したものとみなされます。比較には次の数値 <var>operator</var> を + 指定できます:</p> <table style="zebra" border="1"> - <tr><th><var>operator</var></th><th>$B@bL@(B</th></tr> - <tr><td><code>=</code> $B$H(B <code>==</code></td> - <td>$BF1$8(B httpd $B%P!<%8%g%s(B</td></tr> + <tr><th><var>operator</var></th><th>説明</th></tr> + <tr><td><code>=</code> と <code>==</code></td> + <td>同じ httpd バージョン</td></tr> <tr><td><code>></code></td> - <td>$B$h$jBg$-$$(B httpd $B%P!<%8%g%s(B</td></tr> + <td>より大きい httpd バージョン</td></tr> <tr><td><code>>=</code></td> - <td>$B;XDj0J>e$N(B httpd $B%P!<%8%g%s(B</td></tr> + <td>指定以上の httpd バージョン</td></tr> <tr><td><code><</code></td> - <td>$B;XDjL$K~$N(B httpd $B%P!<%8%g%s(B</td></tr> + <td>指定未満の httpd バージョン</td></tr> <tr><td><code><=</code></td> - <td>$B;XDj0J2<$N(B httpd $B%P!<%8%g%s(B</td></tr> + <td>指定以下の httpd バージョン</td></tr> </table> - <example><title>$BNc(B</title> + <example><title>例</title> <IfVersion >= 2.1><br /> <indent> # this happens only in versions greater or<br /> @@ -95,20 +95,20 @@ </IfVersion> </example> - <p>$B?tCMHf3S$K2C$($F!"(Bhttp $B$N%P!<%8%g%sHV9f$KBP$7$F@55,I=8=$K$h$k(B - $B%^%C%A%s%0$,$G$-$^$9!#Fs<oN`$N=q$-J}$,$"$j$^$9(B:</p> + <p>数値比較に加えて、http のバージョン番号に対して正規表現による + マッチングができます。二種類の書き方があります:</p> <table style="zebra" border="1"> - <tr><th><var>operator</var></th><th>$B@bL@(B</th></tr> + <tr><th><var>operator</var></th><th>説明</th></tr> <tr><td><code>=</code> or <code>==</code></td> - <td><var>version</var> $B$O(B - <code>/<var>regex</var>/</code> $B7A<0(B</td></tr> + <td><var>version</var> は + <code>/<var>regex</var>/</code> 形式</td></tr> <tr><td><code>~</code></td> - <td><var>version</var> $B$O(B - <code><var>regex</var></code> $B7A<0(B</td></tr> + <td><var>version</var> は + <code><var>regex</var></code> 形式</td></tr> </table> - <example><title>$BNc(B</title> + <example><title>例</title> <IfVersion = /^2.1.[01234]$/><br /> <indent> # e.g. workaround for buggy versions @@ -116,8 +116,8 @@ </IfVersion> </example> - <p>$B%^%C%A%s%0$NH]Dj$rI=8=$9$k$?$a$K!"$9$Y$F$N%*%Z%l!<%?$OA0$K(B - $B46C2Id(B (<code>!</code>)$B$rIU$1$k$3$H$,$G$-$^$9(B:</p> + <p>マッチングの否定を表現するために、すべてのオペレータは前に + 感嘆符 (<code>!</code>)を付けることができます:</p> <example> <IfVersion !~ ^2.1.[01234]$><br /> @@ -127,8 +127,8 @@ </IfVersion> </example> - <p><var>operator</var> $B$,>JN,$5$l$?$H$-$O(B <code>=</code> $B$H(B - $B$_$J$5$l$^$9!#(B</p> + <p><var>operator</var> が省略されたときは <code>=</code> と + みなされます。</p> </usage> </directivesynopsis> diff --git a/docs/manual/mod/module-dict.xml.ja b/docs/manual/mod/module-dict.xml.ja index 7a7b65fe48..fe19260e40 100644 --- a/docs/manual/mod/module-dict.xml.ja +++ b/docs/manual/mod/module-dict.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -22,88 +22,88 @@ <manualpage metafile="module-dict.xml.meta"> - <title>Apache $B%b%8%e!<%k$N2r@b$G;HMQ$9$kMQ8l(B</title> + <title>Apache モジュールの解説で使用する用語</title> <summary> - <p>$B$3$NJ8=q$O(B Apache $B$N3F(B <a href="./">$B%b%8%e!<%k(B</a> $B$r@bL@$9$k$?$a$K(B - $B;H$o$l$F$$$kMQ8l$r@bL@$7$^$9!#(B</p> + <p>この文書は Apache の各 <a href="./">モジュール</a> を説明するために + 使われている用語を説明します。</p> </summary> -<section id="Description"><title>$B@bL@(B</title> +<section id="Description"><title>説明</title> -<p>$B%b%8%e!<%k$NL\E*$NC;$$@bL@!#(B</p> +<p>モジュールの目的の短い説明。</p> </section> -<section id="Status"><title>$B%9%F!<%?%9(B</title> +<section id="Status"><title>ステータス</title> - <p>$B$3$l$O!"$=$N%b%8%e!<%k$,(B Apache - $B%&%'%V%5!<%P$K$I$l$/$i$$L)@\$KAH$_9~$^$l$F$$$k$+$r<($7$^$9!#(B - $B8@$$49$($l$P!"%b%8%e!<%k$rAH$_9~$_!"$=$N5!G=$rMxMQ$9$k$?$a$K!"(B - $B%5!<%P$r:F%3%s%Q%$%k$9$kI,MW$,$"$k$+$b$7$l$J$$$H$$$&$3$H$r<($7$^$9!#(B - $B$3$NB0@-$,<h$jF@$kCM$O0J2<$N$b$N$G$9(B:</p> + <p>これは、そのモジュールが Apache + ウェブサーバにどれくらい密接に組み込まれているかを示します。 + 言い換えれば、モジュールを組み込み、その機能を利用するために、 + サーバを再コンパイルする必要があるかもしれないということを示します。 + この属性が取り得る値は以下のものです:</p> <dl> <dt>MPM</dt> - <dd>$B%9%F!<%?%9$,(B "MPM" $B$N%b%8%e!<%k$O(B<a - href="../mpm.html">$B%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B</a>$B$G$9!#(B - $BB>$N<oN`$N%b%8%e!<%k$H$O0c$C$F!"(BApache $B$O>o$K(B MPM $B$r0l$D$@$1(B - $B;HMQ$7B3$1$^$9!#$3$N<oN`$N%b%8%e!<%k$O4pK\E*$J%j%/%(%9%H$N07$$$H(B - $B%G%#%9%Q%C%A$r9T$J$$$^$9!#(B</dd> + <dd>ステータスが "MPM" のモジュールは<a + href="../mpm.html">マルチプロセッシングモジュール</a>です。 + 他の種類のモジュールとは違って、Apache は常に MPM を一つだけ + 使用し続けます。この種類のモジュールは基本的なリクエストの扱いと + ディスパッチを行ないます。</dd> <dt>Base</dt> - <dd>$B%9%F!<%?%9$,(B "Base" - $B$N%b%8%e!<%k$O!"%G%U%)%k%H$G%3%s%Q%$%k$5$l$F$o$6$o$6@_Dj$+$i(B - $B%b%8%e!<%k$r:o=|$7$F$$$J$$8B$j!"DL>o$OMxMQ2DG=$G$9!#(B + <dd>ステータスが "Base" + のモジュールは、デフォルトでコンパイルされてわざわざ設定から + モジュールを削除していない限り、通常は利用可能です。 </dd> <dt>Extension</dt> - <dd>$B%9%F!<%?%9$,(B "Extension" $B$N%b%8%e!<%k$O!"(B - $B%G%U%)%k%H$G$O%3%s%Q%$%k$5$l$:!"%5!<%P$K$bFI$_9~$^$l$^$;$s!#(B - $B$=$N%b%8%e!<%k$H$=$N5!G=$rM-8z$K$9$k$K$O!"(B - $B%5!<%P$r%S%k%I$9$k$?$a$N@_Dj$rJQ99$7$F!"(BApache - $B$r:F%3%s%Q%$%k$9$kI,MW$,$"$j$^$9!#(B</dd> + <dd>ステータスが "Extension" のモジュールは、 + デフォルトではコンパイルされず、サーバにも読み込まれません。 + そのモジュールとその機能を有効にするには、 + サーバをビルドするための設定を変更して、Apache + を再コンパイルする必要があります。</dd> <dt>Experimental</dt> - <dd>$B%9%F!<%?%9$,(B "Experimental" $B$N%b%8%e!<%k$O!"(B - Apache $BG[I[J*$KF1:-$5$l$F$$$^$9$,!"(B - $B;HMQ$9$k>l9g$O<+8J@UG$$G9T$J$&I,MW$,$"$j$^$9!#(B - $B$=$N%b%8%e!<%k$O!"%I%-%e%a%s%H$b40@.$K8~$1$F:n@.Cf$G$9$7!"(B - $B%5%]!<%H$5$l$k$F$$$k$H$O8B$j$^$;$s!#(B</dd> + <dd>ステータスが "Experimental" のモジュールは、 + Apache 配布物に同梱されていますが、 + 使用する場合は自己責任で行なう必要があります。 + そのモジュールは、ドキュメントも完成に向けて作成中ですし、 + サポートされるているとは限りません。</dd> <dt>External</dt> - <dd>$B%9%F!<%?%9$,(B "External" $B$N%b%8%e!<%k$O!"4pK\(B Apache - $BG[I[$KF1:-$5$l$^$;$s(B ("$B%5!<%I%Q!<%F%#!<%b%8%e!<%k(B")$B!#(B - $B$=$N$?$a!"2f!9$K@UG$$O$"$j$^$;$s$7!"(B - $B$=$N%b%8%e!<%k$N%5%]!<%H$b$7$F$$$^$;$s!#(B</dd> + <dd>ステータスが "External" のモジュールは、基本 Apache + 配布に同梱されません ("サードパーティーモジュール")。 + そのため、我々に責任はありませんし、 + そのモジュールのサポートもしていません。</dd> </dl> </section> -<section id="SourceFile"><title>$B%=!<%9%U%!%$%k(B</title> +<section id="SourceFile"><title>ソースファイル</title> - <p>$B$3$l$OC1=c$K!"(B - $B$=$N%b%8%e!<%k$KI,MW$J%3!<%I$r4^$`%=!<%9%U%!%$%k$NL>A0$rNs5s$7$?$b$N$G$9!#(B - $B$3$l$O!"(B<directive module="core" type="section">IfModule</directive> - $B%G%#%l%/%F%#%V$G;HMQ$5$l$kL>A0$G$b$"$j$^$9!#(B + <p>これは単純に、 + そのモジュールに必要なコードを含むソースファイルの名前を列挙したものです。 + これは、<directive module="core" type="section">IfModule</directive> + ディレクティブで使用される名前でもあります。 </p> </section> -<section id="ModuleIdentifier"><title>$B%b%8%e!<%k<1JL;R(B</title> +<section id="ModuleIdentifier"><title>モジュール識別子</title> - <p>$B$3$NJ8;zNs$O!"%b%8%e!<%k$NF0E*FI$_9~$_$r9T$J$&$H$-$K;HMQ$9$k(B <directive + <p>この文字列は、モジュールの動的読み込みを行なうときに使用する <directive module="mod_so">LoadModule</directive> - $B%G%#%l%/%F%#%V$K$*$$$F;HMQ$5$l$k%b%8%e!<%k$N<1JL;R$G$9!#(B - $B>\$7$/=q$/$H!"%=!<%9%U%!%$%kFb$N(B module $B%?%$%W$N30ItJQ?t$NL>A0$G$9!#(B + ディレクティブにおいて使用されるモジュールの識別子です。 + 詳しく書くと、ソースファイル内の module タイプの外部変数の名前です。 </p> </section> -<section id="Compatibility"><title>$B8_49@-(B</title> +<section id="Compatibility"><title>互換性</title> - <p>$B$"$k%b%8%e!<%k$,(B Apache $B%P!<%8%g%s(B 2 - $B$NG[I[$K4^$^$l$F$$$J$+$C$?>l9g!"(B - $B$=$N%b%8%e!<%k$,F3F~$5$l$?%P!<%8%g%s$,$3$3$K=q$+$l$F$$$^$9!#(B - $B$^$?!"%b%8%e!<%k$,FCDj$N%W%i%C%H%U%)!<%`$K$N$_B8:_$9$k$H$-$b(B - $B>\:Y$O$3$3$K=q$+$l$F$$$^$9!#(B</p> + <p>あるモジュールが Apache バージョン 2 + の配布に含まれていなかった場合、 + そのモジュールが導入されたバージョンがここに書かれています。 + また、モジュールが特定のプラットフォームにのみ存在するときも + 詳細はここに書かれています。</p> </section> </manualpage> diff --git a/docs/manual/mod/mpm_common.xml.ja b/docs/manual/mod/mpm_common.xml.ja index 0d29a0a005..552fe1031d 100644 --- a/docs/manual/mod/mpm_common.xml.ja +++ b/docs/manual/mod/mpm_common.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 478131:658305 (outdated) --> @@ -23,15 +23,15 @@ <modulesynopsis metafile="mpm_common.xml.meta"> <name>mpm_common</name> -<description>$BFs$D0J>e$N%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B (MPM) -$B$G<BAu$5$l$F$$$k%G%#%l%/%F%#%V$N%3%l%/%7%g%s(B</description> +<description>二つ以上のマルチプロセッシングモジュール (MPM) +で実装されているディレクティブのコレクション</description> <status>MPM</status> <directivesynopsis> <name>AcceptMutex</name> -<description>$BJ#?t$N;R%W%m%;%9$,%M%C%H%o!<%/%=%1%C%H$G%j%/%(%9%H$r(B -accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$?$a$K(B -$B;H$&J}K!(B</description> +<description>複数の子プロセスがネットワークソケットでリクエストを +accept しようとしているときに、Apache がそれらの子プロセスを直列化するために +使う方法</description> <syntax>AcceptMutex Default|<var>method</var></syntax> <default>AcceptMutex Default</default> <contextlist><context>server config</context></contextlist> @@ -40,223 +40,223 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ </modulelist> <usage> - <p><directive>AcceptMutex</directive> $B%G%#%l%/%F%#%V$O!"(B - $B%M%C%H%o!<%/%=%1%C%H$N%j%/%(%9%H$r(B accept $B$7$h$&$H$7$F$$$kJ#?t$N;R%W%m%;%9$r(B - Apache $B$,D>Ns2=$9$k$?$a$K;H$&J}K!(B($B$HI,MW$J$i%m%C%/%U%!%$%k$N>l=j(B)$B$r@_Dj$7$^$9!#(B - Apache 2.0 $B0JA0$O!"$3$N%a%=%C%I$O%3%s%Q%$%k;~$K$N$_A*Br$G$-$^$7$?!#(B - $B:GE,$JJ}K!$O!"%"!<%-%F%/%A%c$d%W%i%C%H%[!<%`$KBg$-$/0MB8$7$^$9!#(B - $B>\:Y$K4X$7$F$O!"(B<a - href="../misc/perf-tuning.html">$B@-G=$N%A%e!<%K%s%0(B</a> - $B%I%-%e%a%s%H$r$4Mw2<$5$$!#(B</p> - - <p>$B$3$N%G%#%l%/%F%#%V$,(B <code>Default</code> - $B$K@_Dj$5$l$F$$$l$P!"%3%s%Q%$%k;~$KA*Br$5$l$?%G%U%)%k%HCM$,;H$o$l$^$9!#(B - $BB>$N;HMQ2DG=$J%a%=%C%I$N0lMw$O2<$K$"$j$^$9!#(B - $BA4$F$N%a%=%C%I$,A4$F$N%W%i%C%H%[!<%`$G;HMQ2DG=$G$"$k$o$1$G$O$J$$!"(B - $B$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B - $B;HMQ2DG=$G$J$$%a%=%C%I$,;XDj$5$l$?>l9g$O!"(B - $B;HMQ2DG=$J%a%=%C%I$N0lMw$r4^$s$@%a%C%;!<%8$,(B - $B%(%i!<%m%0$K=PNO$5$l$^$9!#(B</p> + <p><directive>AcceptMutex</directive> ディレクティブは、 + ネットワークソケットのリクエストを accept しようとしている複数の子プロセスを + Apache が直列化するために使う方法(と必要ならロックファイルの場所)を設定します。 + Apache 2.0 以前は、このメソッドはコンパイル時にのみ選択できました。 + 最適な方法は、アーキテクチャやプラットホームに大きく依存します。 + 詳細に関しては、<a + href="../misc/perf-tuning.html">性能のチューニング</a> + ドキュメントをご覧下さい。</p> + + <p>このディレクティブが <code>Default</code> + に設定されていれば、コンパイル時に選択されたデフォルト値が使われます。 + 他の使用可能なメソッドの一覧は下にあります。 + 全てのメソッドが全てのプラットホームで使用可能であるわけではない、 + ということに注意してください。 + 使用可能でないメソッドが指定された場合は、 + 使用可能なメソッドの一覧を含んだメッセージが + エラーログに出力されます。</p> <dl> <dt><code>flock<<var>:/path/to/lockfile</var>></code></dt> - <dd>$B%*%W%7%g%s$N(B <var>/path/to/lockfile</var> - $B%Q%i%a!<%?$GDj5A$7$?%U%!%$%k$N%m%C%/$K!"(B - <code>flock(2)</code> $B%7%9%F%`%3!<%k$r;H$$$^$9!#(B - $B%m%C%/%U%!%$%k$N;XDj$K$O(B <directive module="mpm_common">LockFile</directive> - $B%G%#%l%/%F%#%V$r;H$&$3$H$b=PMh$^$9(B($BHs?d>)$G$9(B)$B!#(B</dd> + <dd>オプションの <var>/path/to/lockfile</var> + パラメータで定義したファイルのロックに、 + <code>flock(2)</code> システムコールを使います。 + ロックファイルの指定には <directive module="mpm_common">LockFile</directive> + ディレクティブを使うことも出来ます(非推奨です)。</dd> <dt><code>fcntl<<var>:/path/to/lockfile</var>></code></dt> - <dd>$B%*%W%7%g%s$N(B <var>/path/to/lockfile</var> - $B%Q%i%a!<%?$GDj5A$7$?%U%!%$%k$N%m%C%/$K!"(B - <code>fcntl(2)</code> $B%7%9%F%`%3!<%k$r;H$$$^$9!#(B - $B%m%C%/%U%!%$%k$N;XDj$K$O(B <directive module="mpm_common">LockFile</directive> - $B%G%#%l%/%F%#%V$r;H$&$3$H$b=PMh$^$9(B($BHs?d>)$G$9(B)$B!#(B</dd> + <dd>オプションの <var>/path/to/lockfile</var> + パラメータで定義したファイルのロックに、 + <code>fcntl(2)</code> システムコールを使います。 + ロックファイルの指定には <directive module="mpm_common">LockFile</directive> + ディレクティブを使うことも出来ます(非推奨です)。</dd> <dt><code>file<<var>:/path/to/lockfile</var>></code></dt> - <dd>$B;HMQ$G$-$k%U%!%$%k%m%C%/%k!<%A%s$NCf$G:GE,$J$b$N$r;H$$$^$9!#(B - $B6qBNE*$K$O!"(B<code>fcntl</code> $B$,;HMQ2DG=$J>l9g$O$=$l$r;H$$!"$=$&$G$J$$>l9g$O(B - <code>flock</code> $B$r;n$7$^$9!#(B - $B$3$N@_Dj$O%W%i%C%H%[!<%`$H(B <glossary>APR</glossary> $B$,Fs$D$N$&$A>/$J$/$H$b(B - $B0l$D$r%5%]!<%H$7$F$$$k>l9g$N$_;HMQ2DG=$G$9!#(B</dd> + <dd>使用できるファイルロックルーチンの中で最適なものを使います。 + 具体的には、<code>fcntl</code> が使用可能な場合はそれを使い、そうでない場合は + <code>flock</code> を試します。 + この設定はプラットホームと <glossary>APR</glossary> が二つのうち少なくとも + 一つをサポートしている場合のみ使用可能です。</dd> <dt><code>posixsem</code></dt> - <dd>$BGSB>=hM}$N<BAu$K(B POSIX $B8_49%;%^%U%)$r;HMQ$7$^$9(B</dd> + <dd>排他処理の実装に POSIX 互換セマフォを使用します</dd> <dt><code>sysvsem</code></dt> - <dd>$BGSB>=hM}$N<BAu$K(B SySV $B7A<0$N%;%^%U%)$r;H$$$^$9!#(B</dd> + <dd>排他処理の実装に SySV 形式のセマフォを使います。</dd> <dt><code>sem</code></dt> - <dd>$B;HMQ$G$-$k%;%^%U%)%k!<%A%s$NCf$G:GE,$J$b$N$r;H$$$^$9!#(B - $B6qBNE*$K$O!"(BPosix $B8_49%;%^%U%)$,;HMQ2DG=$J>l9g$O$=$l$r;H$$!"$=$&$G$J$$>l9g$O(B - SystemV IPC $B7A<0$N%;%^%U%)$r;n$7$^$9!#(B - $B$3$N@_Dj$O%W%i%C%H%[!<%`$H(B <glossary>APR</glossary> $B$,Fs$D$N$&$A>/$J$/$H$b(B - $B0l$D$r%5%]!<%H$7$F$$$k>l9g$N$_;HMQ2DG=$G$9!#(B</dd> + <dd>使用できるセマフォルーチンの中で最適なものを使います。 + 具体的には、Posix 互換セマフォが使用可能な場合はそれを使い、そうでない場合は + SystemV IPC 形式のセマフォを試します。 + この設定はプラットホームと <glossary>APR</glossary> が二つのうち少なくとも + 一つをサポートしている場合のみ使用可能です。</dd> <dt><code>pthread</code></dt> - <dd>POSIX Threads (PThreads) $B5,3J$G<BAu$5$l$F$$$k(B - POSIX $BGSB>=hM}$r;H$$$^$9!#(B</dd> + <dd>POSIX Threads (PThreads) 規格で実装されている + POSIX 排他処理を使います。</dd> </dl> - <p>$B%3%s%Q%$%k;~$K%7%9%F%`$N%G%U%)%k%H$KA*$P$l$?$b$N$,2?$+$r8+$?$$>l9g$O!"(B - <directive module="core">LogLevel</directive> $B$r(B <code>debug</code> - $B$K@_Dj$9$k$H$h$$$G$7$g$&!#%G%U%)%k%H$N(B <directive>AcceptMutex</directive> - $B$,(B <directive module="core">ErrorLog</directive> $B$K=q$-9~$^$l$^$9!#(B</p> - - <note type="warning"><title>$B7Y9p(B</title> - <p>$B$[$H$s$I$N%7%9%F%`$K$*$$$F$O!"(B<code>pthread</code> $B%*%W%7%g%s$,(B - $BA*$P$l$F$$$k$H!";R%W%m%;%9$,(B <code>AcceptCntl</code> mutex $B$r(B - $BJ];}$7$F$$$k$H$-$K0[>o=*N;$7$?>l9g!"%5!<%P$O%j%/%(%9%H$X$N1~Ez$r(B - $BDd;_$7$F$7$^$$$^$9!#$3$l$,H/@8$7$?>l9g$O!"%5!<%P$rI|5l$5$;$k$?$a$K$O(B - $B<jF0$G:F5/F0$5$;$kI,MW$,$"$j$^$9!#(B</p> - - <p>Solaris $B$ONc30$G!"(BApache $B$b;HMQ$7$F$$$k!";R%W%m%;%9$,(B mutex $B$r(B - $BJ];}$7$F0[>o=*N;$7$?8e$K(B mutex $B$rI|5l$5$;$k$?$a$N5!9=$rDs6!$r$7$F$$$^$9!#(B</p> - <p>$B8f;HMQ$N%7%9%F%`$,(B <code>pthread_mutexattr_setrobust_np()</code> $B4X?t$r(B - $B<BAu$7$F$$$k>l9g$O!"(B<code>pthread</code> $B%*%W%7%g%s$r0BA4$K;HMQ$G$-$k(B - $B2DG=@-$,$"$j$^$9!#(B</p> + <p>コンパイル時にシステムのデフォルトに選ばれたものが何かを見たい場合は、 + <directive module="core">LogLevel</directive> を <code>debug</code> + に設定するとよいでしょう。デフォルトの <directive>AcceptMutex</directive> + が <directive module="core">ErrorLog</directive> に書き込まれます。</p> + + <note type="warning"><title>警告</title> + <p>ほとんどのシステムにおいては、<code>pthread</code> オプションが + 選ばれていると、子プロセスが <code>AcceptCntl</code> mutex を + 保持しているときに異常終了した場合、サーバはリクエストへの応答を + 停止してしまいます。これが発生した場合は、サーバを復旧させるためには + 手動で再起動させる必要があります。</p> + + <p>Solaris は例外で、Apache も使用している、子プロセスが mutex を + 保持して異常終了した後に mutex を復旧させるための機構を提供をしています。</p> + <p>御使用のシステムが <code>pthread_mutexattr_setrobust_np()</code> 関数を + 実装している場合は、<code>pthread</code> オプションを安全に使用できる + 可能性があります。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>CoreDumpDirectory</name> -<description>Apache $B$,%3%"%@%s%W$9$kA0$K0\F0$r;n$_$k%G%#%l%/%H%j(B +<description>Apache がコアダンプする前に移動を試みるディレクトリ </description> <syntax>CoreDumpDirectory <var>directory</var></syntax> -<default>$B%G%U%)%k%H$N@_Dj$O@bL@J8$rFI$s$G$/$@$5$$(B</default> +<default>デフォルトの設定は説明文を読んでください</default> <contextlist><context>server config</context></contextlist> <modulelist><module>beos</module><module>leader</module> <module>mpm_winnt</module><module>perchild</module><module>prefork</module> <module>threadpool</module><module>worker</module></modulelist> <usage> - <p>Apache $B$,%3%"%@%s%W$9$kA0$K0\F0$r;n$_$k%G%#%l%/%H%j$r@)8f$7$^$9!#(B - $B%G%U%)%k%HCM$O(B <directive module="core">ServerRoot</directive> - $B%G%#%l%/%H%j$G$9$,!"$3$N%G%#%l%/%H%j$O%5!<%P$N<B9T$5$l$F$$$k%f!<%68"8B$G(B - $B=q$-9~$_2DG=$G$"$k$Y$-$G$O$J$$$N$G!"DL>o$O%3%"%@%s%W$O=q$-9~$^$l$^$;$s!#(B - $B%G%P%C%0$N$?$a$K%3%"%@%s%W$,I,MW$G$"$l$P!"(B - $B$3$N%G%#%l%/%F%#%V$r;H$C$FB>$N0LCV$K%3%"%@%s%W$r=q$-=P$9$h$&$K$G$-$^$9!#(B</p> - - <note><title>Linux $B$G$N%3%"%@%s%W(B</title> - <p>Apache $B$,(B root $B$H$7$F5/F0$5$l$F!"JL$N%f!<%6$N8"8B$K0J9_$7$?>l9g$O(B - Linux $B$N%+!<%M%k$O%G%#%l%/%H%j$,%W%m%;%9$N8"8B$G=q$-9~$_2DG=$J>l9g$G$5$($b(B - $B%3%"%@%s%W$r(B<em>$BL58z(B</em>$B$K$7$^$9!#(BApache (2.0.46 $B0J9_(B) $B$O(B - Linux 2.4 $B0J9_$G$O%3%"%@%s%W$r9T$J$&$h$&$K:F;XDj$7$^$9$,!"$=$l$O(B - <directive>CoreDumpDirectory</directive> $B$rL@<(E*$K@_Dj$7$?$H$-$K(B - $B8B$j$^$9!#(B</p> + <p>Apache がコアダンプする前に移動を試みるディレクトリを制御します。 + デフォルト値は <directive module="core">ServerRoot</directive> + ディレクトリですが、このディレクトリはサーバの実行されているユーザ権限で + 書き込み可能であるべきではないので、通常はコアダンプは書き込まれません。 + デバッグのためにコアダンプが必要であれば、 + このディレクティブを使って他の位置にコアダンプを書き出すようにできます。</p> + + <note><title>Linux でのコアダンプ</title> + <p>Apache が root として起動されて、別のユーザの権限に以降した場合は + Linux のカーネルはディレクトリがプロセスの権限で書き込み可能な場合でさえも + コアダンプを<em>無効</em>にします。Apache (2.0.46 以降) は + Linux 2.4 以降ではコアダンプを行なうように再指定しますが、それは + <directive>CoreDumpDirectory</directive> を明示的に設定したときに + 限ります。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>EnableExceptionHook</name> -<description>$B%/%i%C%7%e$N8e$KNc30%O%s%I%i$r<B9T$9$k%U%C%/$rM-8z$K$9$k(B</description> +<description>クラッシュの後に例外ハンドラを実行するフックを有効にする</description> <syntax>EnableExceptionHook On|Off</syntax> <default>EnableExceptionHook Off</default> <contextlist><context>server config</context></contextlist> <modulelist><module>leader</module><module>perchild</module> <module>prefork</module><module>threadpool</module> <module>worker</module></modulelist> -<compatibility>2.0.49 $B0J9_(B</compatibility> +<compatibility>2.0.49 以降</compatibility> <usage> - <p>$B0BA4>e$NM}M3$+$i!"(B<code>--enable-exception-hook</code> configure - $B%*%W%7%g%s$rM-8z$K$7$?>l9g$K$N$_!"$3$N%G%#%l%/%F%#%V$rMxMQ$G$-$^$9!#(B - $B30It%b%8%e!<%k$r%W%i%0%$%s$7$F!";R$,%/%i%C%7%e$7$?8e$K2?$+<B9T$G$-$k$h$&$J(B - $B%U%C%/$rM-8z$K$7$^$9!#(B</p> + <p>安全上の理由から、<code>--enable-exception-hook</code> configure + オプションを有効にした場合にのみ、このディレクティブを利用できます。 + 外部モジュールをプラグインして、子がクラッシュした後に何か実行できるような + フックを有効にします。</p> - <p>$B$3$N$h$&$J30It%b%8%e!<%k$O!"4{$KFs$DB8:_$7$F$$$F!"(B - <code>mod_whatkilledus</code> $B$H(B <code>mod_backtrace</code> - $B$,$3$N%U%C%/$r3hMQ$7$^$9!#$3$l$i$N>\:Y$K$D$$$F$O(B Jeff Trawick - $B$5$s$N(B <a href="http://www.apache.org/~trawick/exception_hook.html" - >EnableExceptionHook site</a> $B$r;2>H$7$F$/$@$5$$!#(B</p> + <p>このような外部モジュールは、既に二つ存在していて、 + <code>mod_whatkilledus</code> と <code>mod_backtrace</code> + がこのフックを活用します。これらの詳細については Jeff Trawick + さんの <a href="http://www.apache.org/~trawick/exception_hook.html" + >EnableExceptionHook site</a> を参照してください。</p> </usage> </directivesynopsis> <directivesynopsis> <name>GracefulShutdownTimeout</name> -<description>$B2:$d$+$JDd;_$r$+$1$?8e!"=*N;$9$k$^$GBT$D;~4V(B</description> +<description>穏やかな停止をかけた後、終了するまで待つ時間</description> <syntax>GracefulShutDownTimeout <var>seconds</var></syntax> <default>GracefulShutDownTimeout 0</default> <contextlist><context>server config</context></contextlist> <modulelist><module>prefork</module><module>worker</module> <module>event</module></modulelist> -<compatibility>2.2 $B0J9_(B</compatibility> +<compatibility>2.2 以降</compatibility> <usage> - <p><directive>GracefulShutdownTimeout</directive> $B$K$O(B - $B%5!<%P!<$,(B "graceful-stop" $B%7%0%J%k$r<u$1<h$C$F$+$i8=:_$N(B - $B%j%/%(%9%H$N=hM}$r:GBg$G2?IC4VB3$1$k$+$r;XDj$7$^$9!#(B</p> + <p><directive>GracefulShutdownTimeout</directive> には + サーバーが "graceful-stop" シグナルを受け取ってから現在の + リクエストの処理を最大で何秒間続けるかを指定します。</p> - <p>$B$3$NCM$r%<%m$K@_Dj$9$k$H!"=hM}Cf$H$7$F;D$C$F$$$k%j%/%(%9%H$,(B - $BA4$F40N;$9$k$^$G%5!<%P!<$O=*N;$7$^$;$s!#(B</p> + <p>この値をゼロに設定すると、処理中として残っているリクエストが + 全て完了するまでサーバーは終了しません。</p> </usage> </directivesynopsis> <directivesynopsis> <name>Group</name> -<description>$B%j%/%(%9%H$K1~Ez$9$k:]$K=jB0$9$k%0%k!<%W(B</description> +<description>リクエストに応答する際に所属するグループ</description> <syntax>Group <var>unix-group</var></syntax> <default>Group #-1</default> <contextlist><context>server config</context></contextlist> <modulelist><module>beos</module><module>leader</module> <module>mpmt_os2</module><module>perchild</module><module>prefork</module> <module>threadpool</module><module>worker</module></modulelist> -<compatibility>Apache 2.0 $B0J9_$G!"%0%m!<%P%k@_Dj$G$N$_M-8z$G$9!#(B</compatibility> +<compatibility>Apache 2.0 以降で、グローバル設定でのみ有効です。</compatibility> <usage> - <p><directive>Group</directive> $B%G%#%l%/%F%#%V$G!"(B - $B%j%/%(%9%H$K1~Ez$9$k:]$K=jB0$7$F$*$/%0%k!<%W$r@_Dj$7$^$9!#(B - $B$3$N%G%#%l%/%F%#%V$r;HMQ$9$k$?$a$K$O!"(B - $B%5!<%P$O:G=i$K(B <code>root</code> $B8"8B$G5/F0$5$l$F$$$kI,MW$,$"$j$^$9!#(B - $BHs(B root $B%f!<%6$G%5!<%P$r5/F0$7$?>l9g$O!";XDj$7$?%0%k!<%W$KJQ2=$G$-$:$K!"(B - $B7k2LE*$K5/F0$7$?%f!<%6$NB0$9$k%0%k!<%W$G<B9T$5$l$k$3$H$K$J$j$^$9!#(B - <var>unix-group</var> $B$O<!$N$&$A$N$$$:$l$+$G$9(B:</p> + <p><directive>Group</directive> ディレクティブで、 + リクエストに応答する際に所属しておくグループを設定します。 + このディレクティブを使用するためには、 + サーバは最初に <code>root</code> 権限で起動されている必要があります。 + 非 root ユーザでサーバを起動した場合は、指定したグループに変化できずに、 + 結果的に起動したユーザの属するグループで実行されることになります。 + <var>unix-group</var> は次のうちのいずれかです:</p> <dl> - <dt>$B%0%k!<%WL>(B</dt> - <dd>$B%0%k!<%W$rL>A0$G;2>H$7$^$9(B</dd> + <dt>グループ名</dt> + <dd>グループを名前で参照します</dd> - <dt><code>#</code> $B$KB3$$$F%0%k!<%WHV9f(B</dt> - <dd>$B%0%k!<%W$rHV9f$G;2>H$7$^$9!#(B</dd> + <dt><code>#</code> に続いてグループ番号</dt> + <dd>グループを番号で参照します。</dd> </dl> - <example><title>$BNc(B</title> + <example><title>例</title> Group www-group </example> - <p>$B%5!<%P$r<B9T$9$k$?$a$KFCDj$N?7$7$$%0%k!<%W$r@_Dj$9$k$3$H$r(B - $B$*A&$a$7$^$9!#(B<code>nobody</code> $B$r;HMQ$9$k4IM}<T$b$$$^$9$,!"(B - $B2DG=$G$"$C$?$jK>$^$7$$Lu$G$OI,$:$7$b$"$j$^$;$s!#(B</p> + <p>サーバを実行するために特定の新しいグループを設定することを + お薦めします。<code>nobody</code> を使用する管理者もいますが、 + 可能であったり望ましい訳では必ずしもありません。</p> - <note type="warning"><title>$B%;%-%e%j%F%#(B</title> - <p>$B@53N$K$I$s$J$3$H$r$d$C$F$$$k$N$+!"$=$N4m81@-$rCN$i$J$$$G!"(B - <directive>Group</directive> ($B$d(B <directive - module="mpm_common">User</directive>) $B$r(B - <code>root</code> $B$K(B $B@_Dj$7$J$$$G$/$@$5$$!#(B</p> + <note type="warning"><title>セキュリティ</title> + <p>正確にどんなことをやっているのか、その危険性を知らないで、 + <directive>Group</directive> (や <directive + module="mpm_common">User</directive>) を + <code>root</code> に 設定しないでください。</p> </note> - <p>$BFC5-;v9`(B: $B$3$N%G%#%l%/%F%#%V$r(B + <p>特記事項: このディレクティブを <directive module="core" type="section">VirtualHost</directive> - $B$G;HMQ$9$k$3$H$O%5%]!<%H$5$l$J$/$J$j$^$7$?!#(BApache 2.0 $B$G(B - <program>suexec</program> $B$r@_Dj$7$?$$>l9g$O!"(B + で使用することはサポートされなくなりました。Apache 2.0 で + <program>suexec</program> を設定したい場合は、 <directive module="mod_suexec">SuexecUserGroup</directive> - $B$r;HMQ$7$F$/$@$5$$!#(B</p> + を使用してください。</p> - <note><title>$BCm0U(B</title> - <p><directive>Group</directive> $B%G%#%l%/%F%#%V$O(B - <module>beos</module> $B$H(B <module>mpmt_os2</module> MPM - $B$K$bB8:_$7$^$9$,!"<B<AE*$KL58z$G!"8_49@-$N$?$a$@$1$KB8:_$7$^$9!#(B</p> + <note><title>注意</title> + <p><directive>Group</directive> ディレクティブは + <module>beos</module> と <module>mpmt_os2</module> MPM + にも存在しますが、実質的に無効で、互換性のためだけに存在します。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>PidFile</name> -<description>$B%G!<%b%s$N%W%m%;%9(B ID -$B$r%5!<%P$,5-O?$9$k$?$a$N%U%!%$%k(B</description> +<description>デーモンのプロセス ID +をサーバが記録するためのファイル</description> <syntax>PidFile <var>filename</var></syntax> <default>PidFile logs/httpd.pid</default> <contextlist><context>server config</context></contextlist> @@ -266,40 +266,40 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <module>threadpool</module><module>worker</module></modulelist> <usage> - <p><directive>PidFile</directive> $B%G%#%l%/%F%#%V$G!"(B - $B%G!<%b%s$N%W%m%;%9(B ID $B$r%5!<%P$,5-O?$9$k%U%!%$%k$r@_Dj$7$^$9!#(B - $B%U%!%$%kL>$,@dBP%Q%9$G$J$$>l9g$O!"(B + <p><directive>PidFile</directive> ディレクティブで、 + デーモンのプロセス ID をサーバが記録するファイルを設定します。 + ファイル名が絶対パスでない場合は、 <directive module="core">ServerRoot</directive> - $B$+$i$NAjBPE*$J$b$N$H$7$F07$o$l$^$9!#(B</p> + からの相対的なものとして扱われます。</p> - <example><title>$BNc(B</title> + <example><title>例</title> PidFile /var/run/apache.pid </example> - <p>$B%5!<%P$,(B <directive module="core">ErrorLog</directive> - $B$d(B <directive module="mod_log_config">TransferLog</directive> - $B$rJD$8$F3+$-D>$7$?$j!"@_Dj%U%!%$%k$r(B - $B:FFI9~$7$?$j$5$;$k$?$a$K!"%5!<%P$K%7%0%J%k$rAw$k$3$H$,$G$-$k$H(B - $BJXMx$J$3$H$,$"$j$^$9!#(B - $B$3$l$O(B SIGHUP (kill -1) $B%7%0%J%k$r(B <directive>PidFile</directive> - $B$K=q$+$l$F$$$k%W%m%;%9(B ID $B$KAw$k$3$H$G$G$-$^$9!#(B</p> + <p>サーバが <directive module="core">ErrorLog</directive> + や <directive module="mod_log_config">TransferLog</directive> + を閉じて開き直したり、設定ファイルを + 再読込したりさせるために、サーバにシグナルを送ることができると + 便利なことがあります。 + これは SIGHUP (kill -1) シグナルを <directive>PidFile</directive> + に書かれているプロセス ID に送ることでできます。</p> - <p><directive>PidFile</directive> $B$K$O!"%m%0%U%!%$%k$N@_CV0LCV$d(B - <a href="../misc/security_tips.html#serverroot">$B%;%-%e%j%F%#(B</a> - $B$HA4$/F1$8Cm0UE@$,$"$j$^$9!#(B</p> + <p><directive>PidFile</directive> には、ログファイルの設置位置や + <a href="../misc/security_tips.html#serverroot">セキュリティ</a> + と全く同じ注意点があります。</p> - <note><title>$BCm0U(B</title> - <p>Apache 2 $B$G$O!"(B + <note><title>注意</title> + <p>Apache 2 では、 <program>apachectl</program> - $B%9%/%j%W%H$N$_$r;HMQ$7$F%5!<%P$N(B ($B:F(B) $B5/F0$dDd;_$r(B - $B9T$J$&$3$H$r?d>)$7$F$$$^$9!#(B</p> + スクリプトのみを使用してサーバの (再) 起動や停止を + 行なうことを推奨しています。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>Listen</name> -<description>$B%5!<%P$,(B listen $B$9$k(BIP $B%"%I%l%9$H%]!<%HHV9f(B</description> +<description>サーバが listen するIP アドレスとポート番号</description> <syntax>Listen [<var>IP-address</var>:]<var>portnumber</var> [<var>protocol</var>]</syntax> <contextlist><context>server config</context></contextlist> <modulelist><module>beos</module><module>leader</module> @@ -308,85 +308,85 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <module>prefork</module><module>threadpool</module><module>worker</module> <module>event</module> </modulelist> -<compatibility>Apache 2.0 $B$+$iI,?\%G%#%l%/%F%#%V!#(B<var>protocol</var> -$B0z?t$O(B 2.1.5 $B$GDI2C!#(B</compatibility> +<compatibility>Apache 2.0 から必須ディレクティブ。<var>protocol</var> +引数は 2.1.5 で追加。</compatibility> <usage> - <p><directive>Listen</directive> $B%G%#%l%/%F%#%V$O(B Apache - $B$,FCDj$N(B IP $B%"%I%l%9$d%]!<%HHV9f$@$1$r(B listen $B$9$k$h$&$K;XDj$7$^$9!#(B - $B%G%U%)%k%H$G$OA4$F$N(B IP $B%$%s%?!<%U%'!<%9$N%j%/%(%9%H$K1~Ez$7$^$9!#(B - <directive>Listen</directive> $B%G%#%l%/%F%#%V$O(B - $B8=:_$OI,?\$N%G%#%l%/%F%#%V$H$J$j$^$7$?!#(B - $B$b$7@_Dj%U%!%$%k$K$J$1$l$P!"%5!<%P$O5/F0$K<:GT$7$^$9!#(B - $B$3$l$O0JA0$N%P!<%8%g%s$N(B Apache $B$+$iJQ99$N$"$C$?ItJ,$G$9!#(B</p> - - <p><directive>Listen</directive> $B%G%#%l%/%F%#%V$G$O!"FCDj$N%]!<%H$"$k$$$O(B - $B%"%I%l%9$H%]!<%H$NAH$_9g$o$;$+$iF~$C$F$/$k%j%/%(%9%H$KBP$7$F(B - $B1~Ez$9$k$h$&$K;XDj$7$^$9!#(B - $B$b$7%]!<%HHV9f$@$1$,;XDj$5$l$?>l9g$O!"%5!<%P$OA4%$%s%?!<%U%'!<%9$N(B - $B;XDj$5$l$?%]!<%HHV9f$KBP$7$F(B listen $B$7$^$9!#(B - IP $B%"%I%l%9$,%]!<%H$H$H$b$K;XDj$5$l$?>l9g$O!"(B - $B%5!<%P$O;XDj$5$l$?%]!<%H$H%$%s%?!<%U%'!<%9$KBP$7$F(B listen - $B$7$^$9!#(B</p> - - <p>$BJ#?t$N%"%I%l%9$H%]!<%H$KBP$7$F(B listen $B$9$k$h$&$K!"(B - $BJ#?t$N(B <directive>Listen</directive> $B%G%#%l%/%F%#%V$r;H$&$3$H$b$G$-$^$9!#(B - $B%5!<%P$ONs5s$5$l$?%"%I%l%9$H%]!<%HA4$F$+$i$N%j%/%(%9%H$KBP$7$F(B - $B1~Ez$7$^$9!#(B</p> - - <p>$BNc$($P!"%5!<%P$,(B 80 $BHV%]!<%H$H(B 8000 $BHV%]!<%H$NN>J}$N(B - $B%3%M%/%7%g%s$r<u$1F~$l$k>l9g$O!"<!$N$h$&$K$7$^$9!#(B</p> + <p><directive>Listen</directive> ディレクティブは Apache + が特定の IP アドレスやポート番号だけを listen するように指定します。 + デフォルトでは全ての IP インターフェースのリクエストに応答します。 + <directive>Listen</directive> ディレクティブは + 現在は必須のディレクティブとなりました。 + もし設定ファイルになければ、サーバは起動に失敗します。 + これは以前のバージョンの Apache から変更のあった部分です。</p> + + <p><directive>Listen</directive> ディレクティブでは、特定のポートあるいは + アドレスとポートの組み合わせから入ってくるリクエストに対して + 応答するように指定します。 + もしポート番号だけが指定された場合は、サーバは全インターフェースの + 指定されたポート番号に対して listen します。 + IP アドレスがポートとともに指定された場合は、 + サーバは指定されたポートとインターフェースに対して listen + します。</p> + + <p>複数のアドレスとポートに対して listen するように、 + 複数の <directive>Listen</directive> ディレクティブを使うこともできます。 + サーバは列挙されたアドレスとポート全てからのリクエストに対して + 応答します。</p> + + <p>例えば、サーバが 80 番ポートと 8000 番ポートの両方の + コネクションを受け入れる場合は、次のようにします。</p> <example> Listen 80<br /> Listen 8000 </example> - <p>$BFs$D$NFCDj$N%$%s%?!<%U%'!<%9$H%]!<%HHV9f$+$i$N%3%M%/%7%g%s$r(B - $B<u$1F~$l$k$h$&$K$9$k$K$O!"<!$N$h$&$K$7$^$9!#(B</p> + <p>二つの特定のインターフェースとポート番号からのコネクションを + 受け入れるようにするには、次のようにします。</p> <example> Listen 192.170.2.1:80<br /> Listen 192.170.2.5:8000 </example> - <p>IPv6 $B%"%I%l%9$O3Q3g8L$G0O$^$J$1$l$P$J$j$^$;$s!#(B - $BNc$($P<!$NNc$N$h$&$K$G$9!#(B</p> + <p>IPv6 アドレスは角括弧で囲まなければなりません。 + 例えば次の例のようにです。</p> <example> Listen [2001:db8::a00:20ff:fea7:ccea]:80 </example> - <p><var>protocol</var> $B%*%W%7%g%s0z?t$ODL>o$N@_Dj$G$OI,MW$"$j$^$;$s!#(B - $BL5;XDj$N>l9g!"(B443 $BHV%]!<%H$K$O(B <code>https</code> $B$,!"B>$N%]!<%H$K$O(B - <code>http</code> $B$,%G%U%)%k%HCM$H$7$F;HMQ$5$l$^$9!#(B - protocol $B;XDj$O!"$I$N%b%8%e!<%k$,%j%/%(%9%H$r=hM}$9$k$+$r7hDj$7!"(B + <p><var>protocol</var> オプション引数は通常の設定では必要ありません。 + 無指定の場合、443 番ポートには <code>https</code> が、他のポートには + <code>http</code> がデフォルト値として使用されます。 + protocol 指定は、どのモジュールがリクエストを処理するかを決定し、 <directive module="core">AcceptFilter</directive> - $B$K$h$k%W%m%H%3%kFCM-$N:GE,2=$r9T$&$h$&$K$7$^$9!#(B</p> + によるプロトコル特有の最適化を行うようにします。</p> - <p>$BHsI8=`$J%]!<%H$G1?MQ$7$F$$$k:]$K$N$_(B protocol $B;XDj$,I,MW$K$J$j$^$9!#(B - $B$?$H$($P(B <code>https</code> $B$J%5%$%H$r(B 8443 $BHV%]!<%H$G1?MQ$7$F$$$k>l9g(B :</p> + <p>非標準なポートで運用している際にのみ protocol 指定が必要になります。 + たとえば <code>https</code> なサイトを 8443 番ポートで運用している場合 :</p> <example> Listen 192.170.2.1:8443 https </example> - <note><title>$B%(%i!<>r7o(B</title> - $BF10l(B IP $B%"%I%l%9$H%]!<%H$NAH$K!"J#?t$N(B <directive>Listen</directive> - $B%G%#%l%/%F%#%V$r;XDj$7$F$7$^$&$H!"(B<code>Address already in use</code> - $B$H$$$&%(%i!<%a%C%;!<%8$r<u$1$k$3$H$K$J$j$^$9!#(B + <note><title>エラー条件</title> + 同一 IP アドレスとポートの組に、複数の <directive>Listen</directive> + ディレクティブを指定してしまうと、<code>Address already in use</code> + というエラーメッセージを受けることになります。 </note> </usage> -<seealso><a href="../dns-caveats.html">DNS $B$NLdBj(B</a></seealso> +<seealso><a href="../dns-caveats.html">DNS の問題</a></seealso> <seealso><a href="../bind.html">Apache -$B$,;HMQ$9$k%"%I%l%9$H%]!<%H$N@_Dj(B</a></seealso> +が使用するアドレスとポートの設定</a></seealso> </directivesynopsis> <directivesynopsis> <name>ListenBackLog</name> -<description>$BJ]N1>uBV$N%3%M%/%7%g%s$N%-%e!<$N:GBgD9(B</description> +<description>保留状態のコネクションのキューの最大長</description> <syntax>ListenBacklog <var>backlog</var></syntax> <default>ListenBacklog 511</default> <contextlist><context>server config</context></contextlist> @@ -396,24 +396,24 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <module>threadpool</module><module>worker</module></modulelist> <usage> - <p>$BJ]N1>uBV$N%3%M%/%7%g%s$N%-%e!<$N:GBgD9$G$9!#(B - $B0lHLE*$K$OD4@0$9$kI,MW$O$"$j$^$;$s$7!"D4@0$OK>$^$7$/$"$j$^$;$s!#(B - $B$7$+$7!"(BTCP SYN $B%U%i%C%I%"%?%C%/$N>u672<$K$*$+$l$k>l9g$K!"(B - $BA}$d$7$?J}$,K>$^$7$$%7%9%F%`$b$"$j$^$9!#(B - <code>listen(2)</code> $B%7%9%F%`%3!<%k$N%P%C%/%m%0%Q%i%a!<%?$r(B - $B$4Mw2<$5$$!#(B</p> - - <p>$B$3$NCM$O(B OS $B$K$h$j!">.$5$J?t$KM^$($i$l$^$9!#(B - $BCM$O(B OS $BKh$K0[$J$C$F$$$^$9!#$^$?B?$/$N(B OS $B$G$O!"(B - $B%P%C%/%m%0$H$7$F;XDj$5$l$F$$$kCM$A$g$&$I$^$G;H$C$F$$$k$o$1$G$O$J$/!"(B - $B@_Dj$5$l$F$$$kCM$K4p$E$$$F(B ($BDL>o$O@_DjCM$h$j$bBg$-$JCM$r(B) - $B;H$C$F$$$k$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + <p>保留状態のコネクションのキューの最大長です。 + 一般的には調整する必要はありませんし、調整は望ましくありません。 + しかし、TCP SYN フラッドアタックの状況下におかれる場合に、 + 増やした方が望ましいシステムもあります。 + <code>listen(2)</code> システムコールのバックログパラメータを + ご覧下さい。</p> + + <p>この値は OS により、小さな数に抑えられます。 + 値は OS 毎に異なっています。また多くの OS では、 + バックログとして指定されている値ちょうどまで使っているわけではなく、 + 設定されている値に基づいて (通常は設定値よりも大きな値を) + 使っていることに注意してください。</p> </usage> </directivesynopsis> <directivesynopsis> <name>LockFile</name> -<description>$B<uIU$rD>Ns2=$9$k$?$a$N%m%C%/%U%!%$%k$N0LCV(B<em>($BHs?d>)(B)</em></description> +<description>受付を直列化するためのロックファイルの位置<em>(非推奨)</em></description> <syntax>LockFile <var>filename</var></syntax> <default>LockFile logs/accept.lock</default> <contextlist><context>server config</context></contextlist> @@ -423,27 +423,27 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <usage> <p><directive module="mpm_common">AcceptMutex</directive> - $B$,(B <code>fcntl</code> $B$d(B <code>flock</code> - $B$K@_Dj$5$l$F;HMQ$5$l$F$$$k>l9g$K!";HMQ$5$l$k%m%C%/%U%!%$%k$X$N%Q%9$r(B - <directive>LockFile</directive> $B%G%#%l%/%F%#%V$G@_Dj$7$^$9!#(B - $B$3$N%G%#%l%/%F%#%V$ODL>o$O$=$N$^$^$K$7$F$*$-$^$9!#(B - $B<g$K(B <code>logs</code> $B%G%#%l%/%H%j$,(B NFS - $B$G%^%&%s%H$5$l$F$$$k>l9g$J$I$KCM$rJQ$($^$9!#(B - $B$J$<$J$i(B<strong>$B%m%C%/%U%!%$%k$O%m!<%+%k%G%#%9%/$K(B - $BJ]B8$5$l$J$1$l$P$J$i$J$$(B</strong>$B$+$i$G$9!#(B - $B%a%$%s%5!<%P%W%m%;%9$N(B PID $B$,%U%!%$%kL>$K<+F0E*$KIU2C$5$l$^$9!#(B</p> - - <note type="warning"><title>$B%;%-%e%j%F%#(B</title> + が <code>fcntl</code> や <code>flock</code> + に設定されて使用されている場合に、使用されるロックファイルへのパスを + <directive>LockFile</directive> ディレクティブで設定します。 + このディレクティブは通常はそのままにしておきます。 + 主に <code>logs</code> ディレクトリが NFS + でマウントされている場合などに値を変えます。 + なぜなら<strong>ロックファイルはローカルディスクに + 保存されなければならない</strong>からです。 + メインサーバプロセスの PID がファイル名に自動的に付加されます。</p> + + <note type="warning"><title>セキュリティ</title> <p><code>/var/tmp</code> - $B$H$$$C$?!"C/$G$b=q$-9~$a$k%G%#%l%/%H%j$K%U%!%$%k$r(B - <em>$BCV$+$J$$(B</em>$BJ}$,$h$$$G$9!#$J$<$J$i!"%5!<%P$,5/F0;~$K:n@.$9$k(B - $B%m%C%/%U%!%$%k$N:n@.<+BN$rK832$9$k$3$H$K$h$C$F!"(B - $BC/$G$b%5!<%S%95qH]%"%?%C%/$r0z$-5/$3$9$3$H$,$G$-$k$+$i$G$9!#(B</p> + といった、誰でも書き込めるディレクトリにファイルを + <em>置かない</em>方がよいです。なぜなら、サーバが起動時に作成する + ロックファイルの作成自体を妨害することによって、 + 誰でもサービス拒否アタックを引き起こすことができるからです。</p> </note> - <note type="warning"><title>$BHs?d>)(B</title> - <p>$B$3$N%G%#%l%/%F%#%V$OHs?d>)$G$9!#(B <directive + <note type="warning"><title>非推奨</title> + <p>このディレクティブは非推奨です。 <directive module="mpm_common">AcceptMutex</directive> - $B%G%#%l%/%F%#%V$GGSB>=hM}$NJ}K!$N;XDj$H$H$b$K%m%C%/%U%!%$%k$N>l=j$b;XDj$7$F$/$@$5$$!#(B</p> + ディレクティブで排他処理の方法の指定とともにロックファイルの場所も指定してください。</p> </note> </usage> @@ -452,52 +452,52 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <directivesynopsis> <name>MaxClients</name> -<description>$B%j%/%(%9%H$K1~Ez$9$k$?$a$K:n@.$5$l$k(B -$B;R%W%m%;%9$N:GBg8D?t(B</description> +<description>リクエストに応答するために作成される +子プロセスの最大個数</description> <syntax>MaxClients <var>number</var></syntax> -<default>$B>\:Y$O;HMQK!$r$4Mw2<$5$$!#(B</default> +<default>詳細は使用法をご覧下さい。</default> <contextlist><context>server config</context></contextlist> <modulelist><module>beos</module><module>leader</module> <module>prefork</module><module>threadpool</module><module>worker</module> </modulelist> <usage> - <p><directive>MaxClients</directive> $B%G%#%l%/%F%#%V$O!"(B - $B1~Ez$9$k$3$H$N$G$-$kF1;~%j%/%(%9%H?t$r@_Dj$7$^$9!#(B - <directive>MaxClients</directive> $B@)8B?t$r1[$($k%3%M%/%7%g%s$ODL>o!"(B + <p><directive>MaxClients</directive> ディレクティブは、 + 応答することのできる同時リクエスト数を設定します。 + <directive>MaxClients</directive> 制限数を越えるコネクションは通常、 <directive module="mpm_common">ListenBacklog</directive> - $B%G%#%l%/%F%#%V$G@_Dj$7$??t$^$G%-%e!<$KF~$j$^$9!#(B - $BB>$N%j%/%(%9%H$N:G8e$^$GC#$7$F;R%W%m%;%9$,6u$/$H!"(B - $B<!$N%3%M%/%7%g%s$K1~Ez$7$^$9!#(B</p> - - <p>$B%9%l%C%I$rMQ$$$J$$%5!<%P(B (<em>$B$9$J$o$A(B</em> <module>prefork</module>) - $B$G$O!"(B<directive>MaxClients</directive> - $B$O!"%j%/%(%9%H$K1~Ez$9$k$?$a$K5/F0$5$l$k(B - $B;R%W%m%;%9$N:GBg?t$H$J$j$^$9!#(B - $B%G%U%)%k%HCM$O(B <code>256</code> $B$G!"$3$l$rA}2C$5$;$?$$>l9g$O!"(B + ディレクティブで設定した数までキューに入ります。 + 他のリクエストの最後まで達して子プロセスが空くと、 + 次のコネクションに応答します。</p> + + <p>スレッドを用いないサーバ (<em>すなわち</em> <module>prefork</module>) + では、<directive>MaxClients</directive> + は、リクエストに応答するために起動される + 子プロセスの最大数となります。 + デフォルト値は <code>256</code> で、これを増加させたい場合は、 <directive module="mpm_common">ServerLimit</directive> - $B$NCM$bA}2C$5$;$kI,MW$,$"$j$^$9!#(B</p> + の値も増加させる必要があります。</p> - <p>$B%9%l%C%I$rMQ$$$k%5!<%P$d!"%O%$%V%j%C%I%5!<%P(B (<em>$B$9$J$o$A(B</em> + <p>スレッドを用いるサーバや、ハイブリッドサーバ (<em>すなわち</em> <module>beos</module> <module>worker</module>) - $B$G$O!"(B<directive>MaxClients</directive> - $B$O!"%/%i%$%"%s%H$K1~Ez$G$-$k%9%l%C%I$NAm?t$r@)8B$7$^$9!#(B - <module>beos</module> $B$G$N%G%U%)%k%HCM$O(B <code>50</code> $B$G$9!#(B - $B%O%$%V%j%C%I(B MPM $B$G$N%G%U%)%k%HCM$O(B <code>16</code> + では、<directive>MaxClients</directive> + は、クライアントに応答できるスレッドの総数を制限します。 + <module>beos</module> でのデフォルト値は <code>50</code> です。 + ハイブリッド MPM でのデフォルト値は <code>16</code> <directive module="mpm_common">ServerLimit</directive> - $B$N(B <code>25</code> $BG\(B (<directive - module="mpm_common">ThreadsPerChild</directive>) $B$G$9!#(B + の <code>25</code> 倍 (<directive + module="mpm_common">ThreadsPerChild</directive>) です。 <directive>MaxClients</directive> - $B$r(B 16 $B%W%m%;%90J>eI,MW$JCM$^$GA}2C$5$;$?$$>l9g$O!"(B + を 16 プロセス以上必要な値まで増加させたい場合は、 <directive module="mpm_common">ServerLimit</directive> - $B$bA}2C$5$;$kI,MW$,$"$j$^$9!#(B</p> + も増加させる必要があります。</p> </usage> </directivesynopsis> <directivesynopsis> <name>MaxMemFree</name> -<description><code>free()</code> $B$,8F$P$l$J$$8B$j!"(B -$B<g%a%b%j%"%m%1!<%?$,J];}$7B3$1$i$l$k%a%b%j$N:GBgNL(B</description> +<description><code>free()</code> が呼ばれない限り、 +主メモリアロケータが保持し続けられるメモリの最大量</description> <syntax>MaxMemFree <var>KBytes</var></syntax> <default>MaxMemFree 0</default> <contextlist><context>server config</context></contextlist> @@ -506,16 +506,16 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <module>threadpool</module><module>worker</module><module>mpm_winnt</module></modulelist> <usage> - <p><directive>MaxMemFree</directive> $B%G%#%l%/%F%#%V$O(B - <code>free()</code> $B$,8F$P$l$J$$8B$j!"(B - $B<g%"%m%1!<%?$,J];}$G$-$k6u$N%a%b%j$N:GBgCM$r%-%m%P%$%HC10L$G@_Dj$7$^$9!#(B - $B@_Dj$5$l$F$$$J$$$+!"Nm$K@_Dj$5$l$F$$$k$H$-$O!"L5@)8B$K$J$j$^$9!#(B</p> + <p><directive>MaxMemFree</directive> ディレクティブは + <code>free()</code> が呼ばれない限り、 + 主アロケータが保持できる空のメモリの最大値をキロバイト単位で設定します。 + 設定されていないか、零に設定されているときは、無制限になります。</p> </usage> </directivesynopsis> <directivesynopsis> <name>MaxRequestsPerChild</name> -<description>$B8D!9$N;R%5!<%P$,2TF/Cf$K07$&%j%/%(%9%H?t$N>e8B(B</description> +<description>個々の子サーバが稼働中に扱うリクエスト数の上限</description> <syntax>MaxRequestsPerChild <var>number</var></syntax> <default>MaxRequestsPerChild 10000</default> <contextlist><context>server config</context></contextlist> @@ -525,43 +525,43 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <module>threadpool</module><module>worker</module></modulelist> <usage> - <p><directive>MaxRequestsPerChild</directive> $B%G%#%l%/%F%#%V$O!"(B - $B8D!9$N;R%5!<%P%W%m%;%9$,07$&$3$H$N$G$-$k%j%/%(%9%H$N@)8B?t$r(B - $B@_Dj$7$^$9!#(B<directive>MaxRequestsPerChild</directive> - $B8D$N%j%/%(%9%H$N8e$K!";R%W%m%;%9$O=*N;$7$^$9!#(B - <directive>MaxRequestsPerChild</directive> $B$,(B <code>0</code> - $B$K@_Dj$5$l$F$$$k>l9g$O!"%W%m%;%9$O4|8B@Z$l$K$h$j=*N;$9$k$3$H$O$"$j$^$;$s!#(B</p> - - <note><title>$B$=$NB>$N%G%U%)%k%HCM(B</title> - <p><module>mpm_netware</module> $B$H(B <module>mpm_winnt</module> - $B$G$N%G%U%)%k%HCM$O(B <code>0</code> $B$G$9!#(B</p> + <p><directive>MaxRequestsPerChild</directive> ディレクティブは、 + 個々の子サーバプロセスが扱うことのできるリクエストの制限数を + 設定します。<directive>MaxRequestsPerChild</directive> + 個のリクエストの後に、子プロセスは終了します。 + <directive>MaxRequestsPerChild</directive> が <code>0</code> + に設定されている場合は、プロセスは期限切れにより終了することはありません。</p> + + <note><title>その他のデフォルト値</title> + <p><module>mpm_netware</module> と <module>mpm_winnt</module> + でのデフォルト値は <code>0</code> です。</p> </note> <p><directive>MaxRequestsPerChild</directive> - $B$rHs%<%m$K@)8B$9$k$3$H$K$O!"Fs$D$NMxE@$,$"$j$^$9(B:</p> + を非ゼロに制限することには、二つの利点があります:</p> <ul> - <li>($B6vH/E*$J(B) $B%a%b%j!<%j!<%/$,5/$3$C$?>l9g$K(B - $B%W%m%;%9$,>CHq$9$k%a%b%j$NAmNL$r@)8B$G$-$k(B</li> + <li>(偶発的な) メモリーリークが起こった場合に + プロセスが消費するメモリの総量を制限できる</li> - <li>$B%W%m%;%9$KM-8B$N%i%$%U%?%$%`$r@_Dj$9$k$3$H$G!"(B - $B%5!<%PIi2Y$,2<$,$C$?;~$K%W%m%;%9?t$r>/$J$/$9$k$3$H$,$G$-$k(B</li> + <li>プロセスに有限のライフタイムを設定することで、 + サーバ負荷が下がった時にプロセス数を少なくすることができる</li> </ul> - <note><title>$BCm(B</title> - <p><directive module="core">KeepAlive</directive> $B%j%/%(%9%H$N>l9g$O!"(B - $B0l$DL\$N%j%/%(%9%H$@$1$,$3$N@)8B$K3:Ev$7$^$9!#(B - $B<B8zE*$K$O!"0l$D$N;R%W%m%;%9$"$?$j$N(B<em>$B%3%M%/%7%g%s(B</em>$B?t$r(B - $B@)8B$9$k$h$&$K5sF0$,JQ2=$7$^$9!#(B</p> + <note><title>注</title> + <p><directive module="core">KeepAlive</directive> リクエストの場合は、 + 一つ目のリクエストだけがこの制限に該当します。 + 実効的には、一つの子プロセスあたりの<em>コネクション</em>数を + 制限するように挙動が変化します。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>MaxSpareThreads</name> -<description>$B%"%$%I%k%9%l%C%I$N:GBg?t(B</description> +<description>アイドルスレッドの最大数</description> <syntax>MaxSpareThreads <var>number</var></syntax> -<default>$B>\:Y$O;HMQK!$r$4Mw2<$5$$!#(B</default> +<default>詳細は使用法をご覧下さい。</default> <contextlist><context>server config</context></contextlist> <modulelist><module>beos</module><module>leader</module> <module>mpm_netware</module><module>mpmt_os2</module> @@ -569,51 +569,51 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ </modulelist> <usage> - <p>$B%"%$%I%k$J%9%l%C%I$N:GBg?t$G$9!#0[$J$k(B MPM $B$G$O$=$l$>$l!"(B - $B$3$N%G%#%l%/%F%#%V$O0[$J$k<h$j07$o$lJ}$r$5$l$^$9!#(B</p> + <p>アイドルなスレッドの最大数です。異なる MPM ではそれぞれ、 + このディレクティブは異なる取り扱われ方をされます。</p> - <p><module>perchild</module> $B$G$O!"(B - $B%G%U%)%k%H$O(B <code>MaxSpareThreads 10</code> $B$G$9!#(B - $B$3$N(B MPM $B$O%"%$%I%k%9%l%C%I?t$r!"$=$l$>$l$N;R%W%m%;%9$4$H$K4F;k$7$^$9!#(B - $B;R%W%m%;%9$K%"%$%I%k%9%l%C%I$,B?$9$.$k>l9g$O!"(B - $B%5!<%P$O$=$N;R%W%m%;%9$K4^$^$l$k%9%l%C%I$r=*N;$7;O$a$^$9!#(B</p> + <p><module>perchild</module> では、 + デフォルトは <code>MaxSpareThreads 10</code> です。 + この MPM はアイドルスレッド数を、それぞれの子プロセスごとに監視します。 + 子プロセスにアイドルスレッドが多すぎる場合は、 + サーバはその子プロセスに含まれるスレッドを終了し始めます。</p> <p><module>worker</module>, <module>leader</module>, - <module>threadpool</module> $B$G$O!"(B - $B%G%U%)%k%H$O(B <code>MaxSpareThreads 250</code> $B$G$9!#(B - $B$3$N(B MPM $B$O%"%$%I%k%9%l%C%I?t$r%5!<%PA4BN$G4F;k$7$^$9!#(B - $B%5!<%P$G%"%$%I%k%9%l%C%I?t$,B?$9$.$k>l9g$O!"(B - $B$3$N?t;z$h$j$b>/$J$$?t$K$J$k$^$G;R%W%m%;%9$r=*N;$7$^$9!#(B</p> - - <p><module>mpm_netware</module> $B$G$O!"(B - $B%G%U%)%k%H$O(B <code>MaxSpareThreads 100</code> $B$G$9!#(B - $B$3$N(B MPM $B$O%7%s%0%k%W%m%;%9$G<B9T$5$l$^$9$N$G!"(B - $B%9%Z%"%9%l%C%I?t$b%5!<%PA4BN$G4*Dj$7$^$9!#(B</p> - - <p><module>beos</module> $B$H(B <module>mpmt_os2</module> $B$O(B - <module>mpm_netware</module> $B$H;w$?5sF0$r$7$^$9!#(B - <module>beos</module> $B$G$N%G%U%)%k%HCM$O(B <code>MaxSpareThreads 50</code> - $B$G$9!#(B<module>mpmt_os2</module> $B$G$N%G%U%)%k%HCM$O(B <code>10</code> - $B$G$9!#(B</p> - - <note><title>$B@)8B;v9`(B</title> - <p><directive>MaxSpareThreads</directive> $B$N<h$kCM$K$O@)8B$,$"$j$^$9!#(B - Apache $B$O<!$N5,B'$K=>$C$F<+F0E*$KJd@5$7$^$9!#(B</p> + <module>threadpool</module> では、 + デフォルトは <code>MaxSpareThreads 250</code> です。 + この MPM はアイドルスレッド数をサーバ全体で監視します。 + サーバでアイドルスレッド数が多すぎる場合は、 + この数字よりも少ない数になるまで子プロセスを終了します。</p> + + <p><module>mpm_netware</module> では、 + デフォルトは <code>MaxSpareThreads 100</code> です。 + この MPM はシングルプロセスで実行されますので、 + スペアスレッド数もサーバ全体で勘定します。</p> + + <p><module>beos</module> と <module>mpmt_os2</module> は + <module>mpm_netware</module> と似た挙動をします。 + <module>beos</module> でのデフォルト値は <code>MaxSpareThreads 50</code> + です。<module>mpmt_os2</module> でのデフォルト値は <code>10</code> + です。</p> + + <note><title>制限事項</title> + <p><directive>MaxSpareThreads</directive> の取る値には制限があります。 + Apache は次の規則に従って自動的に補正します。</p> <ul> - <li><module>perchild</module> $B$G$O!"(B - <directive>MaxSpareThreads</directive> $B$,(B + <li><module>perchild</module> では、 + <directive>MaxSpareThreads</directive> が <directive module="mpm_common">ThreadLimit</directive> - $B$HEy$7$$$+$=$l0J2<$G$"$kI,MW$,$"$j$^$9!#(B</li> + と等しいかそれ以下である必要があります。</li> - <li><module>mpm_netware</module> $B$O(B + <li><module>mpm_netware</module> は <directive module="mpm_common">MinSpareThreads</directive> - $B$h$j$bBg$-$$I,MW$,$"$j$^$9!#(B</li> + よりも大きい必要があります。</li> <li><module>leader</module>, <module>threadpool</module>, - <module>worker</module> $B$G$O!"(B - <directive module="mpm_common">MinSpareThreads</directive> $B$H(B + <module>worker</module> では、 + <directive module="mpm_common">MinSpareThreads</directive> と <directive module="mpm_common">ThreadsPerChild</directive> - $B$G7h$^$kAmOB$HEy$7$$$+Bg$-$$I,MW$,$"$j$^$9!#(B</li> + で決まる総和と等しいか大きい必要があります。</li> </ul> </note> </usage> @@ -623,10 +623,10 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <directivesynopsis> <name>MinSpareThreads</name> -<description>$B%j%/%(%9%H$K1~Ez$9$k$3$H$N$G$-$k(B -$B%"%$%I%k%9%l%C%I?t$N:G>.?t(B</description> +<description>リクエストに応答することのできる +アイドルスレッド数の最小数</description> <syntax>MinSpareThreads <var>number</var></syntax> -<default>$B>\:Y$O;HMQJ}K!$r$4Mw2<$5$$!#(B</default> +<default>詳細は使用方法をご覧下さい。</default> <contextlist><context>server config</context></contextlist> <modulelist><module>beos</module><module>leader</module> <module>mpm_netware</module><module>mpmt_os2</module> @@ -634,37 +634,37 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ </modulelist> <usage> - <p>$B%j%/%(%9%H$K1~Ez$9$k%9%l%C%I?t$N:G>.CM$G$9!#(B - $B0[$J$k(B MPM $B$G$O$=$l$>$l!"(B - $B$3$N%G%#%l%/%F%#%V$O0[$J$k<h$j07$o$lJ}$r$7$^$9!#(B</p> - - <p><module>perchild</module> $B$G$O!"(B - $B%G%U%)%k%H$O(B <code>MinSpareThreads 5</code> $B$G!"(B - $B%"%$%I%k%9%l%C%I?t$r;R%W%m%;%9Kh$K4F;k$7$^$9!#(B - $B$b$7;R%W%m%;%9$K==J,$J?t$N%9%l%C%I$,$J$1$l$P!"(B - $B%5!<%P$O$=$N;R%W%m%;%9$K?7$7$$%9%l%C%I$r:n$j;O$a$^$9!#(B - $B$G$9$+$i!"(B<directive module="perchild">NumServers</directive> - $B$r(B <code>10</code> $B$K!"(B<directive>MinSpareThreads</directive> $B$r(B - <code>5</code> $B$K$7$?>l9g$O!":G>.$G$b(B 50 $B$N%"%$%I%k%9%l%C%I$,(B - $B%7%9%F%`>e$K$"$k$3$H$K$J$j$^$9!#(B</p> + <p>リクエストに応答するスレッド数の最小値です。 + 異なる MPM ではそれぞれ、 + このディレクティブは異なる取り扱われ方をします。</p> + + <p><module>perchild</module> では、 + デフォルトは <code>MinSpareThreads 5</code> で、 + アイドルスレッド数を子プロセス毎に監視します。 + もし子プロセスに十分な数のスレッドがなければ、 + サーバはその子プロセスに新しいスレッドを作り始めます。 + ですから、<directive module="perchild">NumServers</directive> + を <code>10</code> に、<directive>MinSpareThreads</directive> を + <code>5</code> にした場合は、最小でも 50 のアイドルスレッドが + システム上にあることになります。</p> <p><module>worker</module>, <module>leader</module>, - <module>threadpool</module> $B$G$O!"(B - $B%G%U%)%k%H$O(B <code>MinSpareThreads 75</code> $B$G!"(B - $B%"%$%I%k%9%l%C%I?t$r%5!<%PA4BN$G4F;k$7$^$9!#(B - $B$b$7%5!<%P$K==J,$J?t$N%"%$%I%k%9%l%C%I$,$J$1$l$P!"(B - $B%"%$%I%k%9%l%C%I?t$,$3$N?t$h$j$bBg$-$/$J$k$^$G(B - $B?7$7$$;R%W%m%;%9$,@8@.$5$l$^$9!#(B</p> - - <p><module>mpm_netware</module> $B$G$O!"(B - $B%G%U%)%k%H$O(B <code>MinSpareThreads 10</code> $B$G!"(B - $B%7%s%0%k%W%m%;%9(B MPM $B$G$9$N$G!"%5!<%PA4BN$G4IM}$5$l$^$9!#(B</p> - - <p><module>beos</module> $B$H(B <module>mpmt_os2</module> $B$O!"(B - <module>mpm_netware</module>$B$K$h$/;w$F$$$^$9!#(B - <module>beos</module> $B$G$N%G%U%)%k%H$O(B <code>MinSpareThreads 1</code> - $B$G$9!#(B<module>mpmt_os2</module> $B$G$N%G%U%)%k%H$O(B - <code>5</code> $B$G$9!#(B</p> + <module>threadpool</module> では、 + デフォルトは <code>MinSpareThreads 75</code> で、 + アイドルスレッド数をサーバ全体で監視します。 + もしサーバに十分な数のアイドルスレッドがなければ、 + アイドルスレッド数がこの数よりも大きくなるまで + 新しい子プロセスが生成されます。</p> + + <p><module>mpm_netware</module> では、 + デフォルトは <code>MinSpareThreads 10</code> で、 + シングルプロセス MPM ですので、サーバ全体で管理されます。</p> + + <p><module>beos</module> と <module>mpmt_os2</module> は、 + <module>mpm_netware</module>によく似ています。 + <module>beos</module> でのデフォルトは <code>MinSpareThreads 1</code> + です。<module>mpmt_os2</module> でのデフォルトは + <code>5</code> です。</p> </usage> <seealso><directive module="mpm_common">MaxSpareThreads</directive></seealso> <seealso><directive module="mpm_common">StartServers</directive></seealso> @@ -672,8 +672,8 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <directivesynopsis> <name>ScoreBoardFile</name> -<description>$B;R%W%m%;%9$HO"7H$9$k$?$a$N%G!<%?$rJ]B8$9$k(B -$B%U%!%$%k$N0LCV(B</description> +<description>子プロセスと連携するためのデータを保存する +ファイルの位置</description> <syntax>ScoreBoardFile <var>file-path</var></syntax> <default>ScoreBoardFile logs/apache_status</default> <contextlist><context>server config</context></contextlist> @@ -682,33 +682,33 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <module>threadpool</module><module>worker</module></modulelist> <usage> - <p>Apache $B$O?F%W%m%;%9$H;R%W%m%;%94V$NDL?.$K%9%3%"%\!<%I$rMQ$$$^$9!#(B - $B$3$NDL?.5!G=$K%U%!%$%k$rI,MW$H$9$k%"!<%-%F%/%A%c$b$"$j$^$9!#(B - $B%U%!%$%k$,;XDj$5$l$F$$$J$1$l$P!"(BApache $B$O$^$:%a%b%j>e(B - ($BF?L>6&M-%a%b%j(B) $B$K%9%3%"%\!<%I$r:n$m$&$H$7!"$=$l$,<:GT$9$k$H(B - $B%G%#%9%/>e$K%U%!%$%k(B ($B%U%!%$%k%Y!<%9$N6&M-%a%b%j(B) $B$r:n$m$&$H$7$^$9!#(B - $B$3$N%G%#%l%/%F%#%V$r;XDj$9$k$H!"(BApache - $B$OI,$:%G%#%9%/$K%U%!%$%k$r@8@.$7$^$9!#(B</p> - - <example><title>$BNc(B</title> + <p>Apache は親プロセスと子プロセス間の通信にスコアボードを用います。 + この通信機能にファイルを必要とするアーキテクチャもあります。 + ファイルが指定されていなければ、Apache はまずメモリ上 + (匿名共有メモリ) にスコアボードを作ろうとし、それが失敗すると + ディスク上にファイル (ファイルベースの共有メモリ) を作ろうとします。 + このディレクティブを指定すると、Apache + は必ずディスクにファイルを生成します。</p> + + <example><title>例</title> ScoreBoardFile /var/run/apache_status </example> - <p>$B%U%!%$%k%Y!<%9$N6&M-%a%b%j$O!"%5!<%I%Q!<%F%#!<@=$N%"%W%j%1!<%7%g%s$G(B - $B%9%3%"%\!<%I$KD>@\%"%/%;%9$9$kI,MW$,$"$k>l9g$KLr$KN)$A$^$9!#(B</p> + <p>ファイルベースの共有メモリは、サードパーティー製のアプリケーションで + スコアボードに直接アクセスする必要がある場合に役に立ちます。</p> - <p><directive>ScoreBoardFile</directive> $B$r;H$&>l9g!"(B - RAM $B%G%#%9%/>e$KCV$/$H%9%T!<%I$,8~>e$9$k$G$7$g$&!#(B - $B$7$+$7!"%m%0%U%!%$%k$N@_CV0LCV$d(B - <a href="../misc/security_tips.html">$B%;%-%e%j%F%#(B</a> - $B$HF1MM$NCm0UE@$,$"$k$N$G!"Cm0U$7$F$/$@$5$$!#(B</p> + <p><directive>ScoreBoardFile</directive> を使う場合、 + RAM ディスク上に置くとスピードが向上するでしょう。 + しかし、ログファイルの設置位置や + <a href="../misc/security_tips.html">セキュリティ</a> + と同様の注意点があるので、注意してください。</p> </usage> -<seealso><a href="../stopping.html">Apache $B$NDd;_$H:F5/F0(B</a></seealso> +<seealso><a href="../stopping.html">Apache の停止と再起動</a></seealso> </directivesynopsis> <directivesynopsis> <name>ReceiveBufferSize</name> -<description>TCP $B<u?.%P%C%U%!%5%$%:(B</description> +<description>TCP 受信バッファサイズ</description> <syntax>ReceiveBufferSize <var>bytes</var></syntax> <default>ReceiveBufferSize 0</default> <contextlist><context>server config</context></contextlist> @@ -718,15 +718,15 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <module>worker</module></modulelist> <usage> - <p>$B%5!<%P$O(B TCP $B<u?.%P%C%U%!%5%$%:$r;XDj$5$l$?%P%$%H?t$K@_Dj$7$^$9!#(B</p> + <p>サーバは TCP 受信バッファサイズを指定されたバイト数に設定します。</p> - <p><code>0</code>$B$K$7$?>l9g!"(BOS $B$N%G%U%)%k%HCM$,;HMQ$5$l$^$9!#(B</p> + <p><code>0</code>にした場合、OS のデフォルト値が使用されます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>SendBufferSize</name> -<description>TCP $B%P%C%U%!%5%$%:(B</description> +<description>TCP バッファサイズ</description> <syntax>SendBufferSize <var>bytes</var></syntax> <default>SendBufferSize 0</default> <contextlist><context>server config</context></contextlist> @@ -736,326 +736,326 @@ accept $B$7$h$&$H$7$F$$$k$H$-$K!"(BApache $B$,$=$l$i$N;R%W%m%;%9$rD>Ns2=$9$k$ <module>threadpool</module><module>worker</module></modulelist> <usage> - <p>$B%5!<%P$O(B TCP $BAw?.%P%C%U%!%5%$%:$r;XDj$5$l$?%P%$%H?t$K@_Dj$7$^$9!#(B - $B9bB.$G9b%l%$%F%s%7$J4D6-$G(B - (<em>$BNc(B</em> 100ms $BDxEY!"BgN&2#CG9bB.DL?.O)$J$I(B) - $B8E$$0lHLE*$J(B OS $B$N%G%U%)%k%HCM$rA}$d$9$N$KHs>o$KJXMx$G$9!#(B</p> + <p>サーバは TCP 送信バッファサイズを指定されたバイト数に設定します。 + 高速で高レイテンシな環境で + (<em>例</em> 100ms 程度、大陸横断高速通信路など) + 古い一般的な OS のデフォルト値を増やすのに非常に便利です。</p> - <p><code>0</code>$B$K$7$?>l9g!"(BOS $B$N%G%U%)%k%HCM$,;HMQ$5$l$^$9!#(B</p> + <p><code>0</code>にした場合、OS のデフォルト値が使用されます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ServerLimit</name> -<description>$B@_Dj2DG=$J%5!<%P%W%m%;%9?t$N>e8B(B</description> +<description>設定可能なサーバプロセス数の上限</description> <syntax>ServerLimit <var>number</var></syntax> -<default>$B>\:Y$O;HMQK!$r;2>H(B</default> +<default>詳細は使用法を参照</default> <contextlist><context>server config</context></contextlist> <modulelist><module>leader</module><module>perchild</module> <module>prefork</module><module>threadpool</module><module>worker</module> </modulelist> <usage> - <p><module>prefork</module> MPM $B$N>l9g$O!"$3$N%G%#%l%/%F%#%V$O(B - Apache $B%W%m%;%92TF/Cf$K$*$1$k(B + <p><module>prefork</module> MPM の場合は、このディレクティブは + Apache プロセス稼働中における <directive module="mpm_common">MaxClients</directive> - $B$K@_Dj2DG=$J>e8BCM$r@_Dj$9$k$3$H$K$J$j$^$9(B - ($BLuCm(B: prefork $B$N>l9g$OF1;~%/%i%$%"%s%H?t(B = $B%5!<%P%W%m%;%9?t$J$N$G(B) $B!#(B - <module>worker</module> MPM $B$N>l9g$K$O!"$3$N%G%#%l%/%F%#%V$O(B + に設定可能な上限値を設定することになります + (訳注: prefork の場合は同時クライアント数 = サーバプロセス数なので) 。 + <module>worker</module> MPM の場合には、このディレクティブは <directive module="mpm_common">ThreadLimit</directive> - $B%G%#%l%/%F%#%V$HAH$_9g$o$;$F!"(B - Apache $B%W%m%;%92TF/Cf$K$*$1$k(B + ディレクティブと組み合わせて、 + Apache プロセス稼働中における <directive module="mpm_common">MaxClients</directive> - $B$K@_Dj2DG=$J>e8BCM$r@_Dj$9$k$3$H$K$J$j$^$9!#(B - $B:F5/F0Cf$K$3$N%G%#%l%/%F%#%V$rJQ99$7$F$bL5;k$5$l$^$9$,!"(B + に設定可能な上限値を設定することになります。 + 再起動中にこのディレクティブを変更しても無視されますが、 <directive module="mpm_common">MaxClients</directive> - $B$O:F5/F0Cf$K=$@5$9$k$3$H$,$G$-$^$9!#(B</p> + は再起動中に修正することができます。</p> - <p>$B$3$N%G%#%l%/%F%#%V$r;HMQ$9$k:]$OFC$KCm0U$7$F$/$@$5$$!#(B - <directive>ServerLimit</directive> $B$,I,MW0J>e$KBg$-$JCM$K(B - $B@_Dj$5$l$?>l9g$O!"M>7W$JL$;HMQ6&M-%a%b%j$,3d$jEv$F$i$l$^$9!#(B - <directive>ServerLimit</directive> $B$H(B + <p>このディレクティブを使用する際は特に注意してください。 + <directive>ServerLimit</directive> が必要以上に大きな値に + 設定された場合は、余計な未使用共有メモリが割り当てられます。 + <directive>ServerLimit</directive> と <directive module="mpm_common">MaxClients</directive> - $B$,%7%9%F%`$N07$($kHO0O$r1[$($?@_DjCM$K$J$C$F$$$k$H!"(B - Apache $B$O5/F0$7$J$$$+!"5/F0$7$F$bIT0BDj$K$J$k$G$7$g$&!#(B</p> + がシステムの扱える範囲を越えた設定値になっていると、 + Apache は起動しないか、起動しても不安定になるでしょう。</p> - <p><module>prefork</module> MPM $B$G$O!"(B + <p><module>prefork</module> MPM では、 <directive module="mpm_common">MaxClients</directive> - $B$r(B 256 ($B%G%U%)%k%H(B) $B$h$j$bBg$-$JCM$K@_Dj$9$kI,MW$,$"$k;~$K$@$1;HMQ$7$F$/$@$5$$!#(B - $B4uK>$N(B <directive module="mpm_common">MaxClients</directive> - $B?t$H$/$i$Y$F!"I,MW0J>e$KBg$-$JCM$r;XDj$9$k$3$H$OHr$1$F$/$@$5$$!#(B</p> + を 256 (デフォルト) よりも大きな値に設定する必要がある時にだけ使用してください。 + 希望の <directive module="mpm_common">MaxClients</directive> + 数とくらべて、必要以上に大きな値を指定することは避けてください。</p> <p><module>worker</module>, <module>leader</module>, - <module>threadpool</module> MPM $B$G$O!"(B - <directive module="mpm_common">MaxClients</directive> $B$H(B + <module>threadpool</module> MPM では、 + <directive module="mpm_common">MaxClients</directive> と <directive module="mpm_common">ThreadsPerChild</directive> - $B$N@_Dj$G(B 16 $B%5!<%P%W%m%;%9(B ($B%G%U%)%k%H(B) - $B0J>eI,MW$K$J$k>l9g$K$N$_;HMQ$7$F$/$@$5$$!#4uK>$N(B - <directive module="mpm_common">MaxClients </directive> $B$H(B + の設定で 16 サーバプロセス (デフォルト) + 以上必要になる場合にのみ使用してください。希望の + <directive module="mpm_common">MaxClients </directive> と <directive module="mpm_common">ThreadsPerChild</directive> - $B$H$/$i$Y$F!"I,MW$H$J$k%5!<%P%W%m%;%9?t0J>e$KBg$-$JCM$r(B - $B@_Dj$9$k$3$H$OHr$1$F$/$@$5$$!#(B</p> - - <p><module>perchild</module> MPM $B$G$O!"(B - <directive module="perchild">NumServers</directive> $B$r(B 8 ($B%G%U%)%k%H(B) - $B$h$m$$$bBg$-$JCM$K@_Dj$9$kI,MW$,$"$k$H$-$K$N$_;HMQ$7$F$/$@$5$$!#(B</p> - - <note><title>$BCm0U(B</title> - <p><code>ServerLimit 20000</code> $B$H$$$&@)8BIU$-$G%3%s%Q%$%k$5$l$F$$$^$9(B - (<module>prefork</module> MPM $B$G$O(B <code>200000</code>) $B!#(B - $B$3$l$O%9%Z%k%_%9$K$h$C$F8m$C$F9s$$>u67$K$J$k$N$r!"(B - $B2sHr$9$k$?$a$N=hCV$G$9!#(B</p> + とくらべて、必要となるサーバプロセス数以上に大きな値を + 設定することは避けてください。</p> + + <p><module>perchild</module> MPM では、 + <directive module="perchild">NumServers</directive> を 8 (デフォルト) + よろいも大きな値に設定する必要があるときにのみ使用してください。</p> + + <note><title>注意</title> + <p><code>ServerLimit 20000</code> という制限付きでコンパイルされています + (<module>prefork</module> MPM では <code>200000</code>) 。 + これはスペルミスによって誤って酷い状況になるのを、 + 回避するための処置です。</p> </note> </usage> -<seealso><a href="../stopping.html">Apache $B$NDd;_$H:F5/F0(B</a></seealso> +<seealso><a href="../stopping.html">Apache の停止と再起動</a></seealso> </directivesynopsis> <directivesynopsis> <name>StartServers</name> -<description>$B5/F0;~$K@8@.$5$l$k;R%5!<%P%W%m%;%9$N?t(B</description> +<description>起動時に生成される子サーバプロセスの数</description> <syntax>StartServers <var>number</var></syntax> -<default>$B>\:Y$O;HMQJ}K!$r;2>H(B</default> +<default>詳細は使用方法を参照</default> <contextlist><context>server config</context></contextlist> <modulelist><module>leader</module><module>mpmt_os2</module> <module>prefork</module><module>threadpool</module><module>worker</module> </modulelist> <usage> - <p><directive>StartServers</directive> $B%G%#%l%/%F%#%V$O!"(B - $B5/F0;~$K@8@.$5$l$k;R%5!<%P%W%m%;%9$N?t$r@_Dj$7$^$9!#(B - $B%W%m%;%9?t$OIi2Y$K1~$8$FF0E*$K@)8f$5$l$^$9$N$G!"(B - $BDL>o$O$3$NCM$rD4@0$9$kM}M3$O$"$^$j$J$$$G$7$g$&!#(B</p> + <p><directive>StartServers</directive> ディレクティブは、 + 起動時に生成される子サーバプロセスの数を設定します。 + プロセス数は負荷に応じて動的に制御されますので、 + 通常はこの値を調整する理由はあまりないでしょう。</p> - <p>$B%G%U%)%k%HCM$O(B MPM $B$4$H$K0[$J$j$^$9!#(B + <p>デフォルト値は MPM ごとに異なります。 <module>leader</module>, <module>threadpool</module>, - <module>worker</module> $B$O(B <code>StartServers 3</code> $B$G$9!#(B - <module>prefork</module> $B$O(B <code>5</code> $B$G!"(B - <module>mpmt_os2</module> $B$O(B <code>2</code> $B$G$9!#(B</p> + <module>worker</module> は <code>StartServers 3</code> です。 + <module>prefork</module> は <code>5</code> で、 + <module>mpmt_os2</module> は <code>2</code> です。</p> </usage> </directivesynopsis> <directivesynopsis> <name>StartThreads</name> -<description>$B5/F0;~$K@8@.$5$l$k%9%l%C%I$N?t(B</description> +<description>起動時に生成されるスレッドの数</description> <syntax>StartThreads <var>number</var></syntax> -<default>$B>\:Y$O;HMQJ}K!$r;2>H(B</default> +<default>詳細は使用方法を参照</default> <contextlist><context>server config</context></contextlist> <modulelist><module>beos</module><module>mpm_netware</module> <module>perchild</module></modulelist> <usage> - <p>$B5/F0;~$K@8@.$5$l$k%9%l%C%I$N?t$G$9!#(B - $B%9%l%C%I?t$OIi2Y$K1~$8$FF0E*$K@)8f$5$l$^$9$N$G!"(B - $BDL>o$O$3$NCM$rD4@0$9$kM}M3$O$"$^$j$J$$$G$7$g$&!#(B</p> - - <p><module>perchild</module> $B$G$N%G%U%)%k%H$O(B - <code>StartThreads 5</code> $B$G!"$3$N%G%#%l%/%F%#%V$O5/F0;~$K(B - $B%W%m%;%9Kh$N%9%l%C%I?t$rDI@W$7$^$9!#(B</p> - - <p><module>mpm_netware</module> $B$G$N%G%U%)%k%H$O(B - <code>StartThreads 50</code> $B$G!"(B - $B$3$N>l9g%W%m%;%9$O0l$D$7$+$J$$$N$G!"(B - $B5/F0;~$K%j%/%(%9%H$K1~Ez$9$k%9%l%C%I$NAm?t$H$J$j$^$9!#(B</p> - - <p><module>beos</module> $B$G$N%G%U%)%k%H$O(B <code>StartThreads - 10</code> $B$G$9!#(B - $B$^$?!"5/F0;~$K@8@.$5$l$k%9%l%C%I$NAm?t$K$bH?1G$5$l$^$9!#(B</p> + <p>起動時に生成されるスレッドの数です。 + スレッド数は負荷に応じて動的に制御されますので、 + 通常はこの値を調整する理由はあまりないでしょう。</p> + + <p><module>perchild</module> でのデフォルトは + <code>StartThreads 5</code> で、このディレクティブは起動時に + プロセス毎のスレッド数を追跡します。</p> + + <p><module>mpm_netware</module> でのデフォルトは + <code>StartThreads 50</code> で、 + この場合プロセスは一つしかないので、 + 起動時にリクエストに応答するスレッドの総数となります。</p> + + <p><module>beos</module> でのデフォルトは <code>StartThreads + 10</code> です。 + また、起動時に生成されるスレッドの総数にも反映されます。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ThreadLimit</name> -<description>$B@_Dj2DG=$J;R%W%m%;%9Kh$N%9%l%C%I?t$N>e8B$r(B -$B@_Dj$7$^$9(B</description> +<description>設定可能な子プロセス毎のスレッド数の上限を +設定します</description> <syntax>ThreadLimit <var>number</var></syntax> -<default>$B>\:Y$O;HMQJ}K!$r;2>H(B</default> +<default>詳細は使用方法を参照</default> <contextlist><context>server config</context></contextlist> <modulelist><module>leader</module><module>mpm_winnt</module> <module>perchild</module><module>threadpool</module><module>worker</module> </modulelist> -<compatibility>Apache 2.0.41 $B$H$=$l0J9_$N(B <module>mpm_winnt</module> -$B$GMxMQ2DG=(B</compatibility> +<compatibility>Apache 2.0.41 とそれ以降の <module>mpm_winnt</module> +で利用可能</compatibility> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O(B - Apache $B%W%m%;%92TF/Cf$K$*$1$k(B + <p>このディレクティブは + Apache プロセス稼働中における <directive module="mpm_common">ThreadsPerChild</directive> - $B$K@_Dj2DG=$J>e8BCM$r@_Dj$7$^$9!#:F5/F0;~$K$3$N%G%#%l%/%F%#%V$NCM$r(B - $BJQ99$7$F$bL5;k$5$l$^$9$,!"(B + に設定可能な上限値を設定します。再起動時にこのディレクティブの値を + 変更しても無視されますが、 <directive module="mpm_common">ThreadsPerChild</directive> - $B$O:F5/F0Cf$K!"$3$N%G%#%l%/%F%#%V$G;XDj$5$l$?>e8BCM$^$G(B - $BJQ99$9$k$3$H$,$G$-$^$9!#(B</p> + は再起動中に、このディレクティブで指定された上限値まで + 変更することができます。</p> - <p>$B$3$N%G%#%l%/%F%#%V$r;HMQ$9$k:]$OFC$KCm0U$7$F$/$@$5$$!#(B - <directive>ThreadLimit</directive> $B$,(B + <p>このディレクティブを使用する際は特に注意してください。 + <directive>ThreadLimit</directive> が <directive module="mpm_common">ThreadsPerChild</directive> - $B$h$j$b$:$C$HBg$-$JCM$K@_Dj$5$l$?>l9g$O!"(B - $BM>7W$JL$;HMQ6&M-%a%b%j$,3d$jEv$F$i$l$F$7$^$$$^$9!#(B - <directive>ThreadLimit</directive> $B$,(B + よりもずっと大きな値に設定された場合は、 + 余計な未使用共有メモリが割り当てられてしまいます。 + <directive>ThreadLimit</directive> が <directive module="mpm_common">ThreadsPerChild</directive> - $B$NN>J}$,%7%9%F%`$N07$($kHO0O$rD6$($F$$$k>l9g$O!"(B - Apache $B$O5/F0$7$J$$$+!"5/F0$7$?$H$7$F$bIT0BDj$K$J$k$G$7$g$&!#(B - $B$3$N%G%#%l%/%F%#%V$NCM$O:#;HMQ$7$F$$$k(B Apache $B$N(B <directive - module="mpm_common">ThreadsPerChild</directive> $B$NM=A[>e8BCM$r(B - $BD6$($?CM$K$O@_Dj$7$J$$$G$/$@$5$$!#(B + の両方がシステムの扱える範囲を超えている場合は、 + Apache は起動しないか、起動したとしても不安定になるでしょう。 + このディレクティブの値は今使用している Apache の <directive + module="mpm_common">ThreadsPerChild</directive> の予想上限値を + 超えた値には設定しないでください。 </p> - <p><directive>ThreadLimit</directive> $B$N%G%U%)%k%HCM$O(B - <module>mpm_winnt</module> $B$N$H$-$O(B <code>1920</code> $B$G!"(B - $BB>$N>l9g$O(B <code>64</code> $B$G$9!#(B</p> + <p><directive>ThreadLimit</directive> のデフォルト値は + <module>mpm_winnt</module> のときは <code>1920</code> で、 + 他の場合は <code>64</code> です。</p> - <note><title>$BCm0U(B</title> + <note><title>注意</title> <p><code>ThreadLimit 20000</code> (<module>mpm_winnt</module> - $B$N>l9g$O(B <code>ThreadLimit 15000</code> ) - $B$H$$$&@)8BIU$-$G%3%s%Q%$%k$5$l$F$$$^$9!#(B - $B$3$l$O%9%Z%k%_%9$K$h$C$F8m$C$F9s$$>u67$K$J$k$N$r!"(B - $B2sHr$9$k$?$a$N=hCV$G$9!#(B</p> + の場合は <code>ThreadLimit 15000</code> ) + という制限付きでコンパイルされています。 + これはスペルミスによって誤って酷い状況になるのを、 + 回避するための処置です。</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>ThreadsPerChild</name> -<description>$B;R%W%m%;%9$=$l$>$l$K@8@.$5$l$k%9%l%C%I?t(B</description> +<description>子プロセスそれぞれに生成されるスレッド数</description> <syntax>ThreadsPerChild <var>number</var></syntax> -<default>$B>\:Y$O;HMQJ}K!$r;2>H(B</default> +<default>詳細は使用方法を参照</default> <contextlist><context>server config</context></contextlist> <modulelist><module>leader</module><module>mpm_winnt</module> <module>threadpool</module><module>worker</module></modulelist> <usage> - <p>$B$3$N%G%#%l%/%F%#%V$O!"$=$l$>$l$N;R%W%m%;%9$G@8@.$5$l$k(B - $B%9%l%C%I?t$r@_Dj$7$^$9!#(B - $B;R%W%m%;%9$O3+;O;~$K$3$l$i$N%9%l%C%I$r@8@.$7$F!"(B - $B$=$N8e$O@8@.$7$^$;$s!#(B<module>mpm_winnt</module> $B$N$h$&$J!"(B - $B;R%W%m%;%9$,0l$D$7$+$J$$$h$&$J(B MPM $B$rMxMQ$7$F$$$k$N$G$"$l$P!"(B - $B$3$NCM$O%5!<%P$NIi2YA4BN$r==J,<h$j07$($kDxEY$K!"(B - $BBg$-$/$J$1$l$P$J$j$^$;$s!#(B<module>worker</module> $B$N$h$&$J!"(B - $B;R%W%m%;%9$,J#?t$"$k$h$&$J(B MPM $B$rMxMQ$7$F$$$k$N$G$"$l$P!"(B - $B%5!<%P$NDL>oIi2Y$r==J,07$($kDxEY$K!"(B - <em>$B%9%l%C%IAm?t(B</em>$B$,B?$/$J$1$l$P$J$j$^$;$s!#(B</p> - - <p><module>mpm_winnt</module>$B$G$N(B <directive>ThreadsPerChild</directive> - $B$N%G%U%)%k%HCM$O(B <code>64</code> $B$G!"B>$N>l9g$O(B - <code>25</code> $B$G$9!#(B</p> + <p>このディレクティブは、それぞれの子プロセスで生成される + スレッド数を設定します。 + 子プロセスは開始時にこれらのスレッドを生成して、 + その後は生成しません。<module>mpm_winnt</module> のような、 + 子プロセスが一つしかないような MPM を利用しているのであれば、 + この値はサーバの負荷全体を十分取り扱える程度に、 + 大きくなければなりません。<module>worker</module> のような、 + 子プロセスが複数あるような MPM を利用しているのであれば、 + サーバの通常負荷を十分扱える程度に、 + <em>スレッド総数</em>が多くなければなりません。</p> + + <p><module>mpm_winnt</module>での <directive>ThreadsPerChild</directive> + のデフォルト値は <code>64</code> で、他の場合は + <code>25</code> です。</p> </usage> </directivesynopsis> <directivesynopsis> <name>ThreadStackSize</name> -<description>$B%/%i%$%"%s%H$N%3%M%/%7%g%s$r<u$1;}$D%9%l%C%I$,;HMQ$9$k(B -$B%9%?%C%/$N%P%$%H?t(B</description> +<description>クライアントのコネクションを受け持つスレッドが使用する +スタックのバイト数</description> <syntax>ThreadStackSize <var>size</var></syntax> -<default>NetWare $B$G$O(B 65536$B!#B>$N(B OS $B$G$O0c$C$?CM(B</default> +<default>NetWare では 65536。他の OS では違った値</default> <contextlist><context>server config</context></contextlist> <modulelist><module>leader</module><module>mpm_netware</module> <module>mpm_winnt</module><module>perchild</module> <module>threadpool</module><module>worker</module> </modulelist> -<compatibility>2.1 $B0J9_(B</compatibility> +<compatibility>2.1 以降</compatibility> <usage> - <p>$B%/%i%$%"%s%H%3%M%/%7%g%s$r<u$1;}$A!"%3%M%/%7%g%s=hM}$KI,MW$J%b%8%e!<%k$N(B - $B8F$S=P$7$r9T$J$C$F$$$k%9%l%C%I$N!"(B($B<+F0JQ?tMQ$N(B) $B%9%?%C%/%5%$%:$O(B - <directive>ThreadStackSize</directive> $B%G%#%l%/%F%#%V$G;XDj$7$^$9!#(B - $BBgDq$N>l9g(B OS $B$N;XDj$7$F$$$k%9%?%C%/%5%$%:$N%G%U%)%k%HCM$O(B - $BE,@Z$J$b$N$G$9$,!"D4@0$,I,MW$K$J$k>l9g$b$"$j$^$9(B:</p> + <p>クライアントコネクションを受け持ち、コネクション処理に必要なモジュールの + 呼び出しを行なっているスレッドの、(自動変数用の) スタックサイズは + <directive>ThreadStackSize</directive> ディレクティブで指定します。 + 大抵の場合 OS の指定しているスタックサイズのデフォルト値は + 適切なものですが、調整が必要になる場合もあります:</p> <ul> - <li>$B%9%l%C%I%9%?%C%/%5%$%:$N%G%U%)%k%HCM$,Hf3SE*>.$5$/@_Dj$5$l$F$$$k(B - $B%W%i%C%H%[!<%`(B ($BNc$($P(B HP-UX) $B$G$O!"<+F0JQ?tMQ$NNN0h$GBg$-$JMFNL$r(B - $B;HMQ$9$k%5!<%I%Q!<%F%#@=%b%8%e!<%k$N$?$a$K(B Apache $B$,%/%i%C%7%e$9$k(B - $B>l9g$b$"$j$^$9!#$=$N%b%8%e!<%k$OB>$N%W%i%C%H%[!<%`$G$O(B - $B%9%?%C%/%5%$%:$,Bg$-$$$?$a$K!"2wD4$KF0:n$9$k$+$b$7$l$^$;$s!#(B - $B$3$N%?%$%W$N%/%i%C%7%e$O!"(B<directive>ThreadStackSize</directive> - $B$G(B OS $B$N%G%U%)%k%HCM$h$jBg$-$JCM$r;XDj$9$k$3$H$G2r7h$7$^$9!#(B - $B%5!<%I%Q!<%F%#@=%b%8%e!<%k$G$3$N=hCV$,I,MW$G$"$k$H5-:\$5$l$F$$$k(B - $B>l9g$+!"(BApache $B$N=PNO$9$k%a%C%;!<%8$G%9%l%C%I%9%?%C%/%5%$%:$,(B - $B>.$5$9$.$k$H;XE&$5$l$F$$$k>l9g$K$N$_!"$3$ND4@0$r$7$F$/$@$5$$!#(B</li> - - <li>$B%G%U%)%k%H%9%l%C%I%9%?%C%/%5%$%:$,!"(BWeb $B%5!<%PMQES$KI,MW$JNL$h$j$b(B - $BL@$i$+$KBg$-$9$.$k>l9g!"(B<directive>ThreadStackSize</directive> - $B$r(B OS $B$N%G%U%)%k%HCM$h$j$b>.$5$JCM$K$9$k$3$H$G!";R%W%m%;%9$"$?$j$N(B - $B%9%l%C%I?t$r$h$jB?$/;}$?$;$i$l$k$h$&$K$J$j$^$9!#(B - $B$3$N%?%$%W$ND4@0$O!"%F%9%H4D6-$G%&%'%V%5!<%P$r40A4$K(B - $B%F%9%H$G$-$k>l9g$K8B$C$F9T$J$&$Y$-$G$9!#(B - $B$^$l$KB??t$N%9%?%C%/$,MW5a$5$l$k%j%/%(%9%H$r<u$1$k$3$H$,$"$k$+$b(B - $B$7$l$J$$$+$i$G$9!#(B - Web $B%5!<%P$N@_Dj$rJQ99$9$k$H!"8=:_$N(B <directive>ThreadStackSize</directive> - $B$N@_Dj$,<h$j>C$5$l$k>l9g$,$"$j$^$9!#(B</li> + <li>スレッドスタックサイズのデフォルト値が比較的小さく設定されている + プラットホーム (例えば HP-UX) では、自動変数用の領域で大きな容量を + 使用するサードパーティ製モジュールのために Apache がクラッシュする + 場合もあります。そのモジュールは他のプラットホームでは + スタックサイズが大きいために、快調に動作するかもしれません。 + このタイプのクラッシュは、<directive>ThreadStackSize</directive> + で OS のデフォルト値より大きな値を指定することで解決します。 + サードパーティ製モジュールでこの処置が必要であると記載されている + 場合か、Apache の出力するメッセージでスレッドスタックサイズが + 小さすぎると指摘されている場合にのみ、この調整をしてください。</li> + + <li>デフォルトスレッドスタックサイズが、Web サーバ用途に必要な量よりも + 明らかに大きすぎる場合、<directive>ThreadStackSize</directive> + を OS のデフォルト値よりも小さな値にすることで、子プロセスあたりの + スレッド数をより多く持たせられるようになります。 + このタイプの調整は、テスト環境でウェブサーバを完全に + テストできる場合に限って行なうべきです。 + まれに多数のスタックが要求されるリクエストを受けることがあるかも + しれないからです。 + Web サーバの設定を変更すると、現在の <directive>ThreadStackSize</directive> + の設定が取り消される場合があります。</li> </ul> </usage> </directivesynopsis> <directivesynopsis> <name>User</name> -<description>$B%j%/%(%9%H$K1~Ez$9$k:]$KMQ$$$k%f!<%6(B ID</description> +<description>リクエストに応答する際に用いるユーザ ID</description> <syntax>User <var>unix-userid</var></syntax> <default>User #-1</default> <contextlist><context>server config</context></contextlist> <modulelist><module>leader</module><module>perchild</module> <module>prefork</module><module>threadpool</module><module>worker</module> </modulelist> -<compatibility>Apache 2.0 $B0J9_$G!"%0%m!<%P%k@_Dj$G$N$_M-8z$G$9!#(B +<compatibility>Apache 2.0 以降で、グローバル設定でのみ有効です。 </compatibility> <usage> - <p><directive>User</directive> $B%G%#%l%/%F%#%V$O(B - $B%5!<%P$,%j%/%(%9%H$K1~Ez$9$k:]$KMQ$$$k%f!<%6(B ID $B$r@_Dj$7$^$9!#(B - $B$3$N%G%#%l%/%F%#%V$r;HMQ$9$k$?$a$K$O!"%9%?%s%I%"%m%s7?$N(B - $B%5!<%P$O:G=i$K(B <code>root</code> $B8"8B$G5/F0$5$l$F$$$kI,MW$,$"$j$^$9!#(B - $BHs(B root $B%f!<%6$G%5!<%P$r5/F0$7$?>l9g$O!"(B - $B8"8B$NDc$$%f!<%6$X$HJQ$o$k$3$H$,$G$-$:!"(B - $B7k6I85$N%f!<%6$N%W%m%;%9$H$7$F<B9T$5$lB3$1$^$9!#(B - <code>root</code> $B$G5/F0$7$?>l9g$K?F%W%m%;%9$,(B root - $B$H$7$F<B9T$5$l$F$$$k$N$O@5>o$JF0:n$G$9!#(B - <var>Unix-userid</var> $B$O<!$N$I$l$+$G$9!#(B</p> + <p><directive>User</directive> ディレクティブは + サーバがリクエストに応答する際に用いるユーザ ID を設定します。 + このディレクティブを使用するためには、スタンドアロン型の + サーバは最初に <code>root</code> 権限で起動されている必要があります。 + 非 root ユーザでサーバを起動した場合は、 + 権限の低いユーザへと変わることができず、 + 結局元のユーザのプロセスとして実行され続けます。 + <code>root</code> で起動した場合に親プロセスが root + として実行されているのは正常な動作です。 + <var>Unix-userid</var> は次のどれかです。</p> <dl> - <dt>$B%f!<%6L>(B</dt> - <dd>$B%f!<%6$rL>A0$G;2>H$7$^$9!#(B</dd> + <dt>ユーザ名</dt> + <dd>ユーザを名前で参照します。</dd> - <dt># $B$KB3$$$F%f!<%6HV9f(B</dt> - <dd>$B%f!<%6$rHV9f$G;2>H$7$^$9!#(B</dd> + <dt># に続いてユーザ番号</dt> + <dd>ユーザを番号で参照します。</dd> </dl> - <p>$B$3$N%f!<%6$O!"30It$K8+$;$k$h$&$K0U?^$7$F$$$J$$%U%!%$%k$K!"(B - $B%"%/%;%92DG=$K$J$C$F$7$^$&$h$&$J8"8B$r;}$D$Y$-$G$O$J$$$G$9$7!"(B - $BF1MM$K(B HTTP $B%j%/%(%9%H$KBP$7$F1~Ez$9$k$h$&$K0U?^$7$F$$$J$$(B - $B<B9T%3!<%I$r!"<B9T$G$-$k$h$&$J8"8B$r;}$D$Y$-$G$O$J$$$G$9!#(B - $B%5!<%P$r<B9T$9$k$?$a$KFCDj$N?7$7$$%f!<%6$H%0%k!<%W$r(B - $B@_Dj$9$k$3$H$r$*A&$a$$$?$7$^$9!#(B - <code>nobody</code> $B%f!<%6$r;HMQ$9$k4IM}<T$b$$$^$9$,!"(B - $B$3$l$,>o$KK>$^$7$$$o$1$G$O$"$j$^$;$s!#(B - $B$J$<$J$i(B <code>nobody</code> $B%f!<%6$O!"%7%9%F%`$G(B - $BB>$NLr3d$rC4$C$F$$$k$+$bCN$l$J$$$+$i$G$9!#(B</p> - - <note type="warning"><title>$B%;%-%e%j%F%#(B</title> - <p>$B@53N$K$I$s$J$3$H$r$d$C$F$$$k$N$+!"$=$N4m81@-$rCN$i$J$$$G!"(B - <directive>User</directive> ($B$d(B <directive - module="mpm_common">Group</directive>) $B$r(B <code>root</code> $B$K(B - $B@_Dj$7$J$$$G$/$@$5$$!#(B</p> + <p>このユーザは、外部に見せるように意図していないファイルに、 + アクセス可能になってしまうような権限を持つべきではないですし、 + 同様に HTTP リクエストに対して応答するように意図していない + 実行コードを、実行できるような権限を持つべきではないです。 + サーバを実行するために特定の新しいユーザとグループを + 設定することをお薦めいたします。 + <code>nobody</code> ユーザを使用する管理者もいますが、 + これが常に望ましいわけではありません。 + なぜなら <code>nobody</code> ユーザは、システムで + 他の役割を担っているかも知れないからです。</p> + + <note type="warning"><title>セキュリティ</title> + <p>正確にどんなことをやっているのか、その危険性を知らないで、 + <directive>User</directive> (や <directive + module="mpm_common">Group</directive>) を <code>root</code> に + 設定しないでください。</p> </note> - <p><module>perchild</module> MPM $B$G$O!"0[$J$k%f!<%6(B ID - $B$GJ#?t$N%P!<%A%c%k%[%9%H$rF0$+$9$3$H$rL\E*$H$7$F$$$^$9$,!"(B - <directive>User</directive> $B$O!"<g%5!<%P$N%f!<%6(B ID - $B$H!"(B<directive module="perchild">AssignUserID</directive> - $B%G%#%l%/%F%#%V$r;}$?$J$$(B <directive type="section" - module="core">VirtualHost</directive> $B%;%/%7%g%s$X$N(B - $B%U%)!<%k%P%C%/$H$rDj5A$9$k$3$H$K$J$j$^$9!#(B</p> + <p><module>perchild</module> MPM では、異なるユーザ ID + で複数のバーチャルホストを動かすことを目的としていますが、 + <directive>User</directive> は、主サーバのユーザ ID + と、<directive module="perchild">AssignUserID</directive> + ディレクティブを持たない <directive type="section" + module="core">VirtualHost</directive> セクションへの + フォールバックとを定義することになります。</p> - <p>$BFC5-;v9`(B: $B$3$N%G%#%l%/%F%#%V$r(B + <p>特記事項: このディレクティブを <directive module="core" type="section">VirtualHost</directive> - $B$G;HMQ$9$k$3$H$O%5%]!<%H$5$l$J$/$J$j$^$7$?!#(B - <program>suexec</program> $B8~$1$K%5!<%P$r@_Dj$9$k$N$G$"$l$P!"(B + で使用することはサポートされなくなりました。 + <program>suexec</program> 向けにサーバを設定するのであれば、 <directive module="mod_suexec">SuexecUserGroup</directive> - $B$r;HMQ$7$F$/$@$5$$!#(B</p> + を使用してください。</p> - <note><title>$BCm0U(B</title> - <p><directive>User</directive> $B%G%#%l%/%F%#%V$O(B - <module>beos</module> $B$H(B <module>mpmt_os2</module> MPM - $B$K$bB8:_$7$^$9$,!"<B<AE*$KL58z$G!"8_49@-$N$?$a$@$1$KB8:_$7$^$9!#(B</p> + <note><title>注意</title> + <p><directive>User</directive> ディレクティブは + <module>beos</module> と <module>mpmt_os2</module> MPM + にも存在しますが、実質的に無効で、互換性のためだけに存在します。</p> </note> </usage> </directivesynopsis> diff --git a/docs/manual/mod/mpm_winnt.xml.ja b/docs/manual/mod/mpm_winnt.xml.ja index 11f45b4e91..73a8b5257e 100644 --- a/docs/manual/mod/mpm_winnt.xml.ja +++ b/docs/manual/mod/mpm_winnt.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -24,17 +24,17 @@ <name>mpm_winnt</name> <description>Windows NT -$B8~$1$K:GE,2=$5$l$?%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B</description> +向けに最適化されたマルチプロセッシングモジュール</description> <status>MPM</status> <sourcefile>mpm_winnt.c</sourcefile> <identifier>mpm_winnt_module</identifier> <summary> - <p>$B$3$N%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B (MPM) - $B$O(B Windows NT $B$G$N%G%U%)%k%H$K$J$j$^$9!#(B - $B0l$D$N@)8fMQ%W%m%;%9$rMQ$$!"$3$l$,0l$D$N;R%W%m%;%9$r5/F0$7!"(B - $B$=$7$F;R%W%m%;%9$,%j%/%(%9%H$r<h$j07$&$?$a$K%9%l%C%I$r(B - $B5/F0$7$^$9!#(B</p> + <p>このマルチプロセッシングモジュール (MPM) + は Windows NT でのデフォルトになります。 + 一つの制御用プロセスを用い、これが一つの子プロセスを起動し、 + そして子プロセスがリクエストを取り扱うためにスレッドを + 起動します。</p> </summary> <directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name> @@ -62,20 +62,20 @@ <directivesynopsis> <name>Win32DisableAcceptEx</name> -<description>$B%M%C%H%o!<%/@\B3$N<u$1IU$1$K(B accept() $B$r(BAcceptEx $B$NBe$o$j$K;H$&(B</description> +<description>ネットワーク接続の受け付けに accept() をAcceptEx の代わりに使う</description> <syntax>Win32DisableAcceptEx</syntax> -<default>AcceptEx() $B$O%G%U%)%k%H$GM-8z$K$J$C$F$$$^$9!#(BAcceptEx() $B$rL58z$K$9$k(B -$B$?$a$K$3$N%G%#%l%/%F%#%V$r;H$$$^$9!#(B</default> +<default>AcceptEx() はデフォルトで有効になっています。AcceptEx() を無効にする +ためにこのディレクティブを使います。</default> <contextlist><context>server config</context></contextlist> -<compatibility>2.0.49 $B%P!<%8%g%s0J9_$G;HMQ2DG=(B</compatibility> +<compatibility>2.0.49 バージョン以降で使用可能</compatibility> <usage> - <p>AcceptEx() $B$O(B Microsoft WinSock v2 API $B$G!">l9g$K$h$C$F$O(B - BSD $B7A<0$N(B <code>accept()</code> API $B$h$j$b$h$$@-G=$rH/4x$7$^$9!#(B - $B$h$/;H$o$l$F$$$k(B Windows $B@=IJ$NCf$G!"FC$K%&%#%k%9%9%-%c%J$d(B VPN $B%Q%C%1!<%8(B - $B$NCf$K$O!"%P%0$,860x$G(B <code>AcceptEx()</code> $B$NE,@Z$JF0:n$rK8$2$k$b$N$,$"$j$^$9!#(B - $B0J2<$N$h$&$J%(%i!<$KAx6x$7$?>l9g$O!"$3$N%G%#%l%/%F%#%V$r;HMQ$7$F(B - <code>AcceptEx()</code> $B$r;HMQ$7$J$$$h$&$K$7$F$/$@$5$$!#(B</p> + <p>AcceptEx() は Microsoft WinSock v2 API で、場合によっては + BSD 形式の <code>accept()</code> API よりもよい性能を発揮します。 + よく使われている Windows 製品の中で、特にウィルススキャナや VPN パッケージ + の中には、バグが原因で <code>AcceptEx()</code> の適切な動作を妨げるものがあります。 + 以下のようなエラーに遭遇した場合は、このディレクティブを使用して + <code>AcceptEx()</code> を使用しないようにしてください。</p> <example> [error] (730038)An operation was attempted on something that is diff --git a/docs/manual/mod/prefork.xml.ja b/docs/manual/mod/prefork.xml.ja index 0cc9ede5c0..d6bcf00342 100644 --- a/docs/manual/mod/prefork.xml.ja +++ b/docs/manual/mod/prefork.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -23,76 +23,76 @@ <modulesynopsis metafile="prefork.xml.meta"> <name>prefork</name> -<description>$B%9%l%C%I$r;H$o$:!"@h9T$7$F(B fork $B$r9T$J$&%&%'%V%5!<%P$r<BAu(B +<description>スレッドを使わず、先行して fork を行なうウェブサーバを実装 </description> <status>MPM</status> <sourcefile>prefork.c</sourcefile> <identifier>mpm_prefork_module</identifier> <summary> - <p>$B$3$N%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B (MPM) $B$O!"(B - Unix $B>e$G$N(B Apache 1.3 $B$N%G%U%)%k%H$N5sF0$HHs>o$K$h$/;w$?J}K!$G(B - $B%j%/%(%9%H$r=hM}$9$k!"%9%l%C%I$r;H$o$:!"@h9T$7$F(B fork $B$r9T$J$&(B - $B%&%'%V%5!<%P$r<BAu$7$F$$$^$9!#(B - $B%9%l%C%I%;!<%U$G$J$$%i%$%V%i%j$H$N8_49@-$r$H$k$?$a$K!"(B - $B%9%l%C%I$rHr$1$kI,MW$N$"$k%5%$%H$G$O!"$3$N%b%8%e!<%k$N;HMQ$,E,@Z$G$7$g$&!#(B - $B$"$k%j%/%(%9%H$GH/@8$7$?LdBj$,B>$N%j%/%(%9%H$K1F6A$7$J$$$h$&$K!"(B - $B8D!9$N%j%/%(%9%H$rC1N%$9$k$N$K$b!":GE,$J(B MPM $B$G$9!#(B</p> - - <p>$B$3$N(B MPM $B$OHs>o$K<+N'E*$J$N$G!"$3$N(B MPM $B$N@_Dj%G%#%l%/%F%#%V$r(B - $BD4@0$9$kI,MW$O$[$H$s$I$J$$$G$7$g$&!#$b$C$H$b=EMW$J$3$H$O!"(B + <p>このマルチプロセッシングモジュール (MPM) は、 + Unix 上での Apache 1.3 のデフォルトの挙動と非常によく似た方法で + リクエストを処理する、スレッドを使わず、先行して fork を行なう + ウェブサーバを実装しています。 + スレッドセーフでないライブラリとの互換性をとるために、 + スレッドを避ける必要のあるサイトでは、このモジュールの使用が適切でしょう。 + あるリクエストで発生した問題が他のリクエストに影響しないように、 + 個々のリクエストを単離するのにも、最適な MPM です。</p> + + <p>この MPM は非常に自律的なので、この MPM の設定ディレクティブを + 調整する必要はほとんどないでしょう。もっとも重要なことは、 <directive module="mpm_common">MaxClients</directive> - $B$,!"M=A[$5$l$kF1;~%j%/%(%9%H?t$r==J,07$($k$0$i$$$OBg$-$$$1$l$I$b!"(B - $BA4%W%m%;%9$K==J,$JJ*M}%a%b%j$,3N<B$K9T$-EO$kDxEY$K$O>.$5$$CM$K$9$k!"(B - $B$H$$$&$3$H$G$9!#(B</p> + が、予想される同時リクエスト数を十分扱えるぐらいは大きいけれども、 + 全プロセスに十分な物理メモリが確実に行き渡る程度には小さい値にする、 + ということです。</p> </summary> <seealso><a href="../bind.html">Apache -$B$,;HMQ$9$k%"%I%l%9$H%]!<%H$N@_Dj(B</a></seealso> - -<section id="how-it-works"><title>$BF0:nJ}K!(B</title> - <p>$B0l$D$N%3%s%H%m!<%k%W%m%;%9$,!"(B - $B%3%M%/%7%g%s$KBP$7$F(B listen $B$7$F!"$7$+$k$Y$-;~$K1~Ez$9$k(B - $B;R%W%m%;%9$r5/F0$7$^$9!#(BApache $B$O>o$K4v$D$+$N(B<dfn>$B%9%Z%"(B</dfn> - $B$+%"%$%I%k$J%5!<%P%W%m%;%9$r0];}$7$F$$$F!"$=$l$i$OF~$C$F$-$?(B - $B%j%/%(%9%H$K1~Ez$G$-$k$h$&$KBT5!$7$F$$$^$9!#(B - $B$3$N$h$&$K$7$F%/%i%$%"%s%H$O!"%j%/%(%9%H$,1~Ez$5$l$kA0$K!"(B - $B?7$7$$;R%W%m%;%9$,(B fork $B$5$l$k$N$rBT$?$J$/$F$b$h$$$h$&$K(B - $B$J$C$F$$$^$9!#(B</p> - - <p>$B?F%W%m%;%9$,%j%/%(%9%H$K1~Ez$9$k$N;R%W%m%;%9$r(B - $B$I$N$h$&$K@8@.$9$k$+$O!"(B +が使用するアドレスとポートの設定</a></seealso> + +<section id="how-it-works"><title>動作方法</title> + <p>一つのコントロールプロセスが、 + コネクションに対して listen して、しかるべき時に応答する + 子プロセスを起動します。Apache は常に幾つかの<dfn>スペア</dfn> + かアイドルなサーバプロセスを維持していて、それらは入ってきた + リクエストに応答できるように待機しています。 + このようにしてクライアントは、リクエストが応答される前に、 + 新しい子プロセスが fork されるのを待たなくてもよいように + なっています。</p> + + <p>親プロセスがリクエストに応答するの子プロセスを + どのように生成するかは、 <directive module="mpm_common">StartServers</directive>, <directive module="prefork">MinSpareServers</directive>, <directive module="prefork">MaxSpareServers</directive>, <directive module="mpm_common">MaxClients</directive> - $B$GD4@0$7$^$9!#0lHLE*$K!"(BApache $B$OHs>o$K<+N'E*$J$N$G!"(B - $BBgDq$N%5%$%H$G$O$3$l$i$N%G%#%l%/%F%#%V$r%G%U%)%k%HCM$+$iD4@0$9$k(B - $BI,MW$O$J$$$G$7$g$&!#(B - $BF1;~$K(B 256 $B$rD6$($k%j%/%(%9%H$K1~Ez$7$J$$$H$$$1$J$$%5%$%H$G$O!"(B + で調整します。一般的に、Apache は非常に自律的なので、 + 大抵のサイトではこれらのディレクティブをデフォルト値から調整する + 必要はないでしょう。 + 同時に 256 を超えるリクエストに応答しないといけないサイトでは、 <directive module="mpm_common">MaxClients</directive> - $B$rA}$d$9I,MW$,$"$k$G$7$g$&!#(B - $B0lJ}!"%a%b%j$N8B$i$l$F$$$k%5%$%H$G$O!"%9%i%C%7%s%0(B - ($B%a%b%j$H%G%#%9%/4V$G2?EY$b%9%o%C%W(B) $B$,5/$3$k$N$rKI$0$?$a$K(B + を増やす必要があるでしょう。 + 一方、メモリの限られているサイトでは、スラッシング + (メモリとディスク間で何度もスワップ) が起こるのを防ぐために <directive module="mpm_common">MaxClients</directive> - $B$r8:$i$9I,MW$,$"$k$G$7$g$&!#%W%m%;%9@8@.$N%A%e!<%K%s%0$K4X$9$k(B - $B>\$7$$>pJs$O!"(B<a - href="../misc/perf-tuning.html">$B@-G=$K4X$9$k%R%s%H(B</a> - $B$K$"$j$^$9!#(B</p> - - <p>$BDL>o(B Unix $B$G$O?F%W%m%;%9$O(B 80 $BHV%]!<%H$K%P%$%s%I$9$k$?$a$K(B - <code>root</code> $B$G5/F0$5$l$^$9$,!";R%W%m%;%9$d%9%l%C%I$O(B - $B$b$C$HDc$$8"8B$N%f!<%6$G(B Apache $B$K$h$C$F5/F0$5$l$^$9!#(B - <directive module="mpm_common">User</directive> $B$H(B + を減らす必要があるでしょう。プロセス生成のチューニングに関する + 詳しい情報は、<a + href="../misc/perf-tuning.html">性能に関するヒント</a> + にあります。</p> + + <p>通常 Unix では親プロセスは 80 番ポートにバインドするために + <code>root</code> で起動されますが、子プロセスやスレッドは + もっと低い権限のユーザで Apache によって起動されます。 + <directive module="mpm_common">User</directive> と <directive module="mpm_common">Group</directive> - $B%G%#%l%/%F%#%V$O(B - Apache $B$N;R%W%m%;%9$N8"8B$r@_Dj$9$k$N$KMQ$$$i$l$^$9!#(B - $B;R%W%m%;%9$O%/%i%$%"%s%H$KAw$k%3%s%F%s%DA4$F$rFI$a$J$$$H$$$1$^$;$s$,!"(B - $B2DG=$J8B$jI,MW:G>.8B$N8"8B$N$_$r;}$C$F$$$k$h$&$K$9$k$Y$-$G$9!#(B</p> + ディレクティブは + Apache の子プロセスの権限を設定するのに用いられます。 + 子プロセスはクライアントに送るコンテンツ全てを読めないといけませんが、 + 可能な限り必要最小限の権限のみを持っているようにするべきです。</p> <p><directive module="mpm_common">MaxRequestsPerChild</directive> - $B$O!"8E$$%W%m%;%9$rDd;_$7$F?7$7$$%W%m%;%9$r5/F0$9$k$3$H$K$h$C$F!"(B - $B$I$NDxEY$NIQEY$G%5!<%P$,%W%m%;%9$r%j%5%$%/%k$9$k$+$r@)8f$7$^$9!#(B</p> + は、古いプロセスを停止して新しいプロセスを起動することによって、 + どの程度の頻度でサーバがプロセスをリサイクルするかを制御します。</p> </section> <directivesynopsis location="mpm_common"><name>CoreDumpDirectory</name> @@ -130,23 +130,23 @@ <directivesynopsis> <name>MaxSpareServers</name> -<description>$B%"%$%I%k$J;R%5!<%P%W%m%;%9$N:GBg8D?t(B</description> +<description>アイドルな子サーバプロセスの最大個数</description> <syntax>MaxSpareServers <var>number</var></syntax> <default>MaxSpareServers 10</default> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>MaxSpareServers</directive> $B%G%#%l%/%F%#%V$O!"(B - <em>$B%"%$%I%k$J(B</em>$B;R%5!<%P%W%m%;%9$N4uK>:GBg8D?t$r@_Dj$7$^$9!#(B - $B%"%$%I%k%W%m%;%9$H$O!"%j%/%(%9%H$r07$C$F$$$J$$%W%m%;%9$G$9!#(B - <directive>MaxSpareServers</directive> $B$h$j$bB?$$?t$,%"%$%I%k$G$"$l$P!"(B - $B?F%W%m%;%9$OD62a%W%m%;%9$r(B kill $B$7$^$9!#(B</p> - - <p>$BHs>o$K:.$s$G$$$k%5%$%H$G$N$_!"$3$N%Q%i%a!<%?$r%A%e!<%K%s%0$9$k$Y$-$G$9!#(B - $B$3$N%Q%i%a!<%?$rBg$-$/$9$k$H$$$&$3$H$O!"BgDq$N>l9g$O0-$$H/A[$G$9!#(B + <p><directive>MaxSpareServers</directive> ディレクティブは、 + <em>アイドルな</em>子サーバプロセスの希望最大個数を設定します。 + アイドルプロセスとは、リクエストを扱っていないプロセスです。 + <directive>MaxSpareServers</directive> よりも多い数がアイドルであれば、 + 親プロセスは超過プロセスを kill します。</p> + + <p>非常に混んでいるサイトでのみ、このパラメータをチューニングするべきです。 + このパラメータを大きくするということは、大抵の場合は悪い発想です。 <directive module="prefork">MinSpareServers</directive> - $B0J2<$K@_Dj$7$?>l9g!"(B<directive>MinSpareServers</directive> - <code>+1</code> $B$K<+F0D4@0$5$l$^$9!#(B</p> + 以下に設定した場合、<directive>MinSpareServers</directive> + <code>+1</code> に自動調整されます。</p> </usage> <seealso><directive module="prefork">MinSpareServers</directive></seealso> <seealso><directive module="mpm_common">StartServers</directive></seealso> @@ -154,20 +154,20 @@ <directivesynopsis> <name>MinSpareServers</name> -<description>$B%"%$%I%k$J;R%5!<%P%W%m%;%9$N:G>.8D?t(B</description> +<description>アイドルな子サーバプロセスの最小個数</description> <syntax>MinSpareServers <var>number</var></syntax> <default>MinSpareServers 5</default> <contextlist><context>server config</context></contextlist> <usage> - <p><directive>MaxSpareServers</directive> $B%G%#%l%/%F%#%V$O!"(B - <em>$B%"%$%I%k$J(B</em>$B;R%5!<%P%W%m%;%9$N4uK>:G>.8D?t$r@_Dj$7$^$9!#(B - $B%"%$%I%k%W%m%;%9$H$O!"%j%/%(%9%H$r07$C$F$$$J$$%W%m%;%9$G$9!#(B - <directive>MinSpareServers</directive> $B$h$j$b>/$J$$?t$,%"%$%I%k$G$"$l$P!"(B - $B?F%W%m%;%9$O:G9b$G(B 1 $BIC$K$D$-(B 1 $B8D$N3d9g$G?7$7$$;R%W%m%;%9$r@8@.$7$^$9!#(B</p> - - <p>$BHs>o$K:.$s$G$$$k%5%$%H$G$N$_!"$3$N%Q%i%a!<%?$r%A%e!<%K%s%0$9$k$Y$-$G$9!#(B - $B$3$N%Q%i%a!<%?$rBg$-$/$9$k$H$$$&$3$H$O!"BgDq$N>l9g$O0-$$H/A[$G$9!#(B</p> + <p><directive>MaxSpareServers</directive> ディレクティブは、 + <em>アイドルな</em>子サーバプロセスの希望最小個数を設定します。 + アイドルプロセスとは、リクエストを扱っていないプロセスです。 + <directive>MinSpareServers</directive> よりも少ない数がアイドルであれば、 + 親プロセスは最高で 1 秒につき 1 個の割合で新しい子プロセスを生成します。</p> + + <p>非常に混んでいるサイトでのみ、このパラメータをチューニングするべきです。 + このパラメータを大きくするということは、大抵の場合は悪い発想です。</p> </usage> <seealso><directive module="prefork">MaxSpareServers</directive></seealso> <seealso><directive module="mpm_common">StartServers</directive></seealso> diff --git a/docs/manual/mod/quickreference.xml.ja b/docs/manual/mod/quickreference.xml.ja index f4c1d0be7f..0529017781 100644 --- a/docs/manual/mod/quickreference.xml.ja +++ b/docs/manual/mod/quickreference.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE quickreference SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 395228:636495 (outdated) --> @@ -21,21 +21,21 @@ --> <quickreference metafile="quickreference.xml.meta"> - <title>$B%G%#%l%/%F%#%V(B $B%/%$%C%/%j%U%!%l%s%9(B</title> + <title>ディレクティブ クイックリファレンス</title> <summary> - <p>$B%G%#%l%/%F%#%V(B $B%/%$%C%/%j%U%!%l%s%9$G$O!"3F(B Apache $B@_Dj%G%#%l%/%F%#%V$N(B - $B;HMQJ}K!!"%G%U%)%k%HCM!"%9%F!<%?%9$H%3%s%F%-%9%H$r<($7$F$$$^$9!#(B - $B3F%G%#%l%/%F%#%V$N!"$h$j>\$7$$>pJs$K4X$7$F$O(B - <a href="directive-dict.html">$B%G%#%l%/%F%#%V<-=q(B</a>$B$r(B - $B$4Mw2<$5$$!#(B</p> + <p>ディレクティブ クイックリファレンスでは、各 Apache 設定ディレクティブの + 使用方法、デフォルト値、ステータスとコンテキストを示しています。 + 各ディレクティブの、より詳しい情報に関しては + <a href="directive-dict.html">ディレクティブ辞書</a>を + ご覧下さい。</p> - <p>$BBh(B 1 $BNsL\$O%G%#%l%/%F%#%V$NL>A0$H;HMQJ}K!$G$9!#(B - $BBh(B 2 $BNsL\$O(B ($B$b$7$"$l$P(B) $B%G%U%)%k%HCM$H$J$C$F$$$^$9!#(B - $B%G%U%)%k%HCM$,D9$9$.$FI=<($7$-$l$J$$>l9g$O!":G=i$NJ8;zNs$N8e$m$K(B - $B!V(B + $B!W$,B3$-$^$9!#(B</p> + <p>第 1 列目はディレクティブの名前と使用方法です。 + 第 2 列目は (もしあれば) デフォルト値となっています。 + デフォルト値が長すぎて表示しきれない場合は、最初の文字列の後ろに + 「 + 」が続きます。</p> - <p>$BBh(B 3, 4 $BNs$O!"2<$NI=$NCm<a$K=>$C$F!"(B - $B%G%#%l%/%F%#%V$N;HMQ$G$-$k%3%s%F%-%9%H$H!"(B - $B%G%#%l%/%F%#%V$N%9%F!<%?%9$,<($5$l$F$$$^$9!#(B</p> + <p>第 3, 4 列は、下の表の注釈に従って、 + ディレクティブの使用できるコンテキストと、 + ディレクティブのステータスが示されています。</p> </summary> </quickreference> diff --git a/docs/manual/mod/worker.xml.ja b/docs/manual/mod/worker.xml.ja index dc82001ac4..45adfa9998 100644 --- a/docs/manual/mod/worker.xml.ja +++ b/docs/manual/mod/worker.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:431460 (outdated) --> @@ -23,100 +23,100 @@ <modulesynopsis metafile="worker.xml.meta"> <name>worker</name> -<description>$B%^%k%A%9%l%C%I$H%^%k%A%W%m%;%9$N%O%$%V%j%C%I7?(B -$B%&%'%V%5!<%P$r<BAu$7$?%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B</description> +<description>マルチスレッドとマルチプロセスのハイブリッド型 +ウェブサーバを実装したマルチプロセッシングモジュール</description> <status>MPM</status> <sourcefile>worker.c</sourcefile> <identifier>mpm_worker_module</identifier> <summary> - <p>$B$3$N%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B (MPM) - $B$O!"%^%k%A%9%l%C%I$H%^%k%A%W%m%;%9$N%O%$%V%j%C%I7?%5!<%P$r(B - $B<BAu$7$F$$$^$9!#%j%/%(%9%H$N1~Ez$K%9%l%C%I$r;H$&$H!"(B - $B%W%m%;%9%Y!<%9$N%5!<%P$h$j$b>/$J$$%7%9%F%`;q8;$G!"(B - $BB?$/$N%j%/%(%9%H$K1~Ez$9$k$3$H$,$G$-$^$9!#(B - $B$5$i$K!"B?$/$N%9%l%C%I$r;}$C$?J#?t$N%W%m%;%9$r0];}$9$k$3$H$G!"(B - $B%W%m%;%9%Y!<%9$N%5!<%P$N;}$D0BDj@-$rJ];}$7$F$$$^$9!#(B</p> - - <p>$B$3$N(B MPM $B$r@)8f$9$k$N$K;H$o$l$k:G$b=EMW$J%G%#%l%/%F%#%V$O!"(B - <directive module="mpm_common">ThreadsPerChild</directive> $B$H(B - <directive module="mpm_common">MaxClients</directive> $B$G$9!#(B - <directive module="mpm_common">ThreadsPerChild</directive> $B$O(B - $B3F;R%W%m%;%9$GMQ0U$5$l$k%9%l%C%I?t$r@)8f$7$F!"(B - <directive module="mpm_common">MaxClients</directive> $B$O(B - $B5/F0$5$l$k%9%l%C%I$NAm?t$N:GBgCM$r@)8B$7$^$9!#(B</p> + <p>このマルチプロセッシングモジュール (MPM) + は、マルチスレッドとマルチプロセスのハイブリッド型サーバを + 実装しています。リクエストの応答にスレッドを使うと、 + プロセスベースのサーバよりも少ないシステム資源で、 + 多くのリクエストに応答することができます。 + さらに、多くのスレッドを持った複数のプロセスを維持することで、 + プロセスベースのサーバの持つ安定性を保持しています。</p> + + <p>この MPM を制御するのに使われる最も重要なディレクティブは、 + <directive module="mpm_common">ThreadsPerChild</directive> と + <directive module="mpm_common">MaxClients</directive> です。 + <directive module="mpm_common">ThreadsPerChild</directive> は + 各子プロセスで用意されるスレッド数を制御して、 + <directive module="mpm_common">MaxClients</directive> は + 起動されるスレッドの総数の最大値を制限します。</p> </summary> <seealso><a href="../bind.html">Apache -$B$N;HMQ$9$k%"%I%l%9$H%]!<%H$N@_Dj(B</a></seealso> +の使用するアドレスとポートの設定</a></seealso> -<section id="how-it-works"><title>$BF0:nJ}K!(B</title> - <p>$B0l$D$N@)8fMQ%W%m%;%9(B ($B?F(B) $B$,;R%W%m%;%9$r5/F0$7$^$9!#(B - $B;R%W%m%;%9$O(B +<section id="how-it-works"><title>動作方法</title> + <p>一つの制御用プロセス (親) が子プロセスを起動します。 + 子プロセスは <directive module="mpm_common">ThreadsPerChild</directive> - $B%G%#%l%/%F%#%V$G;XDj$5$l$?0lDj?t$N%5!<%P%9%l%C%I$H@\B3$r(B - listen $B$9$k%9%l%C%I$r0l$D:n$j$^$9!#(B - Listener $B%9%l%C%I$O@\B3$,Mh$?$H$-$K%5!<%P%W%m%;%9$KEO$7$^$9!#(B</p> - - <p>Apache $B$O(B<dfn>$B%9%Z%"$N(B</dfn>$B!"$D$^$j%"%$%I%k$J%5!<%P%9%l%C%I$N(B - $B%W!<%k$r>o$K0];}$7$F$$$F!"$=$l$i$OF~$C$F$/$k%j%/%(%9%H$K(B - $BEz$($i$l$k$h$&$KBT5!$7$F$$$^$9!#(B - $B$3$N$h$&$K$7$F!"%/%i%$%"%s%H$O%j%/%(%9%H$N1~Ez$,F@$i$l$k$h$&$K$J$k$?$a$K(B - $B?7$7$$%9%l%C%I$d%W%m%;%9$,@8@.$5$l$k$N$r(B - $BBT$?$J$/$F$b$h$$$h$&$K$J$C$F$$$^$9!#(B - $B5/F0=i4|;~$N%W%m%;%9Am?t$O!"(B + ディレクティブで指定された一定数のサーバスレッドと接続を + listen するスレッドを一つ作ります。 + Listener スレッドは接続が来たときにサーバプロセスに渡します。</p> + + <p>Apache は<dfn>スペアの</dfn>、つまりアイドルなサーバスレッドの + プールを常に維持していて、それらは入ってくるリクエストに + 答えられるように待機しています。 + このようにして、クライアントはリクエストの応答が得られるようになるために + 新しいスレッドやプロセスが生成されるのを + 待たなくてもよいようになっています。 + 起動初期時のプロセス総数は、 <directive module="mpm_common">StartServers</directive> - $B%G%#%l%/%F%#%V$G@_Dj$5$l$^$9!#$=$N8e$N2TF/Cf$K!"(B - Apache $B$OA4%W%m%;%9$N%"%$%I%k%9%l%C%I$N9g7W?t$r8+@Q$b$C$F!"(B - <directive module="mpm_common">MinSpareThreads</directive> $B$H(B + ディレクティブで設定されます。その後の稼働中に、 + Apache は全プロセスのアイドルスレッドの合計数を見積もって、 + <directive module="mpm_common">MinSpareThreads</directive> と <directive module="mpm_common">MaxSpareThreads</directive> - $B$G;XDj$5$l$?HO0O$NCf$K$3$N?t$,<}$^$k$h$&$K(B fork $B$7$?$j(B - kill $B$7$?$j$7$^$9!#$3$NA`:n$OHs>o$K<+N'E*$J$N$G!"(B - $B$3$l$i$N%G%#%l%/%F%#%V$r%G%U%)%k%HCM$+$iJQ99$9$kI,MW$O(B - $B$a$C$?$K$J$$$G$7$g$&!#(B - $BF1;~$K1~Ez$9$k$3$H$N$G$-$k%/%i%$%"%s%H?t$N:GBg?t(B - ($B$D$^$jA4%W%m%;%9Cf$NAm%9%l%C%I?t$N:GBgCM(B) $B$O(B + で指定された範囲の中にこの数が収まるように fork したり + kill したりします。この操作は非常に自律的なので、 + これらのディレクティブをデフォルト値から変更する必要は + めったにないでしょう。 + 同時に応答することのできるクライアント数の最大数 + (つまり全プロセス中の総スレッド数の最大値) は <directive module="mpm_common">MaxClients</directive> - $B%G%#%l%/%F%#%V$G7hDj$5$l$^$9!#(B - $B3hF0Cf$N;R%W%m%;%9?t$N:GBgCM$O(B - <directive module="mpm_common">MaxClients</directive> $B$r(B - <directive module="mpm_common">ThreadsPerChild</directive> $B$G3d$C$?(B - $B$b$N$K$J$j$^$9!#(B</p> + ディレクティブで決定されます。 + 活動中の子プロセス数の最大値は + <directive module="mpm_common">MaxClients</directive> を + <directive module="mpm_common">ThreadsPerChild</directive> で割った + ものになります。</p> - <p>$B3hF0Cf$N;R%W%m%;%9$N?t$H;R%W%m%;%9Cf$N%5!<%P%9%l%C%I$N?t$N1[$($i$l$J$$(B - $B>e8B$r@_Dj$9$k%G%#%l%/%F%#%V$,Fs$D$"$j$^$9!#$3$l$i$O%5!<%P$r(B - $B40A4$KDd;_$7$F!":F5/F0$9$k$3$H$G$7$+JQ99$9$k$3$H$O$G$-$^$;$s!#(B + <p>活動中の子プロセスの数と子プロセス中のサーバスレッドの数の越えられない + 上限を設定するディレクティブが二つあります。これらはサーバを + 完全に停止して、再起動することでしか変更することはできません。 <directive module="mpm_common">ServerLimit - </directive> $B$O3hF0Cf$N;R%W%m%;%9$N1[$($i$l$J$$>e8B$r@_Dj$7!"(B - <directive module="mpm_common">MaxClients</directive> $B%G%#%l%/%F%#%V(B - $B$NCM$r(B <directive module="mpm_common"> - ThreadsPerChild</directive> $B$NCM$G3d$C$?CM0J>e$G$"$k(B - $BI,MW$,$"$j$^$9!#(B<directive module="mpm_common">ThreadLimit</directive> $B$O(B - $B%5!<%P%9%l%C%I$N1[$($i$l$J$$>e8B$G!"(B<directive - module="mpm_common">ThreadsPerChild</directive> $B%G%#%l%/%F%#%V$N(B - $BCM0J>e$G$"$kI,MW$,$"$j$^$9!#%G%U%)%k%H0J30$NCM$r;XDj$9$k>l9g$O(B - $BB>$N(B <module>worker</module> $B%G%#%l%/%F%#%V$h$j$bA0$K=q$+$l$F$$$k(B - $BI,MW$,$"$j$^$9!#(B</p> - - <p>$B3hF0Cf$N;R%W%m%;%972$K2C$($F!">/$J$/$H$b0l$D$N%5!<%P%9%l%C%I$,(B - $B4{B8$N%/%i%$%"%s%H$+$i$N@\B3$r07$C$F$$$k=*N;$7$h$&$H$7$F$$$k(B - $B;R%W%m%;%9$,$"$k2DG=@-$,$"$j$^$9!#=*N;Cf$N%W%m%;%9$O(B <directive - module="mpm_common">MaxClients</directive> $B$G;XDj$5$l$??t$^$G(B - $BB8:_$G$-$^$9$,!"<B:]$K4|BT$5$l$k?t$O$:$C$H>/$J$/$J$j$^$9!#$3$N(B - $B?6Iq$$$O3F;R%W%m%;%9$r=*N;$5$;$J$$$h$&$K$9$k$3$H$G2sHr$G$-$^$9!#(B - $B$3$l$O0J2<$NMM$K$7$F<B8=$G$-$^$9!#(B</p> + </directive> は活動中の子プロセスの越えられない上限を設定し、 + <directive module="mpm_common">MaxClients</directive> ディレクティブ + の値を <directive module="mpm_common"> + ThreadsPerChild</directive> の値で割った値以上である + 必要があります。<directive module="mpm_common">ThreadLimit</directive> は + サーバスレッドの越えられない上限で、<directive + module="mpm_common">ThreadsPerChild</directive> ディレクティブの + 値以上である必要があります。デフォルト以外の値を指定する場合は + 他の <module>worker</module> ディレクティブよりも前に書かれている + 必要があります。</p> + + <p>活動中の子プロセス群に加えて、少なくとも一つのサーバスレッドが + 既存のクライアントからの接続を扱っている終了しようとしている + 子プロセスがある可能性があります。終了中のプロセスは <directive + module="mpm_common">MaxClients</directive> で指定された数まで + 存在できますが、実際に期待される数はずっと少なくなります。この + 振舞いは各子プロセスを終了させないようにすることで回避できます。 + これは以下の様にして実現できます。</p> <ul> <li><directive module="mpm_common"> - MaxRequestsPerChild</directive> $B$NCM$r(B 0 $B$K@_Dj$9$k(B</li> + MaxRequestsPerChild</directive> の値を 0 に設定する</li> <li><directive module="mpm_common"> - MaxSpareThreads</directive> $B$NCM$r(B + MaxSpareThreads</directive> の値を <directive module="mpm_common">MaxClients</directive> - $B$HF1$8CM$K$9$k(B</li> + と同じ値にする</li> </ul> - <p><module>worker</module> MPM $B$NE57?E*$J%W%m%;%9!&%9%l%C%I@)8f$N(B - $B@_Dj$G$O!"<!$N$h$&$K$J$j$^$9!#(B</p> + <p><module>worker</module> MPM の典型的なプロセス・スレッド制御の + 設定では、次のようになります。</p> <example> ServerLimit 16<br /> @@ -127,21 +127,21 @@ ThreadsPerChild 25 </example> - <p>$BDL>o(B Unix $B$G$O?F%W%m%;%9$O(B 80 $BHV%]!<%H$K%P%$%s%I$9$k$?$a$K(B - <code>root</code> $B$G5/F0$5$l$^$9$,!";R%W%m%;%9$d%9%l%C%I$O(B - $B$b$C$HDc$$8"8B$N%f!<%6$G(B Apache $B$K$h$C$F5/F0$5$l$^$9!#(B - <directive module="mpm_common">User</directive> $B$H(B - <directive module="mpm_common">Group</directive> $B%G%#%l%/%F%#%V$O(B - Apache $B$N;R%W%m%;%9$N8"8B$r@_Dj$9$k$N$KMQ$$$i$l$^$9!#(B - $B;R%W%m%;%9$O%/%i%$%"%s%H$KAw$k%3%s%F%s%DA4$F$rFI$a$J$$$H$$$1$^$;$s$,!"(B - $B2DG=$J8B$jI,MW:G>.8B$N8"8B$N$_$r;}$C$F$$$k$h$&$K$9$k$Y$-$G$9!#(B - $B$5$i$K!"(B<program>suexec</program> - $B$,;HMQ$5$l$F$$$J$$8B$j!"$3$l$i$N%G%#%l%/%F%#%V$O(B - CGI $B%9%/%j%W%H$G7Q>5$5$l$k8"8B$b@_Dj$7$^$9!#(B</p> + <p>通常 Unix では親プロセスは 80 番ポートにバインドするために + <code>root</code> で起動されますが、子プロセスやスレッドは + もっと低い権限のユーザで Apache によって起動されます。 + <directive module="mpm_common">User</directive> と + <directive module="mpm_common">Group</directive> ディレクティブは + Apache の子プロセスの権限を設定するのに用いられます。 + 子プロセスはクライアントに送るコンテンツ全てを読めないといけませんが、 + 可能な限り必要最小限の権限のみを持っているようにするべきです。 + さらに、<program>suexec</program> + が使用されていない限り、これらのディレクティブは + CGI スクリプトで継承される権限も設定します。</p> <p><directive module="mpm_common">MaxRequestsPerChild</directive> - $B$O!"8E$$%W%m%;%9$rDd;_$7$F?7$7$$%W%m%;%9$r5/F0$9$k$3$H$K$h$C$F!"(B - $B$I$NDxEY$NIQEY$G%5!<%P$,%W%m%;%9$r%j%5%$%/%k$9$k$+$r@)8f$7$^$9!#(B</p> + は、古いプロセスを停止して新しいプロセスを起動することによって、 + どの程度の頻度でサーバがプロセスをリサイクルするかを制御します。</p> </section> <directivesynopsis location="mpm_common"><name>AcceptMutex</name> diff --git a/docs/manual/mpm.xml.ja b/docs/manual/mpm.xml.ja index ddfd359871..82f3fae7ed 100644 --- a/docs/manual/mpm.xml.ja +++ b/docs/manual/mpm.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -22,87 +22,87 @@ <manualpage metafile="mpm.xml.meta"> - <title>$B%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B (MPM)</title> + <title>マルチプロセッシングモジュール (MPM)</title> <summary> -<p>$B$3$NJ8=q$G$O%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k$,$I$N$h$&$J$b$N$G!"(B -Apache HTTP $B%5!<%P$G$I$N$h$&$K;HMQ$5$l$k$+$K$D$$$F2r@b$7$F$$$^$9!#(B</p> +<p>この文書ではマルチプロセッシングモジュールがどのようなもので、 +Apache HTTP サーバでどのように使用されるかについて解説しています。</p> </summary> -<section id="introduction"><title>$B$O$8$a$K(B</title> +<section id="introduction"><title>はじめに</title> - <p>Apache HTTP $B%5!<%P$O0[$J$kI}9-$$4D6-!"B?<oB?MM$J%W%i%C%H%[!<%`$G(B - $BF0:n$9$k$h$&$K!"%Q%o%U%k$G=@Fp@-$KIY$s$@@_7W$K$J$C$F$$$^$9!#(B - $B0[$J$k%W%i%C%H%[!<%`!&0[$J$k4D6-$G$O$7$P$7$P!"(B - $B0[$J$k5!G=$,I,MW$K$J$C$?$j!"(B - $BF1$85!G=$G$b8zN($N$?$a$K0[$J$k<BAu$,I,MW$K$J$C$?$j$7$^$9!#(B - Apache $B$G$O%b%8%e!<%k2=$5$l$?@_7W$K$h$jI}9-$$4D6-$KE,1~$7$F$-$^$7$?!#(B - $B$3$N@_7W$N$*$+$2$G!"4IM}<T$O(B - $B%3%s%Q%$%k;~$^$?$O<B9T;~$K$I$N%b%8%e!<%k$r%m!<%I$9$k$+A*$V$3$H$K$h$C$F!"(B - $B$I$N5!G=$r%5!<%P$K<h$j9~$`$+A*Br$9$k$3$H$,$G$-$^$9!#(B</p> + <p>Apache HTTP サーバは異なる幅広い環境、多種多様なプラットホームで + 動作するように、パワフルで柔軟性に富んだ設計になっています。 + 異なるプラットホーム・異なる環境ではしばしば、 + 異なる機能が必要になったり、 + 同じ機能でも効率のために異なる実装が必要になったりします。 + Apache ではモジュール化された設計により幅広い環境に適応してきました。 + この設計のおかげで、管理者は + コンパイル時または実行時にどのモジュールをロードするか選ぶことによって、 + どの機能をサーバに取り込むか選択することができます。</p> - <p>Apache 2.0 $B$G$O!"(B - $B$3$N%b%8%e!<%k2=$5$l$?@_7W$r%5!<%P$N4pK\5!G=$K$^$G3HD%$7$^$7$?!#(B - $B%5!<%P$K$O@:A*$5$l$?%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B (MPM) - $B$,IU$$$F$-$F!"$3$l$i$O%^%7%s$N%M%C%H%o!<%/%]!<%H$r%P%$%s%I$7$?$j!"(B - $B%j%/%(%9%H$r<u$1IU$1$?$j!"%j%/%(%9%H$r07$&$h$&;R%W%m%;%9$K3d$jEv$F$?$j!"(B - $B$H$$$C$?Lr3d$r;}$A$^$9!#(B</p> + <p>Apache 2.0 では、 + このモジュール化された設計をサーバの基本機能にまで拡張しました。 + サーバには精選されたマルチプロセッシングモジュール (MPM) + が付いてきて、これらはマシンのネットワークポートをバインドしたり、 + リクエストを受け付けたり、リクエストを扱うよう子プロセスに割り当てたり、 + といった役割を持ちます。</p> - <p>$B%b%8%e!<%k2=$5$l$?@_7W$r%5!<%P$N$3$N%l%Y%k$^$G3HD%$9$k$3$H$G(B - $BFs$D$N=EMW$JMxE@$,@8$^$l$^$9(B:</p> + <p>モジュール化された設計をサーバのこのレベルまで拡張することで + 二つの重要な利点が生まれます:</p> <ul> - <li>Apache $B$OI}9-$$%*%Z%l!<%F%#%s%0%7%9%F%`$r(B - $B$h$jH~$7$/8zN(E*$K%5%]!<%H$G$-$^$9!#(B - $BFC$K(B Windows $BHG$N(B Apache $B$O?oJ,8zN(E*$K$J$j$^$7$?!#(B - $B$J$<$J$i(B <module>mpm_winnt</module> - $B$K$h$C$F!"(BApache 1.3 $B$GMQ$$$i$l$F$$$?(B POSIX - $B%l%$%d$NBe$o$j$K%M%$%F%#%V$N%M%C%H%o!<%/5!G=$r(B - $BMxMQ$G$-$k$+$i$G$9!#(B - $BFCJL2=$5$l$?(B MPM - $B$r<BAu$7$?B>$N%*%Z%l!<%F%#%s%0%7%9%F%`$G$b!"(B - $BF1MM$K$3$NMxE@$O@8$^$l$^$9!#(B</li> - - <li>$B%5!<%P$OFCDj$N%5%$%H8~$1$K!"$h$j>e<j$K%+%9%?%^%$%:$G$-$^$9!#(B - $BNc$($P!"Hs>o$KBg$-$J%9%1!<%i%S%j%F%#$rI,MW$H$9$k%5%$%H$G$O!"(B - <module>worker</module> $B$d(B <module>event</module> $B$H$$$C$?%9%l%C%I2=$5$l$?(B - MPM $B$rMxMQ$G$-$k0lJ}$G!"0BDj@-$d8E$$%=%U%H%&%'%"$H$N8_49@-$r(B - $BI,MW$H$9$k%5%$%H$G$O(B <module>prefork</module> - $B$,MxMQ$G$-$^$9!#(B</li> + <li>Apache は幅広いオペレーティングシステムを + より美しく効率的にサポートできます。 + 特に Windows 版の Apache は随分効率的になりました。 + なぜなら <module>mpm_winnt</module> + によって、Apache 1.3 で用いられていた POSIX + レイヤの代わりにネイティブのネットワーク機能を + 利用できるからです。 + 特別化された MPM + を実装した他のオペレーティングシステムでも、 + 同様にこの利点は生まれます。</li> + + <li>サーバは特定のサイト向けに、より上手にカスタマイズできます。 + 例えば、非常に大きなスケーラビリティを必要とするサイトでは、 + <module>worker</module> や <module>event</module> といったスレッド化された + MPM を利用できる一方で、安定性や古いソフトウェアとの互換性を + 必要とするサイトでは <module>prefork</module> + が利用できます。</li> </ul> - <p>$B%f!<%6%l%Y%k$G$O!"(BMPM $B$OB>$N(B Apache - $B%b%8%e!<%k$HF1Ey$K8+$($^$9!#(B - $B<g$J0c$$$O!"$$$D$G$bM#0l$N(B MPM - $B$,%m!<%I$5$l$J$1$l$P$J$i$J$$$H$$$&E@$G$9!#(B - $BMxMQ2DG=$J(B MPM $B$O(B - <a href="mod/">module $B%$%s%G%C%/%9(B</a>$B$K$"$j$^$9!#(B</p> + <p>ユーザレベルでは、MPM は他の Apache + モジュールと同等に見えます。 + 主な違いは、いつでも唯一の MPM + がロードされなければならないという点です。 + 利用可能な MPM は + <a href="mod/">module インデックス</a>にあります。</p> </section> -<section id="choosing"><title>MPM $B$rA*$V(B</title> +<section id="choosing"><title>MPM を選ぶ</title> - <p>MPM $B$O@_DjCf$KA*Br$7$F!"%5!<%PFbIt$K%3%s%Q%$%k$5$l$J$1$l$P(B - $B$J$j$^$;$s!#(B - $B%3%s%Q%$%i$O!"%9%l%C%I$,;HMQ$5$l$F$$$k>l9g$KMM!9$J5!G=$r:GE,2=$G$-$^$9$,!"(B - $B$=$N$?$a$K$O$=$b$=$b%9%l%C%I$,;H$o$l$F$$$k$H$$$&$3$H$rCN$kI,MW$,$"$j$^$9!#(B</p> + <p>MPM は設定中に選択して、サーバ内部にコンパイルされなければ + なりません。 + コンパイラは、スレッドが使用されている場合に様々な機能を最適化できますが、 + そのためにはそもそもスレッドが使われているということを知る必要があります。</p> - <p>$BK>$_$N(B MPM $B$r<B:]$KA*$V$?$a$K$O!"(B<program>configure</program> $B%9%/%j%W%H$G(B - <code>--with-mpm=<em>NAME</em></code> $B0z?t$rMQ$$$F$/$@$5$$!#(B - <em>NAME</em> $B$OK>$_$N(B MPM $B$NL>A0$G$9!#(B</p> + <p>望みの MPM を実際に選ぶためには、<program>configure</program> スクリプトで + <code>--with-mpm=<em>NAME</em></code> 引数を用いてください。 + <em>NAME</em> は望みの MPM の名前です。</p> - <p>$B%5!<%P%3%s%Q%$%k8e$O!"$I$N(B MPM $B$,A*Br$5$l$?$+$r(B - <code>./httpd -l</code> $B$G3N$+$a$k$3$H$,$G$-$^$9!#(B - $B$3$N%3%^%s%I$O!"(BMPM - $B$r4^$a!"%5!<%P$K%3%s%Q%$%k$GAH$_9~$^$l$?%b%8%e!<%kA4$F$r(B - $BNs5s$7$^$9!#(B</p> + <p>サーバコンパイル後は、どの MPM が選択されたかを + <code>./httpd -l</code> で確かめることができます。 + このコマンドは、MPM + を含め、サーバにコンパイルで組み込まれたモジュール全てを + 列挙します。</p> </section> -<section id="defaults"><title>MPM $B%G%U%)%k%HCM(B</title> +<section id="defaults"><title>MPM デフォルト値</title> -<p>$B<!I=$KMM!9$J(B OS $B8~$1$N%G%U%)%k%H$N(B MPM $B0lMw$r7G:\$7$F$$$^$9!#(B -$B%3%s%Q%$%k;~$K0U?^E*$KB>$rA*Br$7$J$1$l$P!"<+F0E*$K$3$l$i$N(B MPM -$B$,A*Br$5$l$^$9!#(B</p> +<p>次表に様々な OS 向けのデフォルトの MPM 一覧を掲載しています。 +コンパイル時に意図的に他を選択しなければ、自動的にこれらの MPM +が選択されます。</p> <table> <columnspec><column width=".2"/><column width=".2"/></columnspec> diff --git a/docs/manual/new_features_2_0.xml.ja b/docs/manual/new_features_2_0.xml.ja index 3d96563aaf..b4ff5f8675 100644 --- a/docs/manual/new_features_2_0.xml.ja +++ b/docs/manual/new_features_2_0.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -22,217 +22,217 @@ <manualpage metafile="new_features_2_0.xml.meta"> -<title>Apache 2.0 $B$N?75!G=$N35MW(B</title> +<title>Apache 2.0 の新機能の概要</title> <summary> - <p>$B$3$NJ8=q$G$O!"(BApache HTTP $B%5!<%P%P!<%8%g%s(B 1.3 $B$H(B 2.0 - $B$N<g$J0c$$$K$D$$$F5-=R$7$F$$$^$9!#(B</p> + <p>この文書では、Apache HTTP サーババージョン 1.3 と 2.0 + の主な違いについて記述しています。</p> </summary> -<seealso><a href="upgrading.html">1.3 $B$+$i(B 2.0 $B$X$N%"%C%W%0%l!<%I(B</a></seealso> +<seealso><a href="upgrading.html">1.3 から 2.0 へのアップグレード</a></seealso> <section id="core"> - <title>$B%3%"5!G=$N3HD%(B</title> + <title>コア機能の拡張</title> <dl> - <dt>Unix $B$N%9%l%C%I(B</dt> + <dt>Unix のスレッド</dt> - <dd>POSIX $B%9%l%C%I$r%5%]!<%H$7$F$$$k(B Unix $B%7%9%F%`>e$G$O!"(B - Apache $B$O%^%k%A%W%m%;%9!"%^%k%A%9%l%C%I$N%O%$%V%j%C%I%b!<%I$G(B - $B<B9T$G$-$k$h$&$K$J$j$^$7$?!#$3$l$K$h$j(B - $BB?$/$N@_Dj$K$*$$$F%9%1!<%i%S%j%F%#$,8~>e$7$^$9!#(B</dd> + <dd>POSIX スレッドをサポートしている Unix システム上では、 + Apache はマルチプロセス、マルチスレッドのハイブリッドモードで + 実行できるようになりました。これにより + 多くの設定においてスケーラビリティが向上します。</dd> - <dt>$B?7$7$$%S%k%I%7%9%F%`(B</dt> + <dt>新しいビルドシステム</dt> - <dd>$B%S%k%I%7%9%F%`$O(B <code>autoconf</code> $B$H(B <code>libtool</code> - $B$K4p$E$$$?$b$N$K$J$k$h$&$K!"(B - $B?7$7$/=q$-D>$5$l$^$7$?!#$3$l$K$h$j!"(BApache $B$N(B configure $B$N%7%9%F%`$O(B - $BB>$N%Q%C%1!<%8$H;w$?$b$N$K$J$j$^$7$?!#(B</dd> + <dd>ビルドシステムは <code>autoconf</code> と <code>libtool</code> + に基づいたものになるように、 + 新しく書き直されました。これにより、Apache の configure のシステムは + 他のパッケージと似たものになりました。</dd> - <dt>$B%^%k%A%W%m%H%3%k%5%]!<%H(B</dt> + <dt>マルチプロトコルサポート</dt> - <dd>Apache $B$KJ#?t$N%W%m%H%3%k$r07$&$?$a$N5!9=$,Hw$o$j$^$7$?!#(B - $BNc$H$7$F(B <module>mod_echo</module> $B$,=q$+$l$F$$$^$9!#(B</dd> + <dd>Apache に複数のプロトコルを扱うための機構が備わりました。 + 例として <module>mod_echo</module> が書かれています。</dd> - <dt>Unix $B0J30$N%W%i%C%H%U%)!<%`$N%5%]!<%H$N2~A1(B</dt> + <dt>Unix 以外のプラットフォームのサポートの改善</dt> - <dd>Apache 2.0 $B$O(B BeOS$B!"(BOS/2$B!"(BWindows $B$J$I$N(B Unix $B0J30$N(B - $B%W%i%C%H%U%)!<%`$G!"$h$jB.$/!"$h$j0BDj$7$FF0:n$9$k$h$&$K$J$j$^$7$?!#(B - $B%W%i%C%H%U%)!<%`FCM-$N(B <a - href="mpm.html">$B%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B</a> (MPM) $B$H(B - Apache Portable Runtime (APR) $B$NF3F~$K$h$j!"(B - $B%M%$%F%#%t$N(B API $B$G<BAu$5$l$k$h$&$K$J$j!"(B - $B%P%0$,B?$/!"@-G=$N0-$$$3$H$,B?$$(B POSIX $B%(%_%e%l!<%7%g%s%l%$%d$N;HMQ$r(B - $B2sHr$9$k$3$H$,$G$-$^$7$?!#(B</dd> + <dd>Apache 2.0 は BeOS、OS/2、Windows などの Unix 以外の + プラットフォームで、より速く、より安定して動作するようになりました。 + プラットフォーム特有の <a + href="mpm.html">マルチプロセッシングモジュール</a> (MPM) と + Apache Portable Runtime (APR) の導入により、 + ネイティヴの API で実装されるようになり、 + バグが多く、性能の悪いことが多い POSIX エミュレーションレイヤの使用を + 回避することができました。</dd> - <dt>$B?7$7$$(B Apache API</dt> + <dt>新しい Apache API</dt> - <dd>2.0 $B$G$O%b%8%e!<%k$N(B API $B$,Bg$-$/JQ$o$j$^$7$?!#(B - 1.3 $B$K$"$C$?%b%8%e!<%k$N=gHV(B/$BM%@hEY$NLdBj$NB?$/$O(B - $B$J$/$J$C$F$$$k$O$:$G$9!#(B2.0 $B$OM%@hEY$NA*Br$r$[$H$s$I$r<+F0E*$K9T$J$$!"(B - $B%b%8%e!<%k$N=gHV$O$h$j=@Fp@-$r9b$a$k$?$a$K%U%C%/Kh$K9T$J$o$l$k$h$&$K(B - $B$J$j$^$7$?!#$^$?!"%3%"(B Apache $B%5!<%P$K%Q%C%A$r$"$F$k$3$H$J$/(B - $BDI2C$N%b%8%e!<%k5!G=$rDs6!$9$k$3$H$,$G$-$k$h$&$K?7$7$$4X?t$,(B - $BDI2C$5$l$^$7$?!#(B</dd> + <dd>2.0 ではモジュールの API が大きく変わりました。 + 1.3 にあったモジュールの順番/優先度の問題の多くは + なくなっているはずです。2.0 は優先度の選択をほとんどを自動的に行ない、 + モジュールの順番はより柔軟性を高めるためにフック毎に行なわれるように + なりました。また、コア Apache サーバにパッチをあてることなく + 追加のモジュール機能を提供することができるように新しい関数が + 追加されました。</dd> - <dt>IPv6 $B%5%]!<%H(B</dt> + <dt>IPv6 サポート</dt> - <dd>Apache $B$,;HMQ$7$F$$$k(B Apache Portable Runtime library $B$,(B - IPv6 $B$r%5%]!<%H$7$F$$$k%7%9%F%`$G$O(B Apache $B$O(B $B%G%U%)%k%H$G(B - IPv6 $B$N%=%1%C%H$r(B listen $B$7$^$9!#$5$i$K!"(B + <dd>Apache が使用している Apache Portable Runtime library が + IPv6 をサポートしているシステムでは Apache は デフォルトで + IPv6 のソケットを listen します。さらに、 <directive module="mpm_common">Listen</directive>, <directive module="core">NameVirtualHost</directive>, <directive module="core">VirtualHost</directive> - $B$N3F%G%#%l%/%F%#%V$,(B IPv6 $B$N%"%I%l%9$r(B - $B%5%]!<%H$9$k$h$&$K$J$j$^$7$?(B ($BNc$($P!"(B - "<code>Listen [2001:db8::1]:8080</code>")$B!#(B</dd> - - <dt>$B%U%#%k%?(B</dt> - - <dd>Apache $B$N%b%8%e!<%k$O%5!<%P$+$iAw$i$l$F$-$?$j!"%5!<%P$X(B - $BAw$k%9%H%j!<%`$KBP$7$FF0:n$9$k%U%#%k%?$H$7$F=q$/$3$H$,$G$-$k$h$&$K(B - $B$J$j$^$7$?!#$3$l$K$h$j!"Nc$($P(B CGI $B%9%/%j%W%H$N=PNO$r(B - <module>mod_include</module> $B$N(B <code>INCLUDES</code> $B%U%#%k%?$r;H$C$F(B - Server Side Include $B$N%G%#%l%/%F%#%V$r2r@O$9$k!"(B - $B$H$$$&$h$&$J$3$H$,2DG=$K$J$j$^$7$?!#(B<module>mod_ext_filter</module> - $B$G30It%W%m%0%i%`$r%U%#%k%?$H$7$FF0:n$5$;$k$3$H$,$G$-$^$9!#(B - $B$3$l$O(B CGI $B%W%m%0%i%`$r%O%s%I%i$H$7$FF0:n$5$;$k$N$H(B - $B$h$/;w$?J}K!$G$G$-$^$9!#(B</dd> - - <dt>$BB?8@8l%(%i!<1~Ez(B</dt> - - <dd>$B%V%i%&%6$X$N%(%i!<1~Ez$N%a%C%;!<%8$,!"(BSSI $B$NJ8=q$r;H$C$F(B - $BJ#?t$N8@8l$GDs6!$5$l$k$h$&$K$J$j$^$7$?!#8+$?$a$N0l4S@-$rJ]$D$?$a$K(B - $B4IM}<T$,%+%9%?%^%$%:$9$k$3$H$b$G$-$^$9!#(B</dd> - - <dt>$B@_Dj$N4JAG2=(B</dt> - - <dd>$BB?$/$N:.Mp$r>7$-$,$A$J%G%#%l%/%F%#%V$,4JAG2=$5$l$^$7$?!#(B - $B$h$/:.Mp$r0z$-5/$3$7$F$$$?(B <code>Port</code> $B%G%#%l%/%F%#%V$H(B - <code>Bind</code> $B%G%#%l%/%F%#%V$O(B - $B$J$/$J$j$^$7$?!#(B<directive module="mpm_common">Listen</directive> - $B%G%#%l%/%F%#%V$N$_$,(B IP $B%"%I%l%9$N%P%$%s%I$K;H$o$l$^$9!#(B - <directive module="core">ServerName</directive> $B%G%#%l%/%F%#%V$G$O(B - $B%j%@%$%l%/%H$H(B vhost $B$NG'<1$N$?$a$@$1$K%5!<%P$NL>A0$H%]!<%HHV9f$r(B - $B;XDj$7$^$9!#(B</dd> - - <dt>Windows NT $B$N%M%$%F%#%t(B Unicode $B%5%]!<%H(B</dt> - - <dd>Windows NT $B>e$N(B Apache 2.0 $B$O%U%!%$%kL>$NJ8;z%(%s%3!<%IA4$F$K(B - utf-8 $B$r;H$&$h$&$K$J$j$^$7$?!#$3$l$i$O(B Unicode $B%U%!%$%k%7%9%F%`$K(B - $BD>@\JQ49$5$l$k$N$G!"(BWindows 2000 $B$H(B Windows XP $B$r4^$`!"A4$F$N(B - Windows NT $B7O$GB?8@8l%5%]!<%H$,Ds6!$5$l$^$9!#(B - <em>$B$3$N%5%]!<%H$O!"%U%!%$%k%7%9%F%`$N%"%/%;%9;~$K%m!<%+%k$N(B - $B%3!<%I%Z!<%8$r;H$&(B Windows 95, 98, ME $B$K$OE,MQ$5$l$^$;$s!#(B</em></dd> - - <dt>$B@55,I=8=%i%$%V%i%j$N%"%C%W%G!<%H(B</dt> - - <dd>Apache 2.0 $B$O(B <a href="http://www.pcre.org/">Perl - $B8_49@55,I=8=%i%$%V%i%j(B (PCRE) </a>$B$r4^$s$G$$$^$9!#(B - $B@55,I=8=$NI>2A$K$O!"$h$j6/NO$K$J$C$?(B Perl 5 - $B9=J8$r;HMQ$7$^$9!#(B</dd> + の各ディレクティブが IPv6 のアドレスを + サポートするようになりました (例えば、 + "<code>Listen [2001:db8::1]:8080</code>")。</dd> + + <dt>フィルタ</dt> + + <dd>Apache のモジュールはサーバから送られてきたり、サーバへ + 送るストリームに対して動作するフィルタとして書くことができるように + なりました。これにより、例えば CGI スクリプトの出力を + <module>mod_include</module> の <code>INCLUDES</code> フィルタを使って + Server Side Include のディレクティブを解析する、 + というようなことが可能になりました。<module>mod_ext_filter</module> + で外部プログラムをフィルタとして動作させることができます。 + これは CGI プログラムをハンドラとして動作させるのと + よく似た方法でできます。</dd> + + <dt>多言語エラー応答</dt> + + <dd>ブラウザへのエラー応答のメッセージが、SSI の文書を使って + 複数の言語で提供されるようになりました。見ための一貫性を保つために + 管理者がカスタマイズすることもできます。</dd> + + <dt>設定の簡素化</dt> + + <dd>多くの混乱を招きがちなディレクティブが簡素化されました。 + よく混乱を引き起こしていた <code>Port</code> ディレクティブと + <code>Bind</code> ディレクティブは + なくなりました。<directive module="mpm_common">Listen</directive> + ディレクティブのみが IP アドレスのバインドに使われます。 + <directive module="core">ServerName</directive> ディレクティブでは + リダイレクトと vhost の認識のためだけにサーバの名前とポート番号を + 指定します。</dd> + + <dt>Windows NT のネイティヴ Unicode サポート</dt> + + <dd>Windows NT 上の Apache 2.0 はファイル名の文字エンコード全てに + utf-8 を使うようになりました。これらは Unicode ファイルシステムに + 直接変換されるので、Windows 2000 と Windows XP を含む、全ての + Windows NT 系で多言語サポートが提供されます。 + <em>このサポートは、ファイルシステムのアクセス時にローカルの + コードページを使う Windows 95, 98, ME には適用されません。</em></dd> + + <dt>正規表現ライブラリのアップデート</dt> + + <dd>Apache 2.0 は <a href="http://www.pcre.org/">Perl + 互換正規表現ライブラリ (PCRE) </a>を含んでいます。 + 正規表現の評価には、より強力になった Perl 5 + 構文を使用します。</dd> </dl> </section> <section id="module"> - <title>$B%b%8%e!<%k$N3HD%(B</title> + <title>モジュールの拡張</title> <dl> <dt><module>mod_ssl</module></dt> - <dd>Apache 2.0 $B$N?7%b%8%e!<%k!#$3$N%b%8%e!<%k$O(B OpenSSL $B$,(B - $BDs6!$9$k(B SSL/TLS $B0E9f%W%m%H%3%k$X$N%$%s%?%U%'!<%9$G$9!#(B</dd> + <dd>Apache 2.0 の新モジュール。このモジュールは OpenSSL が + 提供する SSL/TLS 暗号プロトコルへのインタフェースです。</dd> <dt><module>mod_dav</module></dt> - <dd>Apache 2.0 $B$N?7%b%8%e!<%k!#$3$N%b%8%e!<%k$O%&%'%V%3%s%F%s%D$r(B - $BAw$j!"0];}$9$k$?$a$N5,3J(B - HTTP Distributed Authoring and Versioning (DAV) $B$r<BAu$7$F$$$^$9!#(B</dd> + <dd>Apache 2.0 の新モジュール。このモジュールはウェブコンテンツを + 送り、維持するための規格 + HTTP Distributed Authoring and Versioning (DAV) を実装しています。</dd> <dt><module>mod_deflate</module></dt> - <dd>Apache 2.0 $B$N?7%b%8%e!<%k!#Aw?.A0$KAw?.FbMF$r05=L$7$F(B - $B%M%C%H%o!<%/BS0h$r@aLs$9$k!"$H$$$&%j%/%(%9%H$r%V%i%&%6$,(B - $BMW5a$G$-$k$h$&$K$7$^$9!#(B</dd> + <dd>Apache 2.0 の新モジュール。送信前に送信内容を圧縮して + ネットワーク帯域を節約する、というリクエストをブラウザが + 要求できるようにします。</dd> <dt><module>mod_auth_ldap</module></dt> - <dd>Apache 2.0.41 $B$N?7%b%8%e!<%k!#(BHTTP $B4pK\G'>Z$N>ZL@=q$rJ]B8$9$k$N$K!"(B - LDAP $B%G!<%?%Y!<%9$r;HMQ$G$-$k$h$&$K$J$j$^$9!#(B - $B4XO"%b%8%e!<%k$N(B <module>mod_ldap</module> $B$G!"(B - $B%3%M%/%7%g%s$N%W!<%k5!G=$H7k2L$N%-%c%C%7%e5!G=$,Ds6!$5$l$^$9!#(B</dd> + <dd>Apache 2.0.41 の新モジュール。HTTP 基本認証の証明書を保存するのに、 + LDAP データベースを使用できるようになります。 + 関連モジュールの <module>mod_ldap</module> で、 + コネクションのプール機能と結果のキャッシュ機能が提供されます。</dd> <dt><module>mod_auth_digest</module></dt> - <dd>$B$3$N%b%8%e!<%k$O6&M-%a%b%j$r;H$&$3$H$K$h$j!"%W%m%;%9$r$^$?$$$@(B - $B%;%C%7%g%s$N%-%c%C%7%e$r%5%]!<%H$9$k$h$&$K$J$j$^$7$?!#(B</dd> + <dd>このモジュールは共有メモリを使うことにより、プロセスをまたいだ + セッションのキャッシュをサポートするようになりました。</dd> <dt><module>mod_charset_lite</module></dt> - <dd>Apache 2.0 $B$N?7%b%8%e!<%k!#$3$N<B83E*$J%b%8%e!<%k$O(B - $B%-%c%i%/%?%;%C%H$NJQ49$d:FId9f2=$r2DG=$K$7$^$9!#(B</dd> + <dd>Apache 2.0 の新モジュール。この実験的なモジュールは + キャラクタセットの変換や再符号化を可能にします。</dd> <dt><module>mod_file_cache</module></dt> - <dd>Apache 2.0 $B$N?7%b%8%e!<%k!#$3$N%b%8%e!<%k$K$O!"(B - Apache 1.3 $B$K$*$1$k(B <code>mod_mmap_static</code> $B5!G=$,4^$^$l!"(B - $B$^$?!"DI2C$N%-%c%C%7%e5!G=$,2C$o$C$F$$$^$9!#(B</dd> + <dd>Apache 2.0 の新モジュール。このモジュールには、 + Apache 1.3 における <code>mod_mmap_static</code> 機能が含まれ、 + また、追加のキャッシュ機能が加わっています。</dd> <dt><module>mod_headers</module></dt> - <dd>$B$3$N%b%8%e!<%k$O(B Apache 2.0 $B$GHs>o$K=@Fp@-$,(B - $B9b$/$J$j$^$7$?!#(B<module>mod_proxy</module> - $B$G;H$o$l$k%j%/%(%9%H$N%X%C%@$rJQ99$G$-$k$h$&$K$J$j$^$7$?$7!"(B - $B1~Ez%X%C%@$r>r7o$K1~$8$F@_Dj$G$-$k$h$&$K$J$j$^$7$?!#(B</dd> + <dd>このモジュールは Apache 2.0 で非常に柔軟性が + 高くなりました。<module>mod_proxy</module> + で使われるリクエストのヘッダを変更できるようになりましたし、 + 応答ヘッダを条件に応じて設定できるようになりました。</dd> <dt><module>mod_proxy</module></dt> - <dd>proxy $B%b%8%e!<%k$O?7$7$$%U%#%k%?$N5!9=$rMxMQ$9$k$?$a$H!"(B - $B$h$j?.Mj$G$-$k!"(BHTTP/1.1 $B$K=`5r$7$?(B proxy $B$r<BAu$9$k$?$a$K(B - $B40A4$K=q$-D>$5$l$^$7$?!#$5$i$K!"?7$7$$(B + <dd>proxy モジュールは新しいフィルタの機構を利用するためと、 + より信頼できる、HTTP/1.1 に準拠した proxy を実装するために + 完全に書き直されました。さらに、新しい <directive module="mod_proxy" type="section">Proxy</directive> - $B@_Dj%;%/%7%g%s$,(Bproxy $B$5$l$k%5%$%H$N$h$jFI$_$d$9$/(B ($BFbItE*$K$b$h$jB.$$(B) - $B@_Dj$rDs6!$7$^$9!#%*!<%P!<%m!<%I$5$l$?(B + 設定セクションがproxy されるサイトのより読みやすく (内部的にもより速い) + 設定を提供します。オーバーロードされた <code><Directory "proxy:... ></code> - $B@_Dj$O%5%]!<%H$5$l$F$$$^$;$s!#$3$N%b%8%e!<%k$O(B <code>proxy_connect</code>, + 設定はサポートされていません。このモジュールは <code>proxy_connect</code>, <code>proxy_ftp</code>, <code>proxy_http</code> - $B$H$$$C$?!"FCDj$N%W%m%H%3%k$r%5%]!<%H$9$k(B - $B%b%8%e!<%k$KJ,3d$5$l$k$h$&$K$J$j$^$7$?!#(B</dd> + といった、特定のプロトコルをサポートする + モジュールに分割されるようになりました。</dd> <dt><module>mod_negotiation</module></dt> - <dd>$B%/%i%$%"%s%H$,(B NOT ACCEPTABLE $B$d(B MULTIPLE CHOICES $B1~Ez$N(B - $BBe$o$j$K>o$KC1FH$NJ8=q$r<u$1$H$k$h$&$K$9$k$?$a$K!"?7$7$$%G%#%l%/%F%#%V(B + <dd>クライアントが NOT ACCEPTABLE や MULTIPLE CHOICES 応答の + 代わりに常に単独の文書を受けとるようにするために、新しいディレクティブ <directive module="mod_negotiation">ForceLanguagePriority</directive> - $B$r;H$&$3$H$,$G$-$k$h$&$K$J$j$^$7$?!#(B - $B$5$i$K!"$h$j0l4S@-$N$"$k7k2L$rDs6!$9$k$?$a$K(B - $B%M%4%7%(!<%7%g%s$H(B MultiViews $B$N%"%k%4%j%:%`$,2~A1$5$l!"(B - $BJ8=q$NFbMF$r4^$a$k$3$H$N$G$-$k!"?7$7$$7A<0$N%?%$%W%^%C%W$,(B - $BDs6!$5$l$k$h$&$K$J$j$^$7$?!#(B</dd> + を使うことができるようになりました。 + さらに、より一貫性のある結果を提供するために + ネゴシエーションと MultiViews のアルゴリズムが改善され、 + 文書の内容を含めることのできる、新しい形式のタイプマップが + 提供されるようになりました。</dd> <dt><module>mod_autoindex</module></dt> - <dd>Autoindex $B$5$l$k%G%#%l%/%H%j$NFbMF0lMw$,!"(B - $B$-$l$$$KI=<($5$l$k$?$a$K(B HTML $B$N%F!<%V%k$r;H$&$h$&$K(B - $B@_Dj$G$-$k$h$&$K$J$j$^$7$?!#$^$?!"%P!<%8%g%s$K$h$k%=!<%F%#%s%0$J$I!"(B - $B$h$j:Y$+$$%=!<%F%#%s%0$N@)8f$,$G$-$k$h$&$K$J$j!"%G%#%l%/%H%j(B - $B$NFbMF0lMw$r%o%$%k%I%+!<%I$K$h$jA*JL$9$k$3$H$,$G$-$k$h$&$K$b$J$j$^$7$?!#(B</dd> + <dd>Autoindex されるディレクトリの内容一覧が、 + きれいに表示されるために HTML のテーブルを使うように + 設定できるようになりました。また、バージョンによるソーティングなど、 + より細かいソーティングの制御ができるようになり、ディレクトリ + の内容一覧をワイルドカードにより選別することができるようにもなりました。</dd> <dt><module>mod_include</module></dt> - <dd>$B?7$7$$%G%#%l%/%F%#%V$K$h$j!"(BSSI $B$N%G%U%)%k%H$N3+;O%?%0$H=*N;%?%0$r(B - $BJQ99$G$-$k$h$&$K$J$j$^$7$?!#$^$?!"%(%i!<$H;~9o$N7A<0$N@_Dj$,(B SSI $B$N(B - $BJ8=qCf$G$O$J$/!"<g@_Dj%U%!%$%kCf$G9T$J$($k$h$&$K$J$j$^$7$?!#(B - $B@55,I=8=$N2r@O$H%0%k!<%W2=$N7k2L(B (Perl $B$N@55,I=8=$N9=J8$K(B - $B4p$E$$$?$b$N$K$J$j$^$7$?(B) $B$r(B <module>mod_include</module> - $B$NJQ?t(B $0 .. $9 $B$K$h$j<hF@$G$-$k$h$&$K$J$j$^$7$?!#(B</dd> + <dd>新しいディレクティブにより、SSI のデフォルトの開始タグと終了タグを + 変更できるようになりました。また、エラーと時刻の形式の設定が SSI の + 文書中ではなく、主設定ファイル中で行なえるようになりました。 + 正規表現の解析とグループ化の結果 (Perl の正規表現の構文に + 基づいたものになりました) を <module>mod_include</module> + の変数 $0 .. $9 により取得できるようになりました。</dd> <dt><module>mod_auth_dbm</module></dt> <dd><directive module="mod_auth_dbm">AuthDBMType</directive> - $B%G%#%l%/%F%#%V$K$h$j!"J#?t$N(B DBM $B7?$N%G!<%?%Y!<%9$r%5%]!<%H$9$k(B - $B$h$&$K$J$j$^$7$?!#(B</dd> + ディレクティブにより、複数の DBM 型のデータベースをサポートする + ようになりました。</dd> </dl> </section> diff --git a/docs/manual/sections.xml.ja b/docs/manual/sections.xml.ja index 208572cf2f..2a13e0c706 100644 --- a/docs/manual/sections.xml.ja +++ b/docs/manual/sections.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -22,16 +22,16 @@ <manualpage metafile="sections.xml.meta"> -<title>$B%;%/%7%g%s$N@_Dj(B</title> +<title>セクションの設定</title> -<summary> <p><a href="configuring.html">$B@_Dj%U%!%$%k(B</a>$BCf$N%G%#%l%/%F%#%V$O(B -$B%5!<%PA4BN$KE,MQ$5$l$?$j!"FCDj$N%G%#%l%/%H%j$d%U%!%$%k!"%[%9%H!"(BURL $B$K$N$_(B -$BE,MQ$5$l$k$h$&$K@)8B$7$?$j$9$k$3$H$,$G$-$^$9!#$3$NJ8=q$O@_DjMQ$N%;%/%7%g%s$N(B -$B%3%s%F%J$d(B <code>.htaccess</code> $B%U%!%$%k$r;H$C$FB>$N@_Dj%G%#%l%/%F%#%V$N(B -$B%9%3!<%W$rJQ99$9$kJ}K!$r@bL@$7$^$9!#(B</p> +<summary> <p><a href="configuring.html">設定ファイル</a>中のディレクティブは +サーバ全体に適用されたり、特定のディレクトリやファイル、ホスト、URL にのみ +適用されるように制限したりすることができます。この文書は設定用のセクションの +コンテナや <code>.htaccess</code> ファイルを使って他の設定ディレクティブの +スコープを変更する方法を説明します。</p> </summary> -<section id="types"><title>$B@_DjMQ%;%/%7%g%s%3%s%F%J$N<oN`(B</title> +<section id="types"><title>設定用セクションコンテナの種類</title> <related> <modulelist> @@ -53,21 +53,21 @@ </directivelist> </related> -<p>$B%3%s%F%J$K$OFs$D$N4pK\$H$J$k<oN`$,$"$j$^$9!#$[$H$s$I$N%3%s%F%J$O(B -$B3F%j%/%(%9%H$KBP$7$FI>2A$5$l$^$9!#$=$N>l9g!"%3%s%F%JCf$N%G%#%l%/%F%#%V$O(B -$B%3%s%F%J$K%^%C%A$9$k%j%/%(%9%H$K$N$_E,MQ$5$l$^$9!#(B -$B0lJ}!"(B<directive type="section" - module="core">IfDefine</directive> $B%3%s%F%J$H(B <directive -type="section" module="core">IfModule</directive> $B%3%s%F%J$O(B -$B%5!<%P$N5/F0;~$H:F5/F0;~$K$N$_I>2A$5$l$^$9!#5/F0;~$K>r7o$,??$G$"$l$P!"(B -$B%3%s%F%JCf$N%G%#%l%/%F%#%V$O$9$Y$F$N%j%/%(%9%H$KE,MQ$5$l$^$9!#>r7o$,(B -$B56$G$"$l$P!"%3%s%F%JCf$N%G%#%l%/%F%#%V$OL5;k$5$l$^$9!#(B</p> - -<p><directive type="section" module="core">IfDefine</directive> $B%G%#%l%/%F%#%V$O(B -<program>httpd</program> $B%3%^%s%I%i%$%s$GE,@Z$J%Q%i%a!<%?$,Dj5A$5$l$?$H$-$K$N$_(B -$BE,MQ$5$l$k%G%#%l%/%F%#%V$r0O$$$^$9!#Nc$($P<!$N@_Dj$G$O!"%5!<%P$,(B -<code>httpd -DClosedForNow</code> $B$r;H$C$F5/F0$5$l$?$H$-$@$1$9$Y$F$N(B -$B%j%/%(%9%H$rJL$N%5%$%H$K%j%@%$%l%/%H$7$^$9(B:</p> +<p>コンテナには二つの基本となる種類があります。ほとんどのコンテナは +各リクエストに対して評価されます。その場合、コンテナ中のディレクティブは +コンテナにマッチするリクエストにのみ適用されます。 +一方、<directive type="section" + module="core">IfDefine</directive> コンテナと <directive +type="section" module="core">IfModule</directive> コンテナは +サーバの起動時と再起動時にのみ評価されます。起動時に条件が真であれば、 +コンテナ中のディレクティブはすべてのリクエストに適用されます。条件が +偽であれば、コンテナ中のディレクティブは無視されます。</p> + +<p><directive type="section" module="core">IfDefine</directive> ディレクティブは +<program>httpd</program> コマンドラインで適切なパラメータが定義されたときにのみ +適用されるディレクティブを囲います。例えば次の設定では、サーバが +<code>httpd -DClosedForNow</code> を使って起動されたときだけすべての +リクエストを別のサイトにリダイレクトします:</p> <example> <IfDefine ClosedForNow><br /> @@ -75,20 +75,20 @@ Redirect / http://otherserver.example.com/<br /> </IfDefine> </example> -<p><directive type="section" module="core">IfModule</directive> $B$O(B -$BHs>o$K;w$F$$$^$9$,!"Be$o$j$K%5!<%P>e$G%b%8%e!<%k$,;HMQ2DG=$J>l9g$K$N$_(B -$BE,MQ2DG=$J%G%#%l%/%F%#%V$r0O$$$^$9!#%b%8%e!<%k$O%5!<%P$K(B -$B@EE*$KAH$_9~$^$l$F$$$k$+!"F0E*$KAH$_9~$`$h$&$K$J$C$F$$$F!"@_Dj%U%!%$%kCf$G(B -<directive module="mod_so">LoadModule</directive> $B$N9T$,$h$jA0$N(B -$BItJ,$K=q$+$l$F$$$kI,MW$,$"$j$^$9!#$3$N%G%#%l%/%F%#%V$OFCDj$N%b%8%e!<%k$N(B -$BB8:_$K4X$o$i$:@_Dj%U%!%$%k$,F0:n$9$kI,MW$,$"$k>l9g$K$N$_;H$C$F$/$@$5$$!#(B -$B>o$KF0:n$7$FM_$7$$%G%#%l%/%F%#%V$r0O$`$?$a$K;H$&$Y$-$G$O$"$j$^$;$s!#(B -$BB8:_$7$J$$%b%8%e!<%k$K4X$9$kM-MQ$J%(%i!<%a%C%;!<%8$NH/@8$rM^@)$7$F$7$^$$$^$9$N$G!#(B +<p><directive type="section" module="core">IfModule</directive> は +非常に似ていますが、代わりにサーバ上でモジュールが使用可能な場合にのみ +適用可能なディレクティブを囲います。モジュールはサーバに +静的に組み込まれているか、動的に組み込むようになっていて、設定ファイル中で +<directive module="mod_so">LoadModule</directive> の行がより前の +部分に書かれている必要があります。このディレクティブは特定のモジュールの +存在に関わらず設定ファイルが動作する必要がある場合にのみ使ってください。 +常に動作して欲しいディレクティブを囲むために使うべきではありません。 +存在しないモジュールに関する有用なエラーメッセージの発生を抑制してしまいますので。 </p> -<p>$B<!$NNc$G$O!"(B<module>mod_mime_magic</module> $B$,$"$k$H$-$K$N$_(B <directive -module="mod_mime_magic">MimeMagicFiles</directive> $B%G%#%l%/%F%#%V$,(B -$BE,MQ$5$l$^$9!#(B</p> +<p>次の例では、<module>mod_mime_magic</module> があるときにのみ <directive +module="mod_mime_magic">MimeMagicFiles</directive> ディレクティブが +適用されます。</p> <example> <IfModule mod_mime_magic.c><br /> @@ -96,41 +96,41 @@ MimeMagicFile conf/magic<br /> </IfModule> </example> -<p><directive type="section" module="core">IfDefine</directive> $B%G%#%l%/%F%#%V$H(B -<directive type="section" module="core">IfModule</directive> $B%G%#%l%/%F%#%V$O(B -$B%F%9%H$NA0$K(B "!" $B$rIU$1$k$3$H$GH]Dj$N>r7o$rE,MQ$9$k$3$H$,$G$-$^$9!#(B -$B$^$?!"$3$l$i$N%;%/%7%g%s$O$h$jJ#;($J@)8B$r2]$9$?$a$KF~$l;R$K$9$k$3$H$,$G$-$^$9!#(B +<p><directive type="section" module="core">IfDefine</directive> ディレクティブと +<directive type="section" module="core">IfModule</directive> ディレクティブは +テストの前に "!" を付けることで否定の条件を適用することができます。 +また、これらのセクションはより複雑な制限を課すために入れ子にすることができます。 </p> </section> -<section id="file-and-web"><title>$B%U%!%$%k%7%9%F%`$H%&%'%V6u4V(B</title> - -<p>$B:G$b$h$/;H$o$l$k@_Dj$N%;%/%7%g%s%3%s%F%J$O%U%!%$%k%7%9%F%`$d%&%'%V6u4V$N(B -$BFCDj$N>l=j$N@_Dj$rJQ99$9$k$b$N$G$9!#$^$:!"$3$NFs$D$N0c$$$rM}2r$9$k$3$H$,(B -$BBg@Z$G$9!#%U%!%$%k%7%9%F%`$O%*%Z%l!<%F%#%s%0%7%9%F%`$+$i8+$?%G%#%9%/$NFbMF$G$9!#(B -$B$?$H$($P!"%G%U%)%k%H$N%$%s%9%H!<%k$G$O(B Apache $B$O(B Unix $B%U%!%$%k%7%9%F%`$G$O(B -<code>/usr/local/apache2</code> $B$K!"(BWindows $B%U%!%$%k%7%9%F%`$G$O(B -<code>"c:/Program Files/Apache Group/Apache2"</code> $B$KB8:_$7$^$9!#(B -(Apache $B$G$O(B Windows $B$G$b%Q%9%;%Q%l!<%?$H$7$F%9%i%C%7%e$r;H$&$3$H$K(B -$B5$$r$D$1$F$/$@$5$$!#(B) $BBP>HE*$K!"%&%'%V6u4V$O$"$J$?$N%5%$%H$r(B -$B%&%'%V%5!<%P$+$iG[?.$5$l$k$b$N$H$7$F8+$?$b$N$G!"%/%i%$%"%s%H$K8+$($k$b$N$G$9!#(B -$B%G%U%)%k%H$N(B Unix $B>e$N(B Apache $B$N%$%s%9%H!<%k$G$O%&%'%V6u4V$N(B -<code>/dir/</code> $B$H$$$&%Q%9$O%U%!%$%k%7%9%F%`$N(B -<code>/usr/local/apache2/htdocs/dir/</code> $B$H$$$&%Q%9$KBP1~$7$^$9!#(B -$B%&%'%V%Z!<%8$O%G!<%?%Y!<%9$dB>$N>l=j$+$iF0E*$K@8@.$9$k$3$H$b$G$-$^$9$N$G!"(B -$B%&%'%V6u4V$O%U%!%$%k%7%9%F%`$KD>@\%^%C%W$9$kI,MW$O$"$j$^$;$s!#(B</p> - -<section id="filesystem"><title>$B%U%!%$%k%7%9%F%`%3%s%F%J(B</title> - -<p><directive type="section" module="core">Directory</directive> $B%G%#%l%/%F%#%V$H(B -<directive type="section" module="core">Files</directive> $B%G%#%l%/%F%#%V!"$=$l$H(B -$B$=$l$i$N@55,I=8=HG$O%G%#%l%/%F%#%V$r%U%!%$%k%7%9%F%`$N0lItJ,$KBP$7$FE,MQ$7$^$9!#(B -<directive type="section" module="core">Directory</directive> $B%;%/%7%g%s$N(B -$BCf$N%G%#%l%/%F%#%V$O;XDj$5$l$?%G%#%l%/%H%j$H$=$N$9$Y$F$N%5%V%G%#%l%/%H%j$K(B -$BE,MQ$5$l$^$9!#(B<a href="howto/htaccess.html">.htaccess $B%U%!%$%k(B</a>$B$r(B -$B;H$&$3$H$G$bF1$88z2L$rF@$k$3$H$,$G$-$^$9!#Nc$($P!"<!$N@_Dj$G$O(B -<code>/var/web/dir1</code> $B$H$9$Y$F$N%5%V%G%#%l%/%H%j$KBP$7$F(B -$B%G%#%l%/%H%j%$%s%G%C%/%9$r9T$J$$$^$9!#(B</p> +<section id="file-and-web"><title>ファイルシステムとウェブ空間</title> + +<p>最もよく使われる設定のセクションコンテナはファイルシステムやウェブ空間の +特定の場所の設定を変更するものです。まず、この二つの違いを理解することが +大切です。ファイルシステムはオペレーティングシステムから見たディスクの内容です。 +たとえば、デフォルトのインストールでは Apache は Unix ファイルシステムでは +<code>/usr/local/apache2</code> に、Windows ファイルシステムでは +<code>"c:/Program Files/Apache Group/Apache2"</code> に存在します。 +(Apache では Windows でもパスセパレータとしてスラッシュを使うことに +気をつけてください。) 対照的に、ウェブ空間はあなたのサイトを +ウェブサーバから配信されるものとして見たもので、クライアントに見えるものです。 +デフォルトの Unix 上の Apache のインストールではウェブ空間の +<code>/dir/</code> というパスはファイルシステムの +<code>/usr/local/apache2/htdocs/dir/</code> というパスに対応します。 +ウェブページはデータベースや他の場所から動的に生成することもできますので、 +ウェブ空間はファイルシステムに直接マップする必要はありません。</p> + +<section id="filesystem"><title>ファイルシステムコンテナ</title> + +<p><directive type="section" module="core">Directory</directive> ディレクティブと +<directive type="section" module="core">Files</directive> ディレクティブ、それと +それらの正規表現版はディレクティブをファイルシステムの一部分に対して適用します。 +<directive type="section" module="core">Directory</directive> セクションの +中のディレクティブは指定されたディレクトリとそのすべてのサブディレクトリに +適用されます。<a href="howto/htaccess.html">.htaccess ファイル</a>を +使うことでも同じ効果を得ることができます。例えば、次の設定では +<code>/var/web/dir1</code> とすべてのサブディレクトリに対して +ディレクトリインデックスを行ないます。</p> <example> <Directory /var/web/dir1><br /> @@ -138,11 +138,11 @@ Options +Indexes<br /> </Directory> </example> -<p><directive type="section" module="core">Files</directive> $B%;%/%7%g%s$N(B -$BCf$K$"$k%G%#%l%/%F%#%V$O$I$N%G%#%l%/%H%j$K$"$k$+$K4X$o$i$:!";XDj$5$l$?L>A0$N(B -$B$9$Y$F$N%U%!%$%k$KE,MQ$5$l$^$9!#$G$9$+$iNc$($P0J2<$N@_Dj%G%#%l%/%F%#%V$,(B -$B@_Dj%U%!%$%k$N<g%;%/%7%g%s$K=q$+$l$?$H$-$K$O!"$9$Y$F$N>l=j$N(B -<code>private.html</code> $B$H$$$&L>A0$N%U%!%$%k$X$N%"%/%;%9$r5qH]$7$^$9!#(B</p> +<p><directive type="section" module="core">Files</directive> セクションの +中にあるディレクティブはどのディレクトリにあるかに関わらず、指定された名前の +すべてのファイルに適用されます。ですから例えば以下の設定ディレクティブが +設定ファイルの主セクションに書かれたときには、すべての場所の +<code>private.html</code> という名前のファイルへのアクセスを拒否します。</p> <example> <Files private.html><br /> @@ -151,15 +151,15 @@ Deny from all<br /> </Files> </example> -<p>$B%U%!%$%k%7%9%F%`$NFCDj$N>l=j$K$"$k%U%!%$%k$r;XDj$9$k$?$a$K!"(B -<directive type="section" module="core">Files</directive> $B%;%/%7%g%s$H(B -<directive type="section" module="core">Directory</directive> $B%;%/%7%g%s$r(B -$BAH$_9g$o$;$k$3$H$,$G$-$^$9!#Nc$($P!"<!$N@_Dj$G$O(B +<p>ファイルシステムの特定の場所にあるファイルを指定するために、 +<directive type="section" module="core">Files</directive> セクションと +<directive type="section" module="core">Directory</directive> セクションを +組み合わせることができます。例えば、次の設定では <code>/var/web/dir1/private.html</code>, <code>/var/web/dir1/subdir2/private.html</code>, -<code>/var/web/dir1/subdir3/private.html</code> $B$J$I!"(B -<code>/var/web/dir1/</code> $B%G%#%l%/%H%j$N2<$K$"$k$9$Y$F$N(B -<code>private.html</code> $B$X$N%"%/%;%9$r5qH]$7$^$9!#(B</p> +<code>/var/web/dir1/subdir3/private.html</code> など、 +<code>/var/web/dir1/</code> ディレクトリの下にあるすべての +<code>private.html</code> へのアクセスを拒否します。</p> <example> <Directory /var/web/dir1><br /> @@ -171,18 +171,18 @@ Deny from all<br /> </example> </section> -<section id="webspace"><title>$B%&%'%V6u4V%3%s%F%J(B</title> +<section id="webspace"><title>ウェブ空間コンテナ</title> -<p>$B0lJ}!"(B<directive type="section" module="core">Location</directive> -$B%G%#%l%/%F%#%V$H$=$N@55,I=8=HG$O%&%'%V6u4V>e$NFbMF$KBP$7$F@_Dj$rJQ99$7$^$9!#(B -$B$?$H$($P!"<!$N@_Dj$G$O(B /private $B$G;O$^$k(B URL $B%Q%9$X$N%"%/%;%9$r@)8B$7$^$9!#(B -$B6qBNE*$K$O!"(B +<p>一方、<directive type="section" module="core">Location</directive> +ディレクティブとその正規表現版はウェブ空間上の内容に対して設定を変更します。 +たとえば、次の設定では /private で始まる URL パスへのアクセスを制限します。 +具体的には、 <code>http://yoursite.example.com/private</code>, <code>http://yoursite.example.com/private123</code>, <code>http://yoursite.example.com/private/dir/file.html</code> -$B$X$N%j%/%(%9%H$d!"(B -$BB>$NF1MM$K(B <code>/private</code> $BJ8;zNs$G;O$^$k%j%/%(%9%H$K(B -$BE,MQ$5$l$^$9!#(B</p> +へのリクエストや、 +他の同様に <code>/private</code> 文字列で始まるリクエストに +適用されます。</p> <example> <Location /private><br /> @@ -192,11 +192,11 @@ Deny from all<br /> </example> <p><directive type="section" module="core">Location</directive> -$B%G%#%l%/%F%#%V$O%U%!%$%k%7%9%F%`$H4X78$"$kI,MW$,A4$/$"$j$^$;$s!#(B -$B$?$H$($P<!$NNc$G$O!"$I$N$h$&$K$7$FFCDj$N(B URL $B$r(B -<module>mod_status</module>$B$GDs6!$5$l$F$$$k(B Apache -$BFbIt%O%s%I%i$K%^%C%W$9$k$+$r<($7$F$$$^$9!#%U%!%$%k%7%9%F%`$K(B -<code>server-status</code> $B$H$$$&%U%!%$%k$,B8:_$9$kI,MW$O$"$j$^$;$s!#(B</p> +ディレクティブはファイルシステムと関係ある必要が全くありません。 +たとえば次の例では、どのようにして特定の URL を +<module>mod_status</module>で提供されている Apache +内部ハンドラにマップするかを示しています。ファイルシステムに +<code>server-status</code> というファイルが存在する必要はありません。</p> <example> <Location /server-status><br /> @@ -205,30 +205,30 @@ SetHandler server-status<br /> </example> </section> -<section id="wildcards"><title>$B%o%$%k%I%+!<%I$H@55,I=8=(B</title> +<section id="wildcards"><title>ワイルドカードと正規表現</title> <p><directive type="section" module="core">Directory</directive>, <directive type="section" module="core">Files</directive>, <directive type="section" module="core">Location</directive> -$B%G%#%l%/%F%#%V$G$O!"(B C $BI8=`%i%$%V%i%j$N(B <code>fnmatch</code> $B$N$h$&$K(B -shell $B%9%?%$%k$N%o%$%k%I%+!<%I%-%c%i%/%?$,;HMQ$G$-$^$9!#(B -"*" $BJ8;z$OG$0U$NJ8;zNs$K%^%C%A$7!"(B"?" $BJ8;z$OG$0U$N(B 1 $BJ8;z$K%^%C%A$7!"(B -"[<em>seq</em>]" $B$O(B <em>seq</em> $B$NG$0U$NJ8;z$K%^%C%A$7$^$9!#(B -"/" $BJ8;z$O$I$N%o%$%k%I%+!<%I$G$b%^%C%A$5$l$^$;$s!#(B -$BL@<(E*$K;XDj$9$kI,MW$,$"$j$^$9!#(B</p> - -<p>$B$3$l$h$j=@Fp$J%^%C%A%s%0$,I,MW$J>l9g$O!"$3$l$i$N%3%s%F%J$K@55,I=8=(B -(regex) $BHG$G$"$k(B +ディレクティブでは、 C 標準ライブラリの <code>fnmatch</code> のように +shell スタイルのワイルドカードキャラクタが使用できます。 +"*" 文字は任意の文字列にマッチし、"?" 文字は任意の 1 文字にマッチし、 +"[<em>seq</em>]" は <em>seq</em> の任意の文字にマッチします。 +"/" 文字はどのワイルドカードでもマッチされません。 +明示的に指定する必要があります。</p> + +<p>これより柔軟なマッチングが必要な場合は、これらのコンテナに正規表現 +(regex) 版である <directive type="section" module="core">DirectoryMatch</directive>, <directive type="section" module="core">FilesMatch</directive>, <directive type="section" module="core">LocationMatch</directive> -$B$,$"$j!"%^%C%A$rA*Br$9$k$N$K(B perl $B8_49(B<a href="glossary.html#regex" ->$B@55,I=8=(B</a>$B$r;HMQ$G$-$^$9!#$7$+$7!"<!$N@_Dj$N%^!<%8$KL\$rDL$7$F!"(B -regex $B%;%/%7%g%s$r;HMQ$9$k$3$H$G!"%G%#%l%/%F%#%V$NE,MQ$,$I$N$h$&$K(B -$BJQ2=$9$k$+GD0.$7$F$*$$$F$/$@$5$$!#(B</p> +があり、マッチを選択するのに perl 互換<a href="glossary.html#regex" +>正規表現</a>を使用できます。しかし、次の設定のマージに目を通して、 +regex セクションを使用することで、ディレクティブの適用がどのように +変化するか把握しておいてください。</p> -<p>$BA4%f!<%6%G%#%l%/%H%j$N@_Dj$rJQ99$9$k!"Hs(B regex -$B%o%$%k%I%+!<%I%;%/%7%g%s$O<!$N$h$&$K$J$j$^$9!#(B</p> +<p>全ユーザディレクトリの設定を変更する、非 regex +ワイルドカードセクションは次のようになります。</p> <example> <Directory /home/*/public_html><br /> @@ -236,8 +236,8 @@ Options Indexes<br /> </Directory> </example> -<p>regex $B%;%/%7%g%s$r;HMQ$9$k$3$H$G!"2hA|%U%!%$%k$NB?$/$N%?%$%W$KBP$9$k(B -$B%"%/%;%9$r0lEY$K5qH]$G$-$^$9!#(B</p> +<p>regex セクションを使用することで、画像ファイルの多くのタイプに対する +アクセスを一度に拒否できます。</p> <example> <FilesMatch \.(?i:gif|jpe?g|png)$><br /> Order allow,deny<br /> @@ -247,25 +247,25 @@ Deny from all<br /> </section> -<section id="whichwhen"><title>$B$$$D2?$r;H$&$+(B</title> +<section id="whichwhen"><title>いつ何を使うか</title> -<p>$B%U%!%$%k%7%9%F%`%3%s%F%J$H%&%'%V6u4V%3%s%F%J$r;H$$J,$1$k$N$O!"(B -$B<B:]$K$OHs>o$K4JC1$G$9!#%U%!%$%k%7%9%F%`$K0MB8$9$k(B -$B%*%V%8%'%/%H$K%G%#%l%/%F%#%V$rE,1~$9$k>l9g$O!"I,$:(B -<directive type="section" module="core">Directory</directive> $B$+(B +<p>ファイルシステムコンテナとウェブ空間コンテナを使い分けるのは、 +実際には非常に簡単です。ファイルシステムに依存する +オブジェクトにディレクティブを適応する場合は、必ず +<directive type="section" module="core">Directory</directive> か <directive type="section" module="core">Files</directive> -$B$r;HMQ$7$^$9!#%U%!%$%k%7%9%F%`$K0MB8$7$J$$%*%V%8%'%/%H(B -($B%G!<%?%Y!<%9$+$i@8@.$5$l$k%&%'%V%Z!<%8$J$I(B) -$B$K%G%#%l%/%F%#%V$rE,MQ$9$k:]$K$O!"(B +を使用します。ファイルシステムに依存しないオブジェクト +(データベースから生成されるウェブページなど) +にディレクティブを適用する際には、 <directive type="section" module="core">Location</directive> -$B$r;HMQ$7$^$9!#(B</p> +を使用します。</p> -<p>$B%U%!%$%k%7%9%F%`>e$N%*%V%8%'%/%H$X$N%"%/%;%9$r@)8B$9$k$?$a$K!"(B +<p>ファイルシステム上のオブジェクトへのアクセスを制限するために、 <directive type="section" module="core">Location</directive> -$B$r7h$7$F;HMQ$J$$$h$&$K$7$^$7$g$&!#(B -$BF10l$N%U%!%$%k%7%9%F%`0LCV$K%^%C%W$7$F$$$k!"%&%'%V6u4V0LCV(B (URL) -$B$,B??t$"$C$F!"@_Dj$7$?@)8B$r1*2s$5$l$F$7$^$&$+$b$7$l$J$$$+$i$G$9!#(B -$BNc$($P<!$N@_Dj$r9M$($F$_$^$7$g$&!#(B</p> +を決して使用ないようにしましょう。 +同一のファイルシステム位置にマップしている、ウェブ空間位置 (URL) +が多数あって、設定した制限を迂回されてしまうかもしれないからです。 +例えば次の設定を考えてみましょう。</p> <example> <Location /dir/><br /> @@ -275,51 +275,51 @@ Deny from all<br /> </example> <p><code>http://yoursite.example.com/dir/</code> -$B$X$N%j%/%(%9%H$G$O>e<j$/F0:n$7$^$9!#$7$+$7BgJ8;z>.J8;z$r6hJL$7$J$$(B -$B%U%!%$%k%7%9%F%`$r;H$C$F$$$?$i$I$&$J$k$G$7$g$&(B? +へのリクエストでは上手く動作します。しかし大文字小文字を区別しない +ファイルシステムを使っていたらどうなるでしょう? <code>http://yoursite.example.com/DIR/</code> -$B$X$N%j%/%(%9%H$G4JC1$K%"%/%;%9@)8B$r1*2s$5$l$F$7$^$$$^$9!#$3$l$KBP$7$F(B +へのリクエストで簡単にアクセス制限を迂回されてしまいます。これに対して <directive type="section" module="core">Directory</directive> -$B%G%#%l%/%F%#%V$r;HMQ$9$k$H!"$I$N$h$&$K8F$S=P$5$l$?$+$K4X$o$i$:(B -$B$=$N>l=j$+$iDs6!$5$l$kFbMF$KE,MQ$5$l$^$9!#(B -($BNc30$O%U%!%$%k%7%9%F%`$N%j%s%/$G$9!#%7%s%\%j%C%/%j%s%/$r;H$C$F!"(B -$BF10l$N%G%#%l%/%H%j$rJ#?t$N%U%!%$%k%7%9%F%`$K@_CV$G$-$^$9!#(B +ディレクティブを使用すると、どのように呼び出されたかに関わらず +その場所から提供される内容に適用されます。 +(例外はファイルシステムのリンクです。シンボリックリンクを使って、 +同一のディレクトリを複数のファイルシステムに設置できます。 <directive type="section" module="core">Directory</directive> -$B%G%#%l%/%F%#%V$O%Q%9L>$r%j%;%C%H$9$k$3$H$J$/%7%s%\%j%C%/%j%s%/$r(B -$BC)$j$^$9!#$G$9$+$i!"9bEY$J%;%-%e%j%F%#$,MW5a$5$l$k>l9g$O!"(B -$BE,@Z$K(B <directive module="core">Options</directive> -$B%G%#%l%/%F%#%V$r;HMQ$7$F%7%s%\%j%C%/%j%s%/$rL58z$K$9$k$Y$-$G$9!#(B)</p> - -<p>$BBgJ8;z>.J8;z$r6hJL$9$k%U%!%$%k%7%9%F%`$r;HMQ$7$F$$$k$+$i>e5-$N$3$H$O(B -$BL54X78$@$H;W$o$l$k$+$b$7$l$^$;$s$,!"(B -$BF10l$N%U%!%$%k%7%9%F%`0LCV$KJ#?t$N%&%'%V6u4V0LCV$r%^%C%W$9$kJ}K!$O!"(B -$BB>$K$$$/$i$G$b$"$k$H$$$&$3$H$r3P$($F$$$F$/$@$5$$!#(B -$B$G$9$+$i$G$-$k8B$j%U%!%$%k%7%9%F%`%3%s%F%J$r;HMQ$7$F$/$@$5$$!#(B -$B$7$+$7$J$,$i0l$D$@$1Nc30$,$"$j$^$9!#(B -<code><Location /></code> $B%;%/%7%g%s$O$I$s$J(B URL -$B$K$b4X$o$i$:E,MQ$5$l$k$N$G!"40A4$K0BA4$G$9!#(B</p> +ディレクティブはパス名をリセットすることなくシンボリックリンクを +辿ります。ですから、高度なセキュリティが要求される場合は、 +適切に <directive module="core">Options</directive> +ディレクティブを使用してシンボリックリンクを無効にするべきです。)</p> + +<p>大文字小文字を区別するファイルシステムを使用しているから上記のことは +無関係だと思われるかもしれませんが、 +同一のファイルシステム位置に複数のウェブ空間位置をマップする方法は、 +他にいくらでもあるということを覚えていてください。 +ですからできる限りファイルシステムコンテナを使用してください。 +しかしながら一つだけ例外があります。 +<code><Location /></code> セクションはどんな URL +にも関わらず適用されるので、完全に安全です。</p> </section> </section> -<section id="virtualhost"><title>$B%P!<%A%c%k%[%9%H(B</title> +<section id="virtualhost"><title>バーチャルホスト</title> <p><directive type="section" module="core">VirtualHost</directive> -$B%3%s%F%J$OFCDj$N%[%9%H$KE,MQ$9$k%G%#%l%/%F%#%V$r3JG<$7$^$9!#(B -$B0lBf$N%^%7%s$GJ#?t$N%[%9%H$r0[$J$k@_Dj$GDs6!$7$?$$$H$-$KM-MQ$G$9!#(B -$B>\:Y$K4X$7$F$O(B<a href="vhosts/">$B%P!<%A%c%k%[%9%H%I%-%e%a%s%H(B</a>$B$r(B -$B$4Mw2<$5$$!#(B</p> +コンテナは特定のホストに適用するディレクティブを格納します。 +一台のマシンで複数のホストを異なる設定で提供したいときに有用です。 +詳細に関しては<a href="vhosts/">バーチャルホストドキュメント</a>を +ご覧下さい。</p> </section> -<section id="proxy"><title>$B%W%m%/%7(B</title> +<section id="proxy"><title>プロクシ</title> <p><directive type="section" module="mod_proxy">Proxy</directive> -$B$H(B <directive type="section" module="mod_proxy">ProxyMatch</directive> -$B%3%s%F%J$O!"FCDj$N(B URL $B$K%^%C%A$9$k(B <module>mod_proxy</module> -$B%W%m%/%7%5!<%P$r7PM3$7$F%"%/%;%9$7$?%5%$%H$KBP$7$F$N$_E,MQ$5$l$k(B -$B@_Dj%G%#%l%/%F%#%V$r3JG<$7$^$9!#Nc$($P<!$N@_Dj$O!"(B<code>cnn.com</code> -$B%&%'%V%5%$%H$K%"%/%;%9$9$k$?$a$KMQ$$$i$l$k%W%m%/%7%5!<%P$r(B -$B@)8B$7$^$9!#(B</p> +と <directive type="section" module="mod_proxy">ProxyMatch</directive> +コンテナは、特定の URL にマッチする <module>mod_proxy</module> +プロクシサーバを経由してアクセスしたサイトに対してのみ適用される +設定ディレクティブを格納します。例えば次の設定は、<code>cnn.com</code> +ウェブサイトにアクセスするために用いられるプロクシサーバを +制限します。</p> <example> <Proxy http://cnn.com/*><br /> @@ -329,13 +329,13 @@ Deny from all<br /> </example> </section> -<section id="whatwhere"><title>$B$I$N%G%#%l%/%F%#%V$,;H$($k$N(B?</title> +<section id="whatwhere"><title>どのディレクティブが使えるの?</title> -<p>$B$I$N%?%$%W$N@_Dj%;%/%7%g%s$G$I$N%G%#%l%/%F%#%V$,;HMQ$G$-$k$+$O!"(B -$B%G%#%l%/%F%#%V$N(B <a href="mod/directive-dict.html#Context">Context</a> -$B$r8+$F$/$@$5$$!#(B +<p>どのタイプの設定セクションでどのディレクティブが使用できるかは、 +ディレクティブの <a href="mod/directive-dict.html#Context">Context</a> +を見てください。 <directive type="section" module="core">Directory</directive> -$B$G;HMQ2DG=$J$b$N$OA4$F!"F1MM$K(B +で使用可能なものは全て、同様に <directive type="section" module="core">DirectoryMatch</directive>, <directive type="section" module="core">Files</directive>, <directive type="section" module="core">FilesMatch</directive>, @@ -343,89 +343,89 @@ Deny from all<br /> <directive type="section" module="core">LocationMatch</directive>, <directive type="section" module="mod_proxy">Proxy</directive>, <directive type="section" module="mod_proxy">ProxyMatch</directive> -$B%;%/%7%g%s$G;HMQ2DG=$G$9!#$7$+$7$J$,$i4v$D$+Nc30$bB8:_$7$^$9!#(B</p> +セクションで使用可能です。しかしながら幾つか例外も存在します。</p> <ul> -<li><directive module="core">AllowOverride</directive> $B%G%#%l%/%F%#%V$O(B +<li><directive module="core">AllowOverride</directive> ディレクティブは <directive type="section" module="core">Directory</directive> -$B%;%/%7%g%s$G$N$_;HMQ2DG=$G$9!#(B</li> +セクションでのみ使用可能です。</li> -<li><code>FollowSymLinks</code> $B$H(B <code>SymLinksIfOwnerMatch</code> $B$N(B -<directive module="core">Options</directive> $B$O!"(B +<li><code>FollowSymLinks</code> と <code>SymLinksIfOwnerMatch</code> の +<directive module="core">Options</directive> は、 <directive type="section" module="core">Directory</directive> -$B%;%/%7%g%s$+(B <code>.htaccess</code> $B%U%!%$%k$G$N$_;HMQ2DG=$G$9!#(B</li> +セクションか <code>.htaccess</code> ファイルでのみ使用可能です。</li> -<li><directive module="core">Options</directive> $B%G%#%l%/%F%#%V$O!"(B +<li><directive module="core">Options</directive> ディレクティブは、 <directive type="section" module="core">Files</directive> -$B$H(B <directive type="section" module="core">FilesMatch</directive> -$B%;%/%7%g%s$G$O;HMQ$G$-$^$;$s!#(B</li> +と <directive type="section" module="core">FilesMatch</directive> +セクションでは使用できません。</li> </ul> </section> -<section id="mergin"><title>$B%;%/%7%g%s$N%^!<%8J}K!(B</title> +<section id="mergin"><title>セクションのマージ方法</title> - <p>$B%^!<%8$N=gHV$O0J2<$N$h$&$K$J$C$F$$$^$9(B:</p> + <p>マージの順番は以下のようになっています:</p> <ol> <li><directive - type="section" module="core">Directory</directive> ($B@55,I=8=L5$7(B) $B$H(B - <code>.htaccess</code> $B$rF1;~$K(B (<code>.htaccess</code> $B$,5v2D$5$l$F$$$l$P!"$=$l$,(B - <directive type="section" module="core">Directory</directive> $B$r>e=q$-$7$^$9(B) + type="section" module="core">Directory</directive> (正規表現無し) と + <code>.htaccess</code> を同時に (<code>.htaccess</code> が許可されていれば、それが + <directive type="section" module="core">Directory</directive> を上書きします) </li> <li><directive type="section" module="core">DirectoryMatch</directive> - ($B$H(B <code><Directory ~></code></li> + (と <code><Directory ~></code></li> - <li><directive type="section" module="core">Files</directive> $B$H(B - <directive type="section" module="core">FilesMatch</directive> $B$rF1;~$K(B</li> + <li><directive type="section" module="core">Files</directive> と + <directive type="section" module="core">FilesMatch</directive> を同時に</li> - <li><directive type="section" module="core">Location</directive> $B$H(B - <directive type="section" module="core">LocationMatch</directive> $B$rF1;~$K(B</li> + <li><directive type="section" module="core">Location</directive> と + <directive type="section" module="core">LocationMatch</directive> を同時に</li> </ol> <p><directive type="section" module="core">Directory</directive> - $B0J30$O!"$=$l$>$l$N%0%k!<%W$O@_Dj%U%!%$%k$K8=$l$?=gHV$K=hM}$5$l$^$9!#(B - <directive type="section" module="core">Directory</directive> ($B>e$N%0%k!<%W(B 1) - $B$O%G%#%l%/%H%j$,C;$$$b$N$+$iD9$$$b$N$X$H=hM}$5$l$^$9!#$G$9$+$i!"(B - $BNc$($P(B <code><Directory /var/web/dir1></code> $B$O(B - <code><Directory /var/web/dir/subdir></code> $B$NA0$K=hM}$5$l$^$9!#J#?t$N(B + 以外は、それぞれのグループは設定ファイルに現れた順番に処理されます。 + <directive type="section" module="core">Directory</directive> (上のグループ 1) + はディレクトリが短いものから長いものへと処理されます。ですから、 + 例えば <code><Directory /var/web/dir1></code> は + <code><Directory /var/web/dir/subdir></code> の前に処理されます。複数の <directive - type="section" module="core">Directory</directive> $B%;%/%7%g%s$,(B - $BF1$8%G%#%l%/%H%j$K(B - $BE,MQ$5$l$k>l9g$O!"@_Dj%U%!%$%kCf$N=gHV$K=>$C$F=hM}$5$l$^$9!#(B + type="section" module="core">Directory</directive> セクションが + 同じディレクトリに + 適用される場合は、設定ファイル中の順番に従って処理されます。 <directive module="core">Include</directive> - $B$K$h$C$FA^F~$5$l$?@_Dj$O(B $BA^F~$7$F$$$k%U%!%$%k$N(B + によって挿入された設定は 挿入しているファイルの <directive module="core">Include</directive> - $B%G%#%l%/%F%#%V$N0LCV$K$"$C$?$+$N$h$&$K07$o$l$^$9!#(B</p> + ディレクティブの位置にあったかのように扱われます。</p> <p><directive type="section" - module="core">VirtualHost</directive> $B%;%/%7%g%sCf$N%;%/%7%g%s$O(B - $B%P!<%A%c%k%[%9%H$NDj5A$N30B&$NBP1~$9$k%;%/%7%g%s$N(B - <em>$B8e(B</em>$B$KE,MQ$5$l$^$9!#$3$l$K$h$j%P!<%A%c%k%[%9%H$,(B - $B%a%$%s$N%5!<%P@_Dj$r>e=q$-$G$-$k$h$&$J$j$^$9!#(B</p> - - <p><module>mod_proxy</module> $B$G%j%/%(%9%H$,=hM}$5$l$k>l9g$O!"(B - $B=hM}=gHV$N$&$A!"(B<directive module="core" - type="section">Directory</directive> $B%3%s%F%J$NItJ,$,(B + module="core">VirtualHost</directive> セクション中のセクションは + バーチャルホストの定義の外側の対応するセクションの + <em>後</em>に適用されます。これによりバーチャルホストが + メインのサーバ設定を上書きできるようなります。</p> + + <p><module>mod_proxy</module> でリクエストが処理される場合は、 + 処理順番のうち、<directive module="core" + type="section">Directory</directive> コンテナの部分が <directive module="mod_proxy" type="section">Proxy</directive> - $B%3%s%F%J$K<h$C$FBe$o$i$l$^$9!#(B</p> + コンテナに取って代わられます。</p> - <p>$B8e$N%;%/%7%g%s$N%G%#%l%/%F%#%V$,A0$N%;%/%7%g%s$N$b$N$r>e=q$-$7$^$9!#(B</p> + <p>後のセクションのディレクティブが前のセクションのものを上書きします。</p> -<note><title>$B5;=Q%a%b(B</title> - $B<B:]$K$O!"L>A0$rJQ49$9$kCJ3,(B (URL - $B$r%U%!%$%kL>$K%^%C%W$9$k$?$a$K(B <code>Alias</code> $B$d(B - <code>DocumentRoot</code> $B$,;HMQ$5$l$k$H$3$m(B) $B$ND>A0$K(B +<note><title>技術メモ</title> + 実際には、名前を変換する段階 (URL + をファイル名にマップするために <code>Alias</code> や + <code>DocumentRoot</code> が使用されるところ) の直前に <directive type="section" module="core">Location</directive>/<directive type="section" module="core">LocationMatch</directive> - $B$,9T$J$o$l$^$9!#(B - $B$3$l$i$rE,MQ$7$?7k2L$OJQ49$,=*$o$C$?8e$K40A4$K<N$F$i$l$^$9!#(B + が行なわれます。 + これらを適用した結果は変換が終わった後に完全に捨てられます。 </note> -<section id="merge-examples"><title>$BNc(B</title> +<section id="merge-examples"><title>例</title> -<p>$B<!$O%^!<%8$N=gHV$r<($9$?$a$NWs0UE*$JNc$K$J$C$F$$$^$9!#(B -$B%j%/%(%9%HA4$F$KE,MQ$5$l$k$H$7$F!"K\Nc$N%G%#%l%/%F%#%V$O(B -A > B > C > D > E $B$N=gHV$KE,MQ$5$l$^$9!#(B</p> +<p>次はマージの順番を示すための恣意的な例になっています。 +リクエスト全てに適用されるとして、本例のディレクティブは +A > B > C > D > E の順番に適用されます。</p> <example> <Location /><br /> @@ -452,12 +452,12 @@ A<br /> <br /> </example> -<p>$B$b$C$H6qBNE*$J!"<!$NNc$r9M$($F$_$^$7$g$&!#(B +<p>もっと具体的な、次の例を考えてみましょう。 <directive module="core" type="section">Directory</directive> -$B%;%/%7%g%s$K@_CV$5$l$?%"%/%;%9@)8B$K4X$o$i$:!"(B +セクションに設置されたアクセス制限に関わらず、 <directive module="core" type="section">Location</directive> -$B%;%/%7%g%s$,:G8e$KI>2A$5$l$F!"%5!<%P$X$N%"%/%;%9$O@)8B$5$l$^$;$s!#(B -$B8@$$49$($l$P!"%^!<%8$N=gHV$O=EMW$G!"Cm0U$7$F;HMQ$7$F$/$@$5$$(B!</p> +セクションが最後に評価されて、サーバへのアクセスは制限されません。 +言い換えれば、マージの順番は重要で、注意して使用してください!</p> <example> <Location /><br /> diff --git a/docs/manual/server-wide.xml.ja b/docs/manual/server-wide.xml.ja index 651ef0cc60..67ace472c6 100644 --- a/docs/manual/server-wide.xml.ja +++ b/docs/manual/server-wide.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 151408:420990 (outdated) --> @@ -22,16 +22,16 @@ <manualpage metafile="server-wide.xml.meta"> - <title>$B%5!<%PA4BN$N@_Dj(B</title> + <title>サーバ全体の設定</title> <summary> -<p>$B$3$N%I%-%e%a%s%H$G$O(B<module>core</module> -$B%5!<%P$N%G%#%l%/%F%#%V$NCf$G!"(B -$B4pK\F0:n$r@_Dj$9$k$?$a$N$b$N$r@bL@$7$^$9!#(B</p> +<p>このドキュメントでは<module>core</module> +サーバのディレクティブの中で、 +基本動作を設定するためのものを説明します。</p> </summary> <section id="identification"> - <title>$B%5!<%P(B ID</title> + <title>サーバ ID</title> <related> <directivelist> @@ -43,26 +43,26 @@ </directivelist> </related> - <p><directive module="core">ServerAdmin</directive> $B%G%#%l%/%F%#%V$H(B + <p><directive module="core">ServerAdmin</directive> ディレクティブと <directive module="core">ServerTokens</directive> - $B%G%#%l%/%F%#%V$O!"%(%i!<%a%C%;!<%8$J$I$N%5!<%P$,:n$k%I%-%e%a%s%H$K!"(B - $B$I$N$h$&$J%5!<%P$N>pJs$rI=<($9$k$+$r@)8f$7$^$9!#(B - <directive module="core">ServerTokens</directive> $B%G%#%l%/%F%#%V$O!"(BServer HTTP - $B%l%9%]%s%9%X%C%@%U%#!<%k%I$NCM$r@_Dj$7$^$9!#(B</p> + ディレクティブは、エラーメッセージなどのサーバが作るドキュメントに、 + どのようなサーバの情報を表示するかを制御します。 + <directive module="core">ServerTokens</directive> ディレクティブは、Server HTTP + レスポンスヘッダフィールドの値を設定します。</p> - <p><directive module="core">ServerName</directive> $B%G%#%l%/%F%#%V$H(B + <p><directive module="core">ServerName</directive> ディレクティブと <directive module="core">UseCanonicalName</directive> - $B%G%#%l%/%F%#%V$O!"%5!<%P$,<+J,<+?H$r;2>H$9$k(B URL - $B$r:n$k$H$-$K;H$o$l$^$9!#(B - $B$?$H$($P!"%/%i%$%"%s%H$,%G%#%l%/%H%j$rMW5a$7$F!"(B - $B$=$N%G%#%l%/%H%jL>$N:G8e$K%9%i%C%7%e$,IU$$$F$$$J$$$h$&$J>l9g$K$O!"(B - $B%I%-%e%a%s%H$NAjBPE*$J;2>H$r@5$7$/2r7h$G$-$k$h$&$K$9$k$?$a$K!"(B - Apache $B$O:G8e$N%9%i%C%7%e$r4^$s$@40A4$J%Q%9$K%/%i%$%"%s%H$r(B - $B%j%@%$%l%/%H$5$;$kI,MW$,$"$j$^$9!#(B</p> + ディレクティブは、サーバが自分自身を参照する URL + を作るときに使われます。 + たとえば、クライアントがディレクトリを要求して、 + そのディレクトリ名の最後にスラッシュが付いていないような場合には、 + ドキュメントの相対的な参照を正しく解決できるようにするために、 + Apache は最後のスラッシュを含んだ完全なパスにクライアントを + リダイレクトさせる必要があります。</p> </section> <section id="locations"> - <title>$B%U%!%$%k$N0LCV(B</title> + <title>ファイルの位置</title> <related> <directivelist> @@ -76,18 +76,18 @@ </directivelist> </related> - <p>$B$3$l$i$N%G%#%l%/%F%#%V$O(B Apache - $B$,E,@Z$JF0:n$r$9$k$?$a$KI,MW$J3F<o%U%!%$%k$N0LCV$r@)8f$7$^$9!#(B - $B%Q%9$,%9%i%C%7%e(B (/) $B$G;O$^$C$F$$$J$$$H$-$O!"%U%!%$%k$O(B - <directive module="core">ServerRoot</directive> $B$+$i$NAjBP%Q%9$H$7$F(B - $BC5$5$l$^$9!#(Broot - $B0J30$N%f!<%6$,=q$-9~$_2DG=$J%Q%9$K%U%!%$%k$rCV$/>l9g$OCm0U$,I,MW$G$9!#(B - $B>\:Y$O(B<a href="misc/security_tips.html#serverroot">$B!V%;%-%e%j%F%#>pJs!W(B</a> - $B$r;2>H$7$F$/$@$5$$!#(B</p> + <p>これらのディレクティブは Apache + が適切な動作をするために必要な各種ファイルの位置を制御します。 + パスがスラッシュ (/) で始まっていないときは、ファイルは + <directive module="core">ServerRoot</directive> からの相対パスとして + 探されます。root + 以外のユーザが書き込み可能なパスにファイルを置く場合は注意が必要です。 + 詳細は<a href="misc/security_tips.html#serverroot">「セキュリティ情報」</a> + を参照してください。</p> </section> <section id="resource"> - <title>$B%j%=!<%9$N@)8B(B</title> + <title>リソースの制限</title> <related> <directivelist> @@ -102,17 +102,17 @@ </directivelist> </related> - <p><directive>LimitRequest</directive>* $B%G%#%l%/%F%#%V$O(B Apache - $B$,%/%i%$%"%s%H$+$i$N%j%/%(%9%HFI$_9~$_$G;H$&(B - $B%j%=!<%9$r@)8B$9$k$?$a$K;H$o$l$^$9!#$3$l$i$NCM$r@)8B$9$k$3$H$G!"(B - $B$$$/$D$+$N%5!<%S%95qH]967b$O1F6A$rOB$i$2$k$3$H$,$G$-$^$9!#(B</p> + <p><directive>LimitRequest</directive>* ディレクティブは Apache + がクライアントからのリクエスト読み込みで使う + リソースを制限するために使われます。これらの値を制限することで、 + いくつかのサービス拒否攻撃は影響を和らげることができます。</p> - <p><directive>RLimit</directive>* $B%G%#%l%/%F%#%V$O!"(BApache $B$N;R%W%m%;%9$+$i(B - fork $B$5$l$?%W%m%;%9$,;HMQ$9$k%j%=!<%9$r@)8B$9$k$?$a$K;H$o$l$^$9!#(B - $BFC$K!"$3$l$O(B CGI $B%9%/%j%W%H$H(B SSI exec - $B%3%^%s%I$G;H$o$l$k%j%=!<%9$r@)8f$7$^$9!#(B</p> + <p><directive>RLimit</directive>* ディレクティブは、Apache の子プロセスから + fork されたプロセスが使用するリソースを制限するために使われます。 + 特に、これは CGI スクリプトと SSI exec + コマンドで使われるリソースを制御します。</p> - <p><directive module="mpm_common">ThreadStackSize</directive> $B$O(B Netware - $B$G$N$_!"%9%?%C%/$NBg$-$5$r@)8f$9$k$?$a$K;H$o$l$^$9!#(B</p> + <p><directive module="mpm_common">ThreadStackSize</directive> は Netware + でのみ、スタックの大きさを制御するために使われます。</p> </section> </manualpage> diff --git a/docs/manual/sitemap.xml.ja b/docs/manual/sitemap.xml.ja index 2a46dec951..6408edb0c1 100644 --- a/docs/manual/sitemap.xml.ja +++ b/docs/manual/sitemap.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sitemap SYSTEM "./style/sitemap.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 159098:587444 (outdated) --> @@ -25,142 +25,142 @@ <title>Site Map</title> <summary> -<p>$B$3$N%Z!<%8$O8=;~E@$GMxMQ2DG=$J(B -<a href="./">Apache HTTP $B%5!<%P%P!<%8%g%s(B &httpd.major;.&httpd.minor; $B$N%I%-%e%a%s%F!<%7%g%s(B</a> -$B$N0lMw$G$9!#(B</p> +<p>このページは現時点で利用可能な +<a href="./">Apache HTTP サーババージョン &httpd.major;.&httpd.minor; のドキュメンテーション</a> +の一覧です。</p> </summary> <category id="release"> -<title>$B%j%j!<%9$N%a%b(B</title> -<page href="upgrading.html">1.3 $B$+$i(B 2.0 $B$X$N%"%C%W%0%l!<%I(B</page> -<page href="new_features_2_0.html">Apache 2.0 $B$N?75!G=(B</page> +<title>リリースのメモ</title> +<page href="upgrading.html">1.3 から 2.0 へのアップグレード</page> +<page href="new_features_2_0.html">Apache 2.0 の新機能</page> <page href="license.html">Apache License</page> </category> <category id="using"> -<title>Apache HTTP $B%5!<%P$N;HMQ(B</title> -<page href="install.html">Apache $B$N%3%s%Q%$%k$H%$%s%9%H!<%k(B</page> -<page href="invoking.html">Apache $B$N5/F0(B</page> -<page href="stopping.html">$B%5!<%P$NDd;_$H:F5/F0(B</page> -<page href="configuring.html">$B@_Dj%U%!%$%k(B</page> -<page href="sections.html">Directory, Location, Files $B%;%/%7%g%s$NF0:nJ}K!(B</page> -<page href="server-wide.html">$B%5!<%PA4BN$N@_Dj(B</page> -<page href="logs.html">$B%m%0%U%!%$%k(B</page> -<page href="urlmapping.html">URL $B$+$i%U%!%$%k%7%9%F%`>e$N0LCV$X$N%^%C%W(B</page> -<page href="misc/security_tips.html">$B%;%-%e%j%F%#$N%3%D(B</page> -<page href="dso.html">$BF0E*6&M-%*%V%8%'%/%H(B (DSO) $B%5%]!<%H(B</page> -<page href="content-negotiation.html">$B%3%s%F%s%H%M%4%7%(!<%7%g%s(B</page> -<page href="custom-error.html">$B%+%9%?%`%(%i!<%l%9%]%s%9(B</page> -<page href="bind.html">Apache $B$,;HMQ$9$k%"%I%l%9$H%]!<%H$N@_Dj(B</page> -<page href="mpm.html">$B%^%k%A%W%m%;%C%7%s%0%b%8%e!<%k(B (MPM)</page> -<page href="env.html">Apache $B$K$*$1$k4D6-JQ?t(B</page> -<page href="handler.html">Apache $B$N%O%s%I%i$N;HMQ(B</page> -<page href="filter.html">$B%U%#%k%?(B</page> -<page href="suexec.html">suEXEC $B%5%]!<%H(B</page> -<page href="misc/perf-tuning.html">$B@-G=$K4X$9$k%R%s%H(B</page> -<page href="misc/rewriteguide.html">URL $B%j%i%$%H%,%$%I(B</page> +<title>Apache HTTP サーバの使用</title> +<page href="install.html">Apache のコンパイルとインストール</page> +<page href="invoking.html">Apache の起動</page> +<page href="stopping.html">サーバの停止と再起動</page> +<page href="configuring.html">設定ファイル</page> +<page href="sections.html">Directory, Location, Files セクションの動作方法</page> +<page href="server-wide.html">サーバ全体の設定</page> +<page href="logs.html">ログファイル</page> +<page href="urlmapping.html">URL からファイルシステム上の位置へのマップ</page> +<page href="misc/security_tips.html">セキュリティのコツ</page> +<page href="dso.html">動的共有オブジェクト (DSO) サポート</page> +<page href="content-negotiation.html">コンテントネゴシエーション</page> +<page href="custom-error.html">カスタムエラーレスポンス</page> +<page href="bind.html">Apache が使用するアドレスとポートの設定</page> +<page href="mpm.html">マルチプロセッシングモジュール (MPM)</page> +<page href="env.html">Apache における環境変数</page> +<page href="handler.html">Apache のハンドラの使用</page> +<page href="filter.html">フィルタ</page> +<page href="suexec.html">suEXEC サポート</page> +<page href="misc/perf-tuning.html">性能に関するヒント</page> +<page href="misc/rewriteguide.html">URL リライトガイド</page> </category> <category id="vhosts"> -<title>Apache $B%P!<%A%c%k%[%9%H%I%-%e%a%s%H(B</title> -<page separate="yes" href="vhosts/">$B35N,(B</page> -<page href="vhosts/name-based.html">$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H(B</page> -<page href="vhosts/ip-based.html">IP $B%Y!<%9$N%P!<%A%c%k%[%9%H$N%5%]!<%H(B</page> -<page href="vhosts/mass.html">$BF0E*$K@_Dj$5$l$?Bg5,LO%P!<%A%c%k%[%9%H(B</page> -<page href="vhosts/examples.html">VirtualHost $B$NNc(B</page> -<page href="vhosts/details.html">$B%P!<%A%c%k%[%9%H$N%^%C%A%s%0$N>\$7$$@bL@(B</page> -<page href="vhosts/fd-limits.html">$B%U%!%$%k5-=R;R$N8B3&(B</page> -<page href="dns-caveats.html">DNS $B$H(B Apache $B$H$K4X78$9$kLdBj(B</page> +<title>Apache バーチャルホストドキュメント</title> +<page separate="yes" href="vhosts/">概略</page> +<page href="vhosts/name-based.html">名前ベースのバーチャルホスト</page> +<page href="vhosts/ip-based.html">IP ベースのバーチャルホストのサポート</page> +<page href="vhosts/mass.html">動的に設定された大規模バーチャルホスト</page> +<page href="vhosts/examples.html">VirtualHost の例</page> +<page href="vhosts/details.html">バーチャルホストのマッチングの詳しい説明</page> +<page href="vhosts/fd-limits.html">ファイル記述子の限界</page> +<page href="dns-caveats.html">DNS と Apache とに関係する問題</page> </category> <category id="faq"> -<title>Apache $B%5!<%P$N$h$/$"$k<ALd(B</title> -<page href="faq/">$B35N,(B</page> -<page href="faq/support.html">$B%5%]!<%H(B</page> -<page href="faq/error.html">$B%(%i!<%a%C%;!<%8(B</page> +<title>Apache サーバのよくある質問</title> +<page href="faq/">概略</page> +<page href="faq/support.html">サポート</page> +<page href="faq/error.html">エラーメッセージ</page> </category> <category id="ssl"> -<title>Apache $B$N(B SSL/TLS $B0E9f2=(B</title> -<page separate="yes" href="ssl/">$B35N,(B</page> -<page href="ssl/ssl_intro.html">SSL/TLS $B0E9f2=(B: $BF~Lg(B</page> -<page href="ssl/ssl_compat.html">SSL/TLS $B0E9f2=(B: $B8_49@-(B</page> -<page href="ssl/ssl_howto.html">SSL/TLS $B0E9f2=(B: $B%O%&%D!<(B</page> -<page href="ssl/ssl_faq.html">SSL/TLS $B0E9f2=(B: FAQ</page> +<title>Apache の SSL/TLS 暗号化</title> +<page separate="yes" href="ssl/">概略</page> +<page href="ssl/ssl_intro.html">SSL/TLS 暗号化: 入門</page> +<page href="ssl/ssl_compat.html">SSL/TLS 暗号化: 互換性</page> +<page href="ssl/ssl_howto.html">SSL/TLS 暗号化: ハウツー</page> +<page href="ssl/ssl_faq.html">SSL/TLS 暗号化: FAQ</page> </category> <category id="howto"> -<title>$B%,%$%I!"%A%e!<%H%j%"%k!"%O%&%D!<(B</title> -<page separate="yes" href="howto/">$B35N,(B</page> -<page href="howto/auth.html">$BG'>Z(B</page> -<page href="howto/cgi.html">CGI $B$K$h$kF0E*%3%s%F%s%D(B</page> -<page href="howto/ssi.html">Server Side Includes $BF~Lg(B</page> -<page href="howto/htaccess.html">.htaccess $B%U%!%$%k(B</page> -<page href="howto/public_html.html">$B%f!<%6Kh$N%&%'%V%G%#%l%/%H%j(B</page> +<title>ガイド、チュートリアル、ハウツー</title> +<page separate="yes" href="howto/">概略</page> +<page href="howto/auth.html">認証</page> +<page href="howto/cgi.html">CGI による動的コンテンツ</page> +<page href="howto/ssi.html">Server Side Includes 入門</page> +<page href="howto/htaccess.html">.htaccess ファイル</page> +<page href="howto/public_html.html">ユーザ毎のウェブディレクトリ</page> </category> <category id="platform"> -<title>$B%W%i%C%H%U%)!<%`8GM-$N>pJs(B</title> -<page separate="yes" href="platform/">$B35N,(B</page> -<page href="platform/windows.html">Microsoft Windows $B$G$N(B Apache $B$N;HMQ(B</page> -<page href="platform/win_compiling.html">Microsoft Windows $B$G$N(B Apache -$B$N%3%s%Q%$%k(B</page> -<page href="platform/netware.html">Novell NetWare $B$G(B Apache $B$r;H$&(B</page> -<page href="platform/perf-hp.html">HPUX $B$G9b@-G=%&%'%V%5!<%P$r<B9T$9$k(B</page> -<page href="platform/ebcdic.html">EBCDIC $BHG(B Apache</page> +<title>プラットフォーム固有の情報</title> +<page separate="yes" href="platform/">概略</page> +<page href="platform/windows.html">Microsoft Windows での Apache の使用</page> +<page href="platform/win_compiling.html">Microsoft Windows での Apache +のコンパイル</page> +<page href="platform/netware.html">Novell NetWare で Apache を使う</page> +<page href="platform/perf-hp.html">HPUX で高性能ウェブサーバを実行する</page> +<page href="platform/ebcdic.html">EBCDIC 版 Apache</page> </category> <category id="programs"> -<title>Apache HTTP $B%5!<%P$H%5%]!<%H%W%m%0%i%`(B</title> -<page separate="yes" href="programs/">$B35N,(B</page> -<page href="programs/httpd.html">$B%^%K%e%"%k%Z!<%8(B: httpd</page> -<page href="programs/ab.html">$B%^%K%e%"%k%Z!<%8(B: ab</page> -<page href="programs/apachectl.html">$B%^%K%e%"%k%Z!<%8(B: apachectl</page> -<page href="programs/apxs.html">$B%^%K%e%"%k%Z!<%8(B: apxs</page> -<page href="programs/configure.html">$B%^%K%e%"%k%Z!<%8(B: configure</page> -<page href="programs/dbmmanage.html">$B%^%K%e%"%k%Z!<%8(B: dbmmanage</page> -<page href="programs/htcacheclean.html">$B%^%K%e%"%k%Z!<%8(B: htcacheclean</page> -<page href="programs/htdbm.html">$B%^%K%e%"%k%Z!<%8(B: htdbm</page> -<page href="programs/htdigest.html">$B%^%K%e%"%k%Z!<%8(B: htdigest</page> -<page href="programs/htpasswd.html">$B%^%K%e%"%k%Z!<%8(B: htpasswd</page> -<page href="programs/logresolve.html">$B%^%K%e%"%k%Z!<%8(B: logresolve</page> -<page href="programs/rotatelogs.html">$B%^%K%e%"%k%Z!<%8(B: rotatelogs</page> -<page href="programs/suexec.html">$B%^%K%e%"%k%Z!<%8(B: suexec</page> -<page href="programs/other.html">$BB>$N%W%m%0%i%`(B</page> +<title>Apache HTTP サーバとサポートプログラム</title> +<page separate="yes" href="programs/">概略</page> +<page href="programs/httpd.html">マニュアルページ: httpd</page> +<page href="programs/ab.html">マニュアルページ: ab</page> +<page href="programs/apachectl.html">マニュアルページ: apachectl</page> +<page href="programs/apxs.html">マニュアルページ: apxs</page> +<page href="programs/configure.html">マニュアルページ: configure</page> +<page href="programs/dbmmanage.html">マニュアルページ: dbmmanage</page> +<page href="programs/htcacheclean.html">マニュアルページ: htcacheclean</page> +<page href="programs/htdbm.html">マニュアルページ: htdbm</page> +<page href="programs/htdigest.html">マニュアルページ: htdigest</page> +<page href="programs/htpasswd.html">マニュアルページ: htpasswd</page> +<page href="programs/logresolve.html">マニュアルページ: logresolve</page> +<page href="programs/rotatelogs.html">マニュアルページ: rotatelogs</page> +<page href="programs/suexec.html">マニュアルページ: suexec</page> +<page href="programs/other.html">他のプログラム</page> </category> <category id="misc"> -<title>Apache $B$=$NB>(B</title> -<page separate="yes" href="misc/">$B35N,(B</page> -<page href="misc/relevant_standards.html">$B4XO"$9$kI8=`5,3J(B</page> +<title>Apache その他</title> +<page separate="yes" href="misc/">概略</page> +<page href="misc/relevant_standards.html">関連する標準規格</page> </category> <category id="modules"> -<title>Apache $B%b%8%e!<%k(B</title> -<page href="mod/module-dict.html">Apache $B%G%#%l%/%F%#%V$N@bL@$K;H$o$l$kMQ8l(B</page> -<page href="mod/directive-dict.html">Apache $B%G%#%l%/%F%#%V$r@bL@$K;H$o$l$kMQ8l(B</page> +<title>Apache モジュール</title> +<page href="mod/module-dict.html">Apache ディレクティブの説明に使われる用語</page> +<page href="mod/directive-dict.html">Apache ディレクティブを説明に使われる用語</page> </category> <category id="developer"> -<title>$B3+H/<T$N$?$a$N%I%-%e%a%s%H(B</title> -<page separate="yes" href="developer/">$B35N,(B</page> -<page href="developer/API.html">Apache API $B%a%b(B</page> +<title>開発者のためのドキュメント</title> +<page separate="yes" href="developer/">概略</page> +<page href="developer/API.html">Apache API メモ</page> <page href="developer/debugging.html">APR -$B$N%a%b%j%"%m%1!<%7%g%s$N%G%P%C%0(B</page> -<page href="developer/documenting.html">Apache 2.0 $B$N@bL@$r=q$/(B</page> -<page href="developer/hooks.html">Apache 2.0 $B%U%C%/4X?t(B</page> -<page href="developer/modules.html">Apache 1.3 $B$+$i(B Apache 2.0 $B$K%b%8%e!<%k$r(B -$B0\?"$9$k(B</page> -<page href="developer/request.html">Apache 2.0 $B$N%j%/%(%9%H=hM}(B</page> -<page href="developer/filters.html">Apache 2.0 $B$N%U%#%k%?$NF0:n$N;EJ}(B</page> +のメモリアロケーションのデバッグ</page> +<page href="developer/documenting.html">Apache 2.0 の説明を書く</page> +<page href="developer/hooks.html">Apache 2.0 フック関数</page> +<page href="developer/modules.html">Apache 1.3 から Apache 2.0 にモジュールを +移植する</page> +<page href="developer/request.html">Apache 2.0 のリクエスト処理</page> +<page href="developer/filters.html">Apache 2.0 のフィルタの動作の仕方</page> </category> <category id="index"> -<title>$BMQ8l=8$H:w0z(B</title> -<page href="glossary.html">$BMQ8l=8(B</page> -<page href="mod/">$B%b%8%e!<%k:w0z(B</page> -<page href="mod/directives.html">$B%G%#%l%/%F%#%V:w0z(B</page> -<page href="mod/quickreference.html">$B%G%#%l%/%F%#%V(B $B%/%$%C%/%j%U%!%l%s%9(B</page> +<title>用語集と索引</title> +<page href="glossary.html">用語集</page> +<page href="mod/">モジュール索引</page> +<page href="mod/directives.html">ディレクティブ索引</page> +<page href="mod/quickreference.html">ディレクティブ クイックリファレンス</page> </category> </sitemap> diff --git a/docs/manual/ssl/index.xml.ja b/docs/manual/ssl/index.xml.ja index d4060735b8..e8429b6480 100644 --- a/docs/manual/ssl/index.xml.ja +++ b/docs/manual/ssl/index.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,32 +23,32 @@ <manualpage metafile="index.xml.meta"> <parentdocument href="../"/> - <title>Apache $B$N(B SSL/TLS $B0E9f2=(B</title> + <title>Apache の SSL/TLS 暗号化</title> <summary> -<p>Apache HTTP $B%5!<%P%b%8%e!<%k(B <module>mod_ssl</module> $B$,(B +<p>Apache HTTP サーバモジュール <module>mod_ssl</module> が <a href="http://www.openssl.org/">OpenSSL</a> -$B%i%$%V%i%j$X$N%$%s%?!<%U%'!<%9$rDs6!$7$F$$$^$9$,!"$3$l$O(B -Secure Sockts Layer $B$H(B Transport Layer Security -$B%W%m%H%3%k$rMQ$$$?6/NO$J0E9f2=$rDs6!$7$^$9!#(B -$B$3$N%b%8%e!<%k$d$3$NJ8=q$O(B Ralf S. Engelschall $B$N(B mod_ssl -$B%W%m%8%'%/%H$K4p$E$$$F$$$^$9!#(B</p> +ライブラリへのインターフェースを提供していますが、これは +Secure Sockts Layer と Transport Layer Security +プロトコルを用いた強力な暗号化を提供します。 +このモジュールやこの文書は Ralf S. Engelschall の mod_ssl +プロジェクトに基づいています。</p> </summary> <section id="documentation"><title>Documentation</title> <ul> -<li><a href="ssl_intro.html">$B$O$8$a$K(B</a></li> -<li><a href="ssl_compat.html">$B8_49@-(B</a></li> +<li><a href="ssl_intro.html">はじめに</a></li> +<li><a href="ssl_compat.html">互換性</a></li> <li><a href="ssl_howto.html">How-To</a></li> -<li><a href="ssl_faq.html">$B$h$/$"$k<ALd(B</a></li> -<li><a href="../glossary.html">$BMQ8l(B</a></li> +<li><a href="ssl_faq.html">よくある質問</a></li> +<li><a href="../glossary.html">用語</a></li> </ul> </section> <section id="mod-ssl"><title>mod_ssl</title> -<p>$B$3$N%b%8%e!<%k$GDs6!$5$l$k%G%#%l%/%F%#%V$d4D6-JQ?t$K4X$9$k(B -$B>\$7$$J8=q$O!"(B<a href="../mod/mod_ssl.html">mod_ssl -$B%j%U%!%l%s%9(B</a>$B$r$4Mw2<$5$$!#(B</p> +<p>このモジュールで提供されるディレクティブや環境変数に関する +詳しい文書は、<a href="../mod/mod_ssl.html">mod_ssl +リファレンス</a>をご覧下さい。</p> </section> </manualpage> diff --git a/docs/manual/ssl/ssl_intro.xml.ja b/docs/manual/ssl/ssl_intro.xml.ja index 823b0d3a43..67e7720f15 100644 --- a/docs/manual/ssl/ssl_intro.xml.ja +++ b/docs/manual/ssl/ssl_intro.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 151408:659902 (outdated) --> @@ -23,281 +23,281 @@ <manualpage metafile="ssl_intro.xml.meta"> <parentdocument href="./">SSL/TLS</parentdocument> - <title>SSL/TLS $B0E9f2=(B: $B$O$8$a$K(B</title> + <title>SSL/TLS 暗号化: はじめに</title> <summary> <blockquote> -<p>$BI8=`5,3J$NNI$$=j$O!"$?$/$5$s$N5,3J$+$iA*$Y$k$H$$$&$3$H$@!#(B -$B$=$7$F!"$b$7K\Ev$K$I$N5,3J$b5$$KF~$i$J$1$l$P!"(B -$B0lG/BT$D$@$1$GC5$7$F$$$?5,3J$,8=$l$k!#(B</p> +<p>標準規格の良い所は、たくさんの規格から選べるということだ。 +そして、もし本当にどの規格も気に入らなければ、 +一年待つだけで探していた規格が現れる。</p> <p class="cite">-- <cite>A. Tanenbaum</cite>, "Introduction to Computer Networks"</p> </blockquote> <p> -$BF~Lg$H$$$&$3$H$G!"$3$N>O$O(B Web$B!"(BHTTP$B!"(BApache $B$KDL$8$F$$$k(B -$BFI<T8~$1$G$9$,!"%;%-%e%j%F%#@lLg2H8~$1$G$O$"$j$^$;$s!#(B -SSL $B%W%m%H%3%k$N7hDjE*$J<j0z$-$G$"$k$D$b$j$O$"$j$^$;$s!#(B -$B$^$?!"AH?%Fb$NG'>Z4IM}$N$?$a$NFCDj$N%F%/%K%C%/$d!"(B -$BFC5v$dM"=P5,@)$J$I$N=EMW$JK!E*$JLdBj$K$D$$$F$b07$$$^$;$s!#(B -$B$`$7$m!"99$J$k8&5f$X$N=PH/E@$H$7$F?'!9$J35G0!"Dj5A!"Nc$rJB$Y$k$3$H$G(B - mod_ssl $B$N%f!<%6$K4pACCN<1$rDs6!$9$k;v$rL\E*$H$7$F$$$^$9!#(B</p> - -<p>$B$3$3$K<($5$l$?FbMF$O<g$K!"86Cx<T$N5v2D$N2<(B -The Open Group Research Institute $B$N(B <a +入門ということで、この章は Web、HTTP、Apache に通じている +読者向けですが、セキュリティ専門家向けではありません。 +SSL プロトコルの決定的な手引きであるつもりはありません。 +また、組織内の認証管理のための特定のテクニックや、 +特許や輸出規制などの重要な法的な問題についても扱いません。 +むしろ、更なる研究への出発点として色々な概念、定義、例を並べることで + mod_ssl のユーザに基礎知識を提供する事を目的としています。</p> + +<p>ここに示された内容は主に、原著者の許可の下 +The Open Group Research Institute の <a href="http://home.earthlink.net/~fjhirsch/">Frederick J. Hirsch</a> - $B;a$N5-;v(B <a + 氏の記事 <a href="http://home.earthlink.net/~fjhirsch/Papers/wwwj/article.html"> -Introducing SSL and Certificates using SSLeay</a> $B$r4p$K$7$F$$$^$9!#(B -$B;a$N5-;v$O(B <a +Introducing SSL and Certificates using SSLeay</a> を基にしています。 +氏の記事は <a href="http://www.ora.com/catalog/wjsum97/">Web Security: A Matter of Trust</a>, World Wide Web Journal, Volume 2, Issue 3, Summer 1997 -$B$K7G:\$5$l$^$7$?!#(B -$B9NDjE*$J0U8+$O(B <a -href="mailto:hirsch@fjhirsch.com">Frederick Hirsch</a> $B;a(B - ($B855-;v$NCx<T(B) $B$XA4$F$N6l>p$O(B <a +に掲載されました。 +肯定的な意見は <a +href="mailto:hirsch@fjhirsch.com">Frederick Hirsch</a> 氏 + (元記事の著者) へ全ての苦情は <a href="mailto:rse@engelschall.com">Ralf S. Engelschall</a> ( -<module>mod_ssl</module> $B$N:n<T(B) $B$X$*4j$$$7$^$9!#(B -[$BLuCm(B: $BLu$K$D$$$F$O(B <a +<module>mod_ssl</module> の作者) へお願いします。 +[訳注: 訳については <a href="mailto:apache-docs@ml.apache.or.jp"> -Apache $B%I%-%e%a%s%HK]Lu%W%m%8%'%/%H(B</a> -$B$X$*4j$$$7$^$9!#(B]</p> +Apache ドキュメント翻訳プロジェクト</a> +へお願いします。]</p> </summary> <section id="cryptographictech"> -<title>$B0E9f2=5;=Q(B</title> -<p>SSL $B$rM}2r$9$k$K$O!"0E9f%"%k%4%j%:%`!"(B -$B%a%C%;!<%8%@%$%8%'%9%H4X?t(B($BJLL>(B: $B0lJ}8~4X?t!"%O%C%7%e4X?t(B)$B!"(B -$BEE;R=pL>$J$I$X$NM}2r$,I,MW$G$9!#(B -$B$3$l$i$N5;=Q$OK\$,4]$4$HI,MW$JBjL\$G(B -($BNc$($P(B [<a href="#AC96">AC96</a>] $B$r;2>H(B)$B!"(B -$B%W%i%$%P%7!<!"?.MQ!"G'>Z$J$I$N5;=Q$N4pAC$H$J$C$F$$$^$9!#(B</p> +<title>暗号化技術</title> +<p>SSL を理解するには、暗号アルゴリズム、 +メッセージダイジェスト関数(別名: 一方向関数、ハッシュ関数)、 +電子署名などへの理解が必要です。 +これらの技術は本が丸ごと必要な題目で +(例えば [<a href="#AC96">AC96</a>] を参照)、 +プライバシー、信用、認証などの技術の基礎となっています。</p> <section id="cryptographicalgo"> -<title>$B0E9f%"%k%4%j%:%`(B</title> - <p>$BNc$($P!"%"%j%9$,Aw6b$N$?$a$K6d9T$K%a%C%;!<%8$rAw$j$?$$$H$7$^$9!#(B - $B8}:BHV9f$dAw6b$N6b3[$,4^$^$l$k$?$a!"(B - $B%"%j%9$O$=$N%a%C%;!<%8$rHkL)$K$7$?$$$H;W$$$^$9!#(B - $B2r7hJ}K!$N0l$D$O0E9f%"%k%4%j%:%`$r;H$C$F!"%a%C%;!<%8$r(B - $BFI$^$;$?$$?M0J30$OFI$`$3$H$,$G$-$J$$0E9f2=$5$l$?(B - $B7ABV$KJQ$($F$7$^$&$3$H$G$9!#(B - $B$=$N7ABV$K$J$k$H!"(B - $B%a%C%;!<%8$OHkL)$N80$K$h$C$F$N$_2r<a$9$k$3$H$,$G$-$^$9!#(B - $B80$J$7$G$O!"%a%C%;!<%8$OLr$KN)$A$^$;$s!#(B - $BNI$$0E9f%"%k%4%j%:%`$O!"?/F~<T$,85$N%F%-%9%H$r2rFI$9$k$3$H$r(B - $BHs>o$KFq$7$/$9$k$?$a!"EXNO$,3d$K9g$o$J$/$5$;$^$9!#(B</p> - - <p>$B0E9f%"%k%4%j%:%`$K$O(B - $B=>Mh7?$H8x3+80$NFs$D$N<oN`$,$"$j$^$9!#(B</p> +<title>暗号アルゴリズム</title> + <p>例えば、アリスが送金のために銀行にメッセージを送りたいとします。 + 口座番号や送金の金額が含まれるため、 + アリスはそのメッセージを秘密にしたいと思います。 + 解決方法の一つは暗号アルゴリズムを使って、メッセージを + 読ませたい人以外は読むことができない暗号化された + 形態に変えてしまうことです。 + その形態になると、 + メッセージは秘密の鍵によってのみ解釈することができます。 + 鍵なしでは、メッセージは役に立ちません。 + 良い暗号アルゴリズムは、侵入者が元のテキストを解読することを + 非常に難しくするため、努力が割に合わなくさせます。</p> + + <p>暗号アルゴリズムには + 従来型と公開鍵の二つの種類があります。</p> <dl> - <dt>$B=>Mh7?0E9f(B</dt> - <dd>$BBP>N0E9f$H$7$F$bCN$i$l!"(B - $BAw?.<T$H<u?.<T$,80$r6&M-$9$k$3$H$,I,MW$G$9!#(B - $B80$H$O!"%a%C%;!<%8$r0E9f2=$7$?$jI|9f$9$k$N$K;H$o$l$kHkL)(B - $B$N>pJs$N$3$H$G$9!#(B - $B$b$7!"$3$N80$,HkL)$J$i!"Aw?.<T$H<u?.<T0J30$OC/$b%a%C%;!<%8$rFI(B - $B$`$3$H$,$G$-$^$;$s!#(B - $B$b$7$b!"%"%j%9$H6d9T$,HkL)$N80$rCN$C$F$$$k$J$i!"(B - $BH`$i$O$*8_$$$KHkL)$N%a%C%;!<%8$rAw$k$3$H$,$G$-$k$G$7$g$&!#(B - $B$?$@$7!";vA0$KFbL)$K80$rA*$V$H$$$&;E;v$OLdBj$r4^$s$G$$$^$9!#(B</dd> - - <dt>$B8x3+800E9f(B</dt> - <dd>$BHsBP>N0E9f$H$7$F$bCN$i$l!"(B - $B%a%C%;!<%8$r0E9f2=$9$k$3$H$N$G$-$kFs$D$N80(B - $B$r;HMQ$9$k%"%k%4%j%:%`$rDj5A$9$k$3$H$G80$N$d$j<h$j$NLdBj$r2r7h(B - $B$7$^$9!#(B - $B$b$7!"$"$k80$,0E9f2=$K;H$o$l$?$J$i!"(B - $B$b$&JRJ}$N80$GI|9f$7$J$1$l$P$$$1$^$;$s!#(B - $B$3$NJ}<0$K$h$C$F!"0l$D$N80$r8xI=$7$F(B($B8x3+80(B)$B!"(B - $B$b$&JRJ}$rHkL)$K$7$F$*$/(B($BHkL)80(B)$B$@$1$G!"(B - $B0BA4$J%a%C%;!<%8$r<u$1<h$k$3$H$,$G$-$^$9!#(B</dd> + <dt>従来型暗号</dt> + <dd>対称暗号としても知られ、 + 送信者と受信者が鍵を共有することが必要です。 + 鍵とは、メッセージを暗号化したり復号するのに使われる秘密 + の情報のことです。 + もし、この鍵が秘密なら、送信者と受信者以外は誰もメッセージを読 + むことができません。 + もしも、アリスと銀行が秘密の鍵を知っているなら、 + 彼らはお互いに秘密のメッセージを送ることができるでしょう。 + ただし、事前に内密に鍵を選ぶという仕事は問題を含んでいます。</dd> + + <dt>公開鍵暗号</dt> + <dd>非対称暗号としても知られ、 + メッセージを暗号化することのできる二つの鍵 + を使用するアルゴリズムを定義することで鍵のやり取りの問題を解決 + します。 + もし、ある鍵が暗号化に使われたなら、 + もう片方の鍵で復号しなければいけません。 + この方式によって、一つの鍵を公表して(公開鍵)、 + もう片方を秘密にしておく(秘密鍵)だけで、 + 安全なメッセージを受け取ることができます。</dd> </dl> - <p>$BC/$b$,0E9f2=$5$l$?%a%C%;!<%8$r8x3+80$K$h$C$F0E9f2=(B - $B$9$k$3$H$,$G$-$^$9$,!"HkL)80$N;}$A<g$@$1$,$=$l$rFI$`$3$H$,(B - $B$G$-$^$9!#(B - $B$3$NJ}K!$G!"6d9T$N8x3+80$r;H$C$F0E9f2=$9$k$3$H$G!"(B - $B%"%j%9$OHkL)$N%a%C%;!<%8$rAw$k$3$H$,$G$-$^$9!#(B - $B6d9T$N$_$,I|9f$9$k$3$H$,$G$-$^$9!#(B</p> + <p>誰もが暗号化されたメッセージを公開鍵によって暗号化 + することができますが、秘密鍵の持ち主だけがそれを読むことが + できます。 + この方法で、銀行の公開鍵を使って暗号化することで、 + アリスは秘密のメッセージを送ることができます。 + 銀行のみが復号することができます。</p> </section> <section id="messagedigests"> -<title>$B%a%C%;!<%8%@%$%8%'%9%H(B</title> - <p>$B%"%j%9$O%a%C%;!<%8$rHkL)$K$9$k$3$H$,$G$-$^$9$,!"(B - $BC/$+$,Nc$($P<+J,$KAw6b$9$k$h$&$K%a%C%;!<%8$rJQ99$7$?$j!"(B - $BJL$N$b$N$KCV$-49$($F$7$^$&$+$b$7$l$J$$$H$$$&LdBj$,$"$j$^$9!#(B - $B%"%j%9$N%a%C%;!<%8$N?.MQ$rJ]>Z$9$kJ}K!$N0l$D$O!"(B - $B%a%C%;!<%8$N4J7i$J%@%$%8%'%9%H$r:n$C$F!"$=$l$b6d9T$KAw$k$H$$$&$b$N$G$9!#(B - $B%a%C%;!<%8$r<u$1<h$k$H6d9T$b%@%$%8%'%9%H$r:n@.$7!"(B - $B%"%j%9$,Aw$C$?$b$N$HHf$Y$^$9!#$b$70lCW$7$?$J$i!"(B - $B<u$1<h$C$?%a%C%;!<%8$OL5=}$@$H$$$&$3$H$K$J$j$^$9!#(B</p> - - <p>$B$3$N$h$&$JMWLs$O(B<dfn>$B%a%C%;!<%8%@%$%8%'%9%H(B</dfn>$B!"(B - <em>$B0lJ}9T4X?t(B</em>$B!"$^$?$O(B<em>$B%O%C%7%e4X?t(B</em>$B$H8F$P$l$^$9!#(B - $B%a%C%;!<%8%@%$%8%'%9%H$OD9$$2DJQD9$N%a%C%;!<%8$+$i(B - $BC;$$8GDjD9$NI=8=$r:n$k$N$K;H$o$l$^$9!#(B - $B%@%$%8%'%9%H%"%k%4%j%:%`$O%a%C%;!<%8$+$i(B - $B0l0U$J%@%$%8%'%9%H$r@8@.$9$k$h$&$K:n$i$l$F$$$^$9!#(B - $B%a%C%;!<%8%@%$%8%'%9%H$O%@%$%8%'%9%H$+$i85$N%a%C%;!<%8$r(B - $BH=Dj$9$k$N$,$H$F$bFq$7$$$h$&$K$G$-$F$$$^$9!#(B - $B$^$?!"F1$8MWLs$r:n@.$9$kFs$D$N%a%C%;!<%8$rC5$9$N$OIT2DG=$G$9!#(B - $B$h$C$F!"F1$8MWLs$r;H$C$F%a%C%;!<%8$rCV$-49$($k$H$$$&(B - $B2DG=@-$rGS=|$7$F$$$^$9!#(B</p> - -<p>$B%"%j%9$X$N$b$&0l$D$NLdBj$O!"$3$N%@%$%8%'%9%H$r0BA4$KAw$kJ}K!$rC5$9$3$H$G$9!#(B -$B$3$l$,$G$-$l$P!"%a%C%;!<%8$N?.MQ$,J]>Z$5$l$^$9!#(B -$B0l$D$NJ}K!$O$3$N%@%$%8%'%9%H$KEE;R=pL>$r4^$`$3$H$G$9!#(B</p> +<title>メッセージダイジェスト</title> + <p>アリスはメッセージを秘密にすることができますが、 + 誰かが例えば自分に送金するようにメッセージを変更したり、 + 別のものに置き換えてしまうかもしれないという問題があります。 + アリスのメッセージの信用を保証する方法の一つは、 + メッセージの簡潔なダイジェストを作って、それも銀行に送るというものです。 + メッセージを受け取ると銀行もダイジェストを作成し、 + アリスが送ったものと比べます。もし一致したなら、 + 受け取ったメッセージは無傷だということになります。</p> + + <p>このような要約は<dfn>メッセージダイジェスト</dfn>、 + <em>一方行関数</em>、または<em>ハッシュ関数</em>と呼ばれます。 + メッセージダイジェストは長い可変長のメッセージから + 短い固定長の表現を作るのに使われます。 + ダイジェストアルゴリズムはメッセージから + 一意なダイジェストを生成するように作られています。 + メッセージダイジェストはダイジェストから元のメッセージを + 判定するのがとても難しいようにできています。 + また、同じ要約を作成する二つのメッセージを探すのは不可能です。 + よって、同じ要約を使ってメッセージを置き換えるという + 可能性を排除しています。</p> + +<p>アリスへのもう一つの問題は、このダイジェストを安全に送る方法を探すことです。 +これができれば、メッセージの信用が保証されます。 +一つの方法はこのダイジェストに電子署名を含むことです。</p> </section> -<section id="digitalsignatures"><title>$BEE;R=pL>(B</title> -<p>$B%"%j%9$,6d9T$K%a%C%;!<%8$rAw$C$?$H$-!"6d9T$O!"(B -$B?/F~<T$,H`=w$K$J$j$9$^$7$FH`=w$N8}:B$X$N<h0z$r?=@A$7$F$$$J$$$+!"(B -$B%a%C%;!<%8$,K\Ev$KH`=w$+$i$N$b$N$+3N<B$KJ,$+$i$J$1$l$P$$$1$^$;$s!#(B -$B%"%j%9$K$h$C$F:n@.$5$l!"%a%C%;!<%8$K4^$^$l$?(B -<em>$BEE;R=pL>(B</em>$B$,$3$3$GLr$KN)$A$^$9!#(B</p> - -<p>$BEE;R=pL>$O%a%C%;!<%8$N%@%$%8%'%9%H$d$=$NB>$N>pJs(B($B=hM}HV9f$J$I(B)$B$r(B -$BAw?.<T$NHkL)80$G0E9f2=$9$k$3$H$G:n$i$l$^$9!#(B -$BC/$b$,8x3+80$r;H$C$F=pL>$r(B<em>$BI|9f(B</em>$B$9$k$3$H$,$G$-$^$9$,!"(B -$B=pL><T$N$_$,HkL)80$rCN$C$F$$$^$9!#(B -$B$3$l$O!"H`$i$N$_$,=pL>$7$($?$3$H$r0UL#$7$^$9!#(B -$B%@%$%8%'%9%H$rEE;R=pL>$K4^$`$3$H$O!"(B -$B$=$N=pL>$,$=$N%a%C%;!<%8$N$_$KM-8z$G$"$k$3$H$r0UL#$7$^$9!#(B -$B$3$l$O!"C/$b%@%$%8%'%9%H$rJQ$($F=pL>$r$9$k$3$H$,$G$-$J$$$?$a!"(B -$B%a%C%;!<%8$N?.MQ$bJ]>Z$7$^$9!#(B</p> - -<p>$B?/F~<T$,=pL>$rK5<u$7$F8eF|$K:FMxMQ$9$k$N$rKI$0$?$a(B -$BEE;R=pL>$K$O0l0U$J=hM}HV9f$,4^$^$l$^$9!#(B -$B$3$l$O!"%"%j%9$,$=$s$J%a%C%;!<%8$OAw$C$F$$$J$$$H8@$&:>5=(B -$B$+$i6d9T$r<i$j$^$9!#(B -$BH`=w$@$1$,=pL>$7$($?$+$i$G$9!#(B($BH]G'KI;_(B)</p> +<section id="digitalsignatures"><title>電子署名</title> +<p>アリスが銀行にメッセージを送ったとき、銀行は、 +侵入者が彼女になりすまして彼女の口座への取引を申請していないか、 +メッセージが本当に彼女からのものか確実に分からなければいけません。 +アリスによって作成され、メッセージに含まれた +<em>電子署名</em>がここで役に立ちます。</p> + +<p>電子署名はメッセージのダイジェストやその他の情報(処理番号など)を +送信者の秘密鍵で暗号化することで作られます。 +誰もが公開鍵を使って署名を<em>復号</em>することができますが、 +署名者のみが秘密鍵を知っています。 +これは、彼らのみが署名しえたことを意味します。 +ダイジェストを電子署名に含むことは、 +その署名がそのメッセージのみに有効であることを意味します。 +これは、誰もダイジェストを変えて署名をすることができないため、 +メッセージの信用も保証します。</p> + +<p>侵入者が署名を傍受して後日に再利用するのを防ぐため +電子署名には一意な処理番号が含まれます。 +これは、アリスがそんなメッセージは送っていないと言う詐欺 +から銀行を守ります。 +彼女だけが署名しえたからです。(否認防止)</p> </section> </section> <!-- /cryptographictech --> <section id="certificates"> -<title>$B>ZL@=q(B</title> -<p>$B%"%j%9$OHkL)$N%a%C%;!<%8$r6d9T$KAw$j!"(B -$B=pL>$r$7$F!"%a%C%;!<%8$N?.MQ$rJ]>Z$9$k$3$H$,$G$-$k$*$&$K$J$j$^$7$?$,!"(B -$BDL?.$7$F$$$kAj<j$,K\Ev$K6d9T$J$N$+3N$+$a$J$/$F$O$$$1$^$;$s!#(B -$B$3$l$O!"H`=w$,;H$&8x3+80$,6d9T$NHkL)80$HBP$K$J$C$F$$$k$b$N$+!"(B -$BH`=w$O3N$+$a$J$/$F$O$$$1$J$$$H$$$&$3$H$r0UL#$7$^$9!#(B -$BF1MM$K!"6d9T$O%a%C%;!<%8$N=pL>$,K\Ev$K%"%j%9$N=pL>$+3NG'$9$kI,MW$,(B -$B$"$j$^$9!#(B</p> - -<p>$B$b$7N><T$K?H85$r>ZL@$7!"8x3+80$r3NG'$7!"$^$??.Mj$5$l$?5!4X$,=pL>(B -$B$7$?>ZL@=q$,$"$l$P!"N><T$H$bDL?.Aj<j$K$D$$$F@5$7$$Aj<j$@$H(B -$B3N?.$9$k$3$H$,$G$-$^$9!#(B -$B$=$N$h$&$J?.Mj$5$l$?5!4X$O(B<em>$BG'>Z6I(B</em> - (Certificate Authority $B$^$?$O(B CA) $B$H8F$P$l!"(B -$B>ZL@=q(B (certificate) $B$,G'>Z(B (authentication) $B$K;H$o$l$^$9!#(B</p> +<title>証明書</title> +<p>アリスは秘密のメッセージを銀行に送り、 +署名をして、メッセージの信用を保証することができるおうになりましたが、 +通信している相手が本当に銀行なのか確かめなくてはいけません。 +これは、彼女が使う公開鍵が銀行の秘密鍵と対になっているものか、 +彼女は確かめなくてはいけないということを意味します。 +同様に、銀行はメッセージの署名が本当にアリスの署名か確認する必要が +あります。</p> + +<p>もし両者に身元を証明し、公開鍵を確認し、また信頼された機関が署名 +した証明書があれば、両者とも通信相手について正しい相手だと +確信することができます。 +そのような信頼された機関は<em>認証局</em> + (Certificate Authority または CA) と呼ばれ、 +証明書 (certificate) が認証 (authentication) に使われます。</p> <section id="certificatecontents"> -<title>$B>ZL@=q$NFbMF(B</title> - <p>$B>ZL@=q$O8x3+80$H8D?M!"%5!<%P!"$=$NB>$N<gBN$N<B:_$N?H85$r(B - $B4XO"IU$1$^$9!#(B - <a href="#table1">$BI=(B1</a>$B$K<($5$l$k$h$&$K>ZL@BP>]$N>pJs$O(B - $B?H85>ZL@$N>pJs(B($B<1JLL>(B)$B$H8x3+80$,4^$^$l$^$9!#(B - $B>ZL@=q$O$^$?!"G'>Z6I$N?H85>ZL@$H=pL>!"$=$7$F>ZL@=q$NM-8z4|4V$r(B - $B4^$_$^$9!#(B - $B%7%j%"%k%J%s%P!<$J$I$NG'>Z6I$N4IM}>e$N>pJs$d(B - $B$=$NB>$NDI2C$N>pJs$,4^$^$l$F$$$k$+$b$7$l$^$;$s!#(B</p> +<title>証明書の内容</title> + <p>証明書は公開鍵と個人、サーバ、その他の主体の実在の身元を + 関連付けます。 + <a href="#table1">表1</a>に示されるように証明対象の情報は + 身元証明の情報(識別名)と公開鍵が含まれます。 + 証明書はまた、認証局の身元証明と署名、そして証明書の有効期間を + 含みます。 + シリアルナンバーなどの認証局の管理上の情報や + その他の追加の情報が含まれているかもしれません。</p> <section id="table1"> - <title>$BI=(B1: $B>ZL@=q>pJs(B</title> + <title>表1: 証明書情報</title> <table> <columnspec><column width=".35"/><column width=".35"/> </columnspec> - <tr><th>$B>ZL@BP>](B</th> - <td>$B<1JLL>!"8x3+80(B</td></tr> - <tr><th>$BH/9T<T(B</th> - <td>$B<1JLL>!"8x3+80(B</td></tr> - <tr><th>$BM-8z4|4V(B</th> - <td>$B3+;OF|!"<:8zF|(B</td></tr> - <tr><th>$B4IM}>pJs(B</th> - <td>$B%P!<%8%g%s!"%7%j%"%k%J%s%P!<(B</td></tr> - <tr><th>$B3HD%>pJs(B</th> - <td>$B4pK\E*$J@)Ls!"%M%C%H%9%1!<%W%U%i%C%0!"$=$NB>(B</td></tr> + <tr><th>証明対象</th> + <td>識別名、公開鍵</td></tr> + <tr><th>発行者</th> + <td>識別名、公開鍵</td></tr> + <tr><th>有効期間</th> + <td>開始日、失効日</td></tr> + <tr><th>管理情報</th> + <td>バージョン、シリアルナンバー</td></tr> + <tr><th>拡張情報</th> + <td>基本的な制約、ネットスケープフラッグ、その他</td></tr> </table> </section> - <p>$B<1JLL>(B($B%G%#%9%F%#%s%0%$%C%7%e!&%M!<%`(B)$B$OFCDj$N>u67$K$*$1$k(B - $B?HJ,>ZL@$rDs6!$9$k$N$K;H$o$l$F$$$^$9!#Nc$($P!"$"$k?M$O(B - $B;dMQ$H2q<R$H$GJL!9$N?HJ,>ZL@$r;}$D$+$b$7$l$^$;$s!#(B + <p>識別名(ディスティングイッシュ・ネーム)は特定の状況における + 身分証明を提供するのに使われています。例えば、ある人は + 私用と会社とで別々の身分証明を持つかもしれません。 - $B<1JLL>$O(B X.509 $BI8=`5,3J(B [<a - href="#X509">X509</a>] $B$GDj5A$5$l$F$$$^$9!#(B - X.509 $BI8=`5,3J$O!"9`L\!"9`L\L>!"$=$7$F9`L\$NN,>N$rDj5A$7$F$$$^$9!#(B(<a href="#table2">$BI=(B - 2</a> $B;2>H(B)</p> + 識別名は X.509 標準規格 [<a + href="#X509">X509</a>] で定義されています。 + X.509 標準規格は、項目、項目名、そして項目の略称を定義しています。(<a href="#table2">表 + 2</a> 参照)</p> <section id="table2"> - <title>$BI=(B 2: $B<1JLL>>pJs(B</title> + <title>表 2: 識別名情報</title> <table border="1"> <columnspec><column width=".25"/><column width=".15"/> <column width=".3"/><column width=".25"/></columnspec> - <tr><th>$B<1JLL>9`L\(B</th> - <th>$BN,>N(B</th> - <th>$B@bL@(B</th> - <th>$BNc(B</th></tr> - <tr><td>Common Name ($B%3%b%s%M!<%`(B)</td> + <tr><th>識別名項目</th> + <th>略称</th> + <th>説明</th> + <th>例</th></tr> + <tr><td>Common Name (コモンネーム)</td> <td>CN</td> - <td>$BG'>Z$5$l$kL>A0(B<br /> - SSL$B@\B3$9$k(BURL</td> + <td>認証される名前<br /> + SSL接続するURL</td> <td>CN=www.example.com</td></tr> - <tr><td>Organization or Company ($BAH?%L>(B)</td> + <tr><td>Organization or Company (組織名)</td> <td>O</td> - <td>$BCDBN$N@5<01Q8lAH?%L>(B</td> + <td>団体の正式英語組織名</td> <td>O=Example Japan K.K.</td></tr> - <tr><td>Organizational Unit ($BItLgL>(B)</td> + <tr><td>Organizational Unit (部門名)</td> <td>OU</td> - <td>$BIt=pL>$J$I(B</td> + <td>部署名など</td> <td>OU=Customer Service</td></tr> - <tr><td>City/Locality ($B;T6hD.B<(B)</td> + <tr><td>City/Locality (市区町村)</td> <td>L</td> - <td>$B=j:_$7$F$k;T6hD.B<(B</td> + <td>所在してる市区町村</td> <td>L=Sapporo</td></tr> - <tr><td>State/Province ($BETF;I\8)(B)</td> + <tr><td>State/Province (都道府県)</td> <td>ST</td> - <td>$B=j:_$7$F$kETF;I\8)(B</td> + <td>所在してる都道府県</td> <td>ST=Hokkaido</td></tr> - <tr><td>Country($B9q(B)</td> + <tr><td>Country(国)</td> <td>C</td> - <td>$B=j:_$7$F$$$k9qL>$N(B ISO $B%3!<%I(B<br /> - $BF|K\$N>l9g(B JP + <td>所在している国名の ISO コード<br /> + 日本の場合 JP </td> <td>C=JP</td></tr> </table> </section> - <p>$BG'>Z6I$O$I$N9`L\$,>JN,2DG=$G$I$l$,I,?\$+$NJ}?K$rDj5A$9$k(B - $B$+$b$7$l$^$;$s!#9`L\$NFbMF$K$D$$$F$bG'>Z6I$d>ZL@=q$N%f!<%6$+$i$N(B - $BMW7o$,$"$k$+$b$7$l$^$;$s!#(B - $BNc$($P!"%M%C%H%9%1!<%W$N%V%i%&%6$O%5!<%P$N>ZL@=q$N(B - Common Name ($B%3%b%s%M!<%`(B)$B$,%5!<%P$N%I%a%$%sL>$N(B + <p>認証局はどの項目が省略可能でどれが必須かの方針を定義する + かもしれません。項目の内容についても認証局や証明書のユーザからの + 要件があるかもしれません。 + 例えば、ネットスケープのブラウザはサーバの証明書の + Common Name (コモンネーム)がサーバのドメイン名の <code>*.example.com</code> - $B$H$$$&$h$&$J%o%$%k%I%+!<%I$N%Q%?!<%s$K%^%C%A$9$k$3$H(B - $B$rMW5a$7$^$9!#(B</p> - - <p>$B%P%$%J%j7A<0$N>ZL@=q$O(B ASN.1 $BI=5-K!(B - [<a href="#X208">X208</a>] [<a href="#PKCS">PKCS</a>] $B$G(B - $BDj5A$5$l$F$$$^$9!#(B - $B$3$NI=5-K!$OFbMF$r$I$N$h$&$K5-=R$9$k$+$rDj5A$7!"(B - $BId9f2=$N5,Dj$,$3$N>pJs$,$I$N$h$&$K%P%$%J%j7A<0$KJQ49$5$l$k$+$r(B - $BDj5A$7$^$9!#(B - $B>ZL@=q$N%P%$%J%jId9f2=$O(B Distinguished Encoding - Rules (DER) $B$GDj5A$5$l!"$=$l$O$h$j0lHLE*$J(B Basic Encoding Rules - (BER) $B$K4p$E$$$F$$$^$9!#(B - $B%P%$%J%j7A<0$r07$&$3$H$N$G$-$J$$Aw?.$G$O!"(B - $B%P%$%J%j7A<0$O(B Base64 $BId9f2=(B [<a href="#MIME">MIME</a>] $B$G(B - ASCII $B7A<0$KJQ49$5$l$k$3$H$,$"$j$^$9!#(B - $B$3$N$h$&$KId9f2=$5$l!"0J2<$NNc$K<($5$l$k$h$&$K6h@Z$j9T$K(B - $B64$^$l$?$b$N$O(B PEM $BId9f2=$5$l$?$H8@$$$^$9!#(B - (PEM $B$NL>A0$O(B "Privacy Enhanced Mail" $B$KM3Mh$7$^$9(B)</p> + というようなワイルドカードのパターンにマッチすること + を要求します。</p> + + <p>バイナリ形式の証明書は ASN.1 表記法 + [<a href="#X208">X208</a>] [<a href="#PKCS">PKCS</a>] で + 定義されています。 + この表記法は内容をどのように記述するかを定義し、 + 符号化の規定がこの情報がどのようにバイナリ形式に変換されるかを + 定義します。 + 証明書のバイナリ符号化は Distinguished Encoding + Rules (DER) で定義され、それはより一般的な Basic Encoding Rules + (BER) に基づいています。 + バイナリ形式を扱うことのできない送信では、 + バイナリ形式は Base64 符号化 [<a href="#MIME">MIME</a>] で + ASCII 形式に変換されることがあります。 + このように符号化され、以下の例に示されるように区切り行に + 挟まれたものは PEM 符号化されたと言います。 + (PEM の名前は "Privacy Enhanced Mail" に由来します)</p> <example> - <title>PEM $BId9f2=$5$l$?>ZL@=q$NNc(B (example.crt)</title> + <title>PEM 符号化された証明書の例 (example.crt)</title> <pre>-----BEGIN CERTIFICATE----- MIIC7jCCAlegAwIBAgIBATANBgkqhkiG9w0BAQQFADCBqTELMAkGA1UEBhMCWFkx FTATBgNVBAgTDFNuYWtlIERlc2VydDETMBEGA1UEBxMKU25ha2UgVG93bjEXMBUG @@ -320,86 +320,86 @@ dUHzICxBVC1lnHyYGjDuAMhe396lYAn8bCld1/L4NMGBCQ== </section> <section id="certificateauthorities"> -<title>$BG'>Z6I(B</title> - <p>$B$^$:>ZL@=q$N?=@A$N>pJs$r3NG'$9$k$3$H$G!"(B - $BG'>Z6I$OHkL)80$N;}$A<g$N?H85$rJ]>Z$7$^$9!#(B - $BNc$($P!"%"%j%9$,8D?M>ZL@=q$r?=@A$7$?$H$9$k$H!"(B - $BG'>Z6I$O%"%j%9$,>ZL@=q$N?=@A$,<gD%$9$kDL$j$N(B - $B?MJ*$@$H$$$&$3$H$r3NG'$7$J$/$F$O$$$1$^$;$s!#(B</p> +<title>認証局</title> + <p>まず証明書の申請の情報を確認することで、 + 認証局は秘密鍵の持ち主の身元を保証します。 + 例えば、アリスが個人証明書を申請したとすると、 + 認証局はアリスが証明書の申請が主張する通りの + 人物だということを確認しなくてはいけません。</p> <section id="certificatechains"> - <title>$B>ZL@=q3,AX9=B$(B</title> - <p>$BG'>Z6I$OB>$NG'>Z6I$X$N>ZL@=q$rH/9T$9$k$3$H$,$G$-$^$9!#(B - $BL$CN$N>ZL@=q$rD4$Y$k;~$K!"%"%j%9$O$=$N>ZL@=q$NH/9T<T(B - $B$K<+?.$,;}$F$k$^$G!"H/9T<T$N>ZL@=q$r(B - $B$=$N>e0L3,AX$NG'>Z6I$r$?$I$C$FD4$Y$kI,MW$,$"$j$^$9!#(B - $B!V0-<A$J!W>ZL@=q$N4m81@-$r8:$i$9$?$a!"(B - $BH`=w$O8B$i$l$?O":?$NH/9T<T$N$_?.Mj$9$k$h$&$K(B - $B7h$a$k$3$H$b$G$-$^$9!#(B</p> + <title>証明書階層構造</title> + <p>認証局は他の認証局への証明書を発行することができます。 + 未知の証明書を調べる時に、アリスはその証明書の発行者 + に自信が持てるまで、発行者の証明書を + その上位階層の認証局をたどって調べる必要があります。 + 「悪質な」証明書の危険性を減らすため、 + 彼女は限られた連鎖の発行者のみ信頼するように + 決めることもできます。</p> </section> <section id="rootlevelca"> - <title>$B:G>e0LG'>Z6I$N:n@.(B</title> - <p>$BA0$K=R$Y$?$h$&$K!"A4$F$N>ZL@=q$K$D$$$F!"(B - $B:G>e0L$NG'>Z6I(B(CA)$B$^$G$=$l$>$l$NH/9T<T$,(B - $BBP>]$N?H85>ZL@$NM-8z@-$rL@$i$+$K$9$kI,MW$,$"$j$^$9!#(B - $BLdBj$O!"C/$,$=$N:G>e0L$NG'>Z5!4X$N>ZL@=q$rJ]>Z$9$k$N$+!"(B - $B$H$$$&$3$H$G$9!#(B - $B$3$N$h$&$J>l9g$K8B$j!">ZL@=q$O!V<+8J=pL>!W$5$l$^$9!#(B - $B$D$^$j!">ZL@=q$NH/9T<T$H>ZL@BP>]$,F1$8$H$$$&$3$H$K$J$j$^$9!#(B - $B$=$N7k2L!"<+8J=pL>$5$l$?>ZL@=q$r?.MQ$9$k$K$O(B - $B:Y?4$NCm0U$,I,MW$G$9!#(B - $B:G>e0LG'>Z6I$,8x3+80$r9-$/8xI=$9$k$3$H$G!"(B - $B$=$N80$r?.Mj$9$k%j%9%/$rDc$/$9$k$3$H$,$G$-$^$9!#(B - $B$b$7!"B>?M$,$=$NG'>Z6I$K$J$j$9$^$7$?;~$K!"$=$l$,O*8+$7$d(B - $B$9$$$+$i$G$9!#(B - $BB?$/$N%V%i%&%6$OM-L>$JG'>Z6I$r?.Mj$9$k$h$&$K(B - $B@_Dj$5$l$F$$$^$9!#(B</p> + <title>最上位認証局の作成</title> + <p>前に述べたように、全ての証明書について、 + 最上位の認証局(CA)までそれぞれの発行者が + 対象の身元証明の有効性を明らかにする必要があります。 + 問題は、誰がその最上位の認証機関の証明書を保証するのか、 + ということです。 + このような場合に限り、証明書は「自己署名」されます。 + つまり、証明書の発行者と証明対象が同じということになります。 + その結果、自己署名された証明書を信用するには + 細心の注意が必要です。 + 最上位認証局が公開鍵を広く公表することで、 + その鍵を信頼するリスクを低くすることができます。 + もし、他人がその認証局になりすました時に、それが露見しや + すいからです。 + 多くのブラウザは有名な認証局を信頼するように + 設定されています。</p> <p><a href="http://www.thawte.com/">Thawte</a> - $B$d(B <a href="http://www.verisign.com/">VeriSign</a> - $B$N$h$&$JB?$/$N2q<R$,G'>Z6I$H$7$F3+@_$7$^$7$?!#(B - $B$3$N$h$&$J2q<R$O0J2<$N%5!<%S%9$rDs6!$7$^$9(B:</p> + や <a href="http://www.verisign.com/">VeriSign</a> + のような多くの会社が認証局として開設しました。 + このような会社は以下のサービスを提供します:</p> <ul> - <li>$B>ZL@=q?=@A$N3NG'(B</li> - <li>$B>ZL@=q?=@A$N=hM}(B</li> - <li>$B>ZL@=q$NH/9T$H4IM}(B</li> + <li>証明書申請の確認</li> + <li>証明書申請の処理</li> + <li>証明書の発行と管理</li> </ul> - <p>$B<+J,$GG'>Z6I$r:n$k$3$H$b2DG=$G$9!#(B - $B%$%s%?!<%M%C%H4D6-$G$O4m81$G$9$,!"(B - $B8D?M$d%5!<%P$N?H85>ZL@$,4JC1$K9T$($kAH?%$N(B - $B%$%s%H%i%M%C%HFb$G$OLr$KN)$D$+$b$7$l$^$;$s!#(B</p> + <p>自分で認証局を作ることも可能です。 + インターネット環境では危険ですが、 + 個人やサーバの身元証明が簡単に行える組織の + イントラネット内では役に立つかもしれません。</p> </section> <section id="certificatemanagement"> - <title>$B>ZL@=q4IM}(B</title> - <p>$BG'>Z6I$N3+@_$OE0Dl$7$?4IM}!"5;=Q!"1?MQ$NBN@)$rI,MW$H$9$k(B - $B@UG$$N$"$k;E;v$G$9!#(B - $BG'>Z6I$O>ZL@=q$rH/9T$9$k$@$1$G$J$/!"(B - $B4IM}$b$7$J$1$l$P$J$j$^$;$s!#(B - $B6qBNE*$K$O!">ZL@=q$,$$$D$^$GM-8z$+$r7hDj$7!"99?7$7!"(B - $B$^$?4{$KH/9T$5$l$?$,<:8z$7$?>ZL@=q$N%j%9%H(B - (Certificate Revocation Lists $B$^$?$O(B CRL) - $B$r4IM}$7$J$1$l$P$$$1$^$;$s!#(B - $BNc$($P!"%"%j%9$,2q<R$+$i<R0w$H$7$F>ZL@=q$rM?$($i$l$?$H$7$^$9!#(B - $B$=$7$F!"%"%j%9$,2q<R$r<-$a$k$H$-$K$O>ZL@=q$r<h$j>C$5$J$1$l$P(B - $B$$$1$J$$$H$7$^$9!#(B - $B>ZL@=q$O<!!9$H?M$KEO$5$l$F$$$/$b$N$J$N$G!"(B - $B>ZL@=q$=$N$b$N$+$i!"$=$l$,<h$j>C$5$l$?$+H=CG$9$k$3$H$O(B - $BIT2DG=$G$9!#(B - $B$h$C$F!">ZL@=q$NM-8z@-$rD4$Y$k$H$-$K$O!"(B - $BG'>Z6I$KO"Mm$7$F(B CRL $B$r>H9g$9$kI,MW$,$"$j$^$9!#(B - $BIaDL$3$N2aDx$O<+F02=$5$l$F$$$k$b$N$G$O$"$j$^$;$s!#(B</p> - - <note><title>$BCm0U(B</title> - <p>$B%G%U%)%k%H$G%V%i%&%6$K@_Dj$5$l$F$$$J$$G'>Z6I$r;H$C$?>l9g!"(B - $BG'>Z6I$N>ZL@=q$r%V%i%&%6$KFI$_9~$s$G!"(B - $B%V%i%&%6$,$=$NG'>Z6I$K$h$C$F=pL>$5$l$?%5!<%P$N>ZL@=q$r(B - $BM-8z2=$9$kI,MW$,$"$j$^$9!#(B - $B0lEYFI$_9~$^$l$k$H!"$=$NG'>Z6I$K$h$C$F=pL>$5$l$?A4$F$N(B - $B>ZL@=q$r<u$1F~$l$k$?$a!"4m81$rH<$$$^$9!#(B</p> + <title>証明書管理</title> + <p>認証局の開設は徹底した管理、技術、運用の体制を必要とする + 責任のある仕事です。 + 認証局は証明書を発行するだけでなく、 + 管理もしなければなりません。 + 具体的には、証明書がいつまで有効かを決定し、更新し、 + また既に発行されたが失効した証明書のリスト + (Certificate Revocation Lists または CRL) + を管理しなければいけません。 + 例えば、アリスが会社から社員として証明書を与えられたとします。 + そして、アリスが会社を辞めるときには証明書を取り消さなければ + いけないとします。 + 証明書は次々と人に渡されていくものなので、 + 証明書そのものから、それが取り消されたか判断することは + 不可能です。 + よって、証明書の有効性を調べるときには、 + 認証局に連絡して CRL を照合する必要があります。 + 普通この過程は自動化されているものではありません。</p> + + <note><title>注意</title> + <p>デフォルトでブラウザに設定されていない認証局を使った場合、 + 認証局の証明書をブラウザに読み込んで、 + ブラウザがその認証局によって署名されたサーバの証明書を + 有効化する必要があります。 + 一度読み込まれると、その認証局によって署名された全ての + 証明書を受け入れるため、危険を伴います。</p> </note> </section> </section> @@ -409,267 +409,267 @@ dUHzICxBVC1lnHyYGjDuAMhe396lYAn8bCld1/L4NMGBCQ== <section id="ssl"> <title>Secure Sockets Layer (SSL)</title> -<p>Secure Sockets Layer $B%W%m%H%3%k$O?.Mj@-$N$"$k%3%M%/%7%g%s7?$N(B -$B%M%C%H%o!<%/AX$N%W%m%H%3%k(B($BNc$($P!"(BTCP/IP)$B$H(B -$B%"%W%j%1!<%7%g%sAX$N%W%m%H%3%k(B($BNc$($P!"(BHTTP) -$B$N4V$KCV$/$3$H$,$G$-$^$9!#(B -SSL $B$O!"Aj8_G'>Z$K$h$C$F%5!<%P$H%/%i%$%"%s%H4V$N0BA4$JDL?.$r!"(B -$BEE;R=pL>$K$h$C$F%G!<%?$N40A4@-$r!"(B -$B$=$7$F0E9f2=$K$h$C$F%W%i%$%P%7$rDs6!$7$^$9!#(B</p> - -<p>SSL $B%W%m%H%3%k$O0E9f2=!"%@%$%8%'%9%H!"EE;R=pL>$K$D$$$F!"(B -$BMM!9$J%"%k%4%j%:%`$r%5%]!<%H$9$k$h$&$K$G$-$F$$$^$9!#(B -$B$3$&$9$k$3$H$G!"K!$dM"=P$N5,@)$r9MN8$KF~$l$F!"%5!<%P$K9g$o$;$?(B -$B%"%k%4%j%:%`$rA*$V$3$H$,$G$-!"$^$?!"?7$7$$%"%k%4%j%:%`$r(B -$BMxMQ$7$F$$$/$3$H$b2DG=$K$7$F$$$^$9!#(B -$B%"%k%4%j%:%`$NA*Br$O%W%m%H%3%k%;%C%7%g%s3+;O;~$K(B -$B%5!<%P$H%/%i%$%"%s%H4V$G<h$j7h$a$i$l$^$9!#(B</p> +<p>Secure Sockets Layer プロトコルは信頼性のあるコネクション型の +ネットワーク層のプロトコル(例えば、TCP/IP)と +アプリケーション層のプロトコル(例えば、HTTP) +の間に置くことができます。 +SSL は、相互認証によってサーバとクライアント間の安全な通信を、 +電子署名によってデータの完全性を、 +そして暗号化によってプライバシを提供します。</p> + +<p>SSL プロトコルは暗号化、ダイジェスト、電子署名について、 +様々なアルゴリズムをサポートするようにできています。 +こうすることで、法や輸出の規制を考慮に入れて、サーバに合わせた +アルゴリズムを選ぶことができ、また、新しいアルゴリズムを +利用していくことも可能にしています。 +アルゴリズムの選択はプロトコルセッション開始時に +サーバとクライアント間で取り決められます。</p> <section id="table4"> -<title>$BI=(B4: SSL $B%W%m%H%3%k$N%P!<%8%g%s(B</title> +<title>表4: SSL プロトコルのバージョン</title> <table border="1"> <columnspec><column width=".15"/><column width=".2"/> <column width=".30"/><column width=".25"/></columnspec> - <tr><th>$B%P!<%8%g%s(B</th> - <th>$B=PE5(B</th> - <th>$B@bL@(B</th> - <th>$B%V%i%&%6$N%5%]!<%H(B</th></tr> + <tr><th>バージョン</th> + <th>出典</th> + <th>説明</th> + <th>ブラウザのサポート</th></tr> <tr><td>SSL v2.0</td> - <td>Vendor Standard (Netscape Corp. $B$h$j(B) [<a href="#SSL2" + <td>Vendor Standard (Netscape Corp. より) [<a href="#SSL2" >SSL2</a>]</td> - <td>$B<BAu$,8=B8$9$k=i$a$F$N(B SSL $B%W%m%H%3%k(B</td> + <td>実装が現存する初めての SSL プロトコル</td> <td>- NS Navigator 1.x/2.x<br /> - MS IE 3.x<br /> - Lynx/2.8+OpenSSL</td></tr> <tr><td>SSL v3.0</td> - <td>Expired Internet Draft (Netscape Corp. $B$h$j(B) [<a href="#SSL3" + <td>Expired Internet Draft (Netscape Corp. より) [<a href="#SSL3" >SSL3</a>]</td> - <td>$BFCDj$N%;%-%e%j%F%#967b$rKI$0$?$a$N2~D{!"(B - $BHs(BRSA $B0E9f$NDI2C!">ZL@=q3,AX9=B$$N%5%]!<%H(B</td> + <td>特定のセキュリティ攻撃を防ぐための改訂、 + 非RSA 暗号の追加、証明書階層構造のサポート</td> <td>- NS Navigator 2.x/3.x/4.x<br /> - MS IE 3.x/4.x<br /> - Lynx/2.8+OpenSSL</td></tr> <tr><td>TLS v1.0</td> - <td>Proposed Internet Standard (IETF $B$h$j(B) [<a href="#TLS1" + <td>Proposed Internet Standard (IETF より) [<a href="#TLS1" >TLS1</a>]</td> - <td>MAC $B%l%$%d$r(B HMAC $B$X99?7!"%V%m%C%/0E9f$N(B block - padding$B!"%a%C%;!<%8=g=x$NI8=`2=!"7Y9pJ8$N=<<B$J$I$N$?$a(B - SSL 3.0 $B$r2~D{!#(B</td> + <td>MAC レイヤを HMAC へ更新、ブロック暗号の block + padding、メッセージ順序の標準化、警告文の充実などのため + SSL 3.0 を改訂。</td> <td>- Lynx/2.8+OpenSSL</td></tr> </table> </section> -<p><a href="#table4">$BI=(B4</a>$B$K<($5$l$k$H$*$j!"(BSSL $B%W%m%H%3%k$K$O(B -$B$$$/$D$b$N%P!<%8%g%s$,$"$j$^$9!#(B -$BI=$K$b=q$+$l$F$$$k$h$&$K!"(BSSL 3.0 $B$NMxE@$N0l$D$O(B -$B>ZL@=q3,AX9=B$$r%5%]!<%H$9$k$3$H$G$9!#(B -$B$3$N5!G=$K$h$C$F!"%5!<%P$O<+J,$N>ZL@=q$K2C$($F!"(B -$BH/9T<T$N>ZL@=q$r%V%i%&%6$KEO$9$3$H$,$G$-$^$9!#(B -$B>ZL@=q3,AX9=B$$K$h$C$F!"(B -$B%V%i%&%6$KH/9T<T$N>ZL@=q$,D>@\EPO?$5$l$F$$$J$/$F$b!"(B -$B3,AX$NCf$K4^$^$l$F$$$l$P!"(B -$B%V%i%&%6$O%5!<%P$N>ZL@=q$rM-8z2=$9$k$3$H$,$G$-$^$9!#(B -SSL 3.0 $B$O8=:_(B Internet Engineering Task Force (IETF) -$B$K$h$C$F3+H/$5$l$F$$$k(B Transport Layer Security -[<a href="#TLS1">TLS</a>] $B%W%m%H%3%kI8=`5,3J$N4pAC$H$J$C$F$$$^$9!#(B</p> +<p><a href="#table4">表4</a>に示されるとおり、SSL プロトコルには +いくつものバージョンがあります。 +表にも書かれているように、SSL 3.0 の利点の一つは +証明書階層構造をサポートすることです。 +この機能によって、サーバは自分の証明書に加えて、 +発行者の証明書をブラウザに渡すことができます。 +証明書階層構造によって、 +ブラウザに発行者の証明書が直接登録されていなくても、 +階層の中に含まれていれば、 +ブラウザはサーバの証明書を有効化することができます。 +SSL 3.0 は現在 Internet Engineering Task Force (IETF) +によって開発されている Transport Layer Security +[<a href="#TLS1">TLS</a>] プロトコル標準規格の基礎となっています。</p> <section id="session"> -<title>$B%;%C%7%g%s$N3NN)(B</title> - <p><a href="#figure1">$B?^(B1</a>$B$G<($5$l$k$h$&$K!"(B - $B%;%C%7%g%s$N3NN)$O%/%i%$%"%s%H$H%5!<%P4V$N(B - $B%O%s%I%7%'!<%/%7!<%/%(%s%9$K$h$C$F9T$J$o$l$^$9!#(B - $B%5!<%P$,>ZL@=q$rDs6!$9$k$+!"%/%i%$%"%s%H$N>ZL@=q$r%j%/%(%9%H$9$k$+(B - $B$H$$$&%5!<%P$N@_Dj$K$h$j!"$3$N%7!<%/%(%s%9$O0[$J$k$b$N$H$J$j$^$9!#(B - $B0E9f>pJs$N4IM}$N$?$a$K!"DI2C$N%O%s%I%7%'!<%/2aDx$,I,MW$K$J$k(B - $B>l9g$b$"$j$^$9$,!"$3$N5-;v$G$O(B - $B$h$/$"$k%7%J%j%*$r<jC;$K@bL@$7$^$9!#(B - $BA4$F$N2DG=@-$K$D$$$O!"(BSSL $B;EMM=q$r;2>H$7$F$/$@$5$$!#(B</p> - - <note><title>$BCm0U(B</title> - <p>$B0lEY(B SSL $B%;%C%7%g%s$,3NN)$9$k$H!"%;%C%7%g%s$r:FMxMQ$9$k$3$H$G!"(B - $B%;%C%7%g%s$r3+;O$9$k$?$a$NB?$/$N2aDx$r7+$jJV$9$H$$$&(B - $B%Q%U%)!<%^%s%9$NB;<:$rKI$.$^$9!#(B - $B$=$N$?$a!"%5!<%P$OA4$F$N%;%C%7%g%s$K0l0U$J%;%C%7%g%s<1JLL>$r(B - $B3d$jEv$F!"%5!<%P$K%-%c%C%7%e$7!"%/%i%$%"%s%H$O<!2s$+$i(B - ($B<1JLL>$,%5!<%P$N%-%c%C%7%e$G4|8B@Z$l$K$J$k$^$G$O(B) - $B%O%s%I%7%'!<%/$J$7$G@\B3$9$k$3$H$,$G$-$^$9!#(B</p> +<title>セッションの確立</title> + <p><a href="#figure1">図1</a>で示されるように、 + セッションの確立はクライアントとサーバ間の + ハンドシェークシークエンスによって行なわれます。 + サーバが証明書を提供するか、クライアントの証明書をリクエストするか + というサーバの設定により、このシークエンスは異なるものとなります。 + 暗号情報の管理のために、追加のハンドシェーク過程が必要になる + 場合もありますが、この記事では + よくあるシナリオを手短に説明します。 + 全ての可能性についは、SSL 仕様書を参照してください。</p> + + <note><title>注意</title> + <p>一度 SSL セッションが確立すると、セッションを再利用することで、 + セッションを開始するための多くの過程を繰り返すという + パフォーマンスの損失を防ぎます。 + そのため、サーバは全てのセッションに一意なセッション識別名を + 割り当て、サーバにキャッシュし、クライアントは次回から + (識別名がサーバのキャッシュで期限切れになるまでは) + ハンドシェークなしで接続することができます。</p> </note> <p class="figure"> <img src="../images/ssl_intro_fig1.gif" alt="" width="423" height="327" /><br /> - <a id="figure1" name="figure1"><dfn>$B?^(B1</dfn></a>: SSL - $B%O%s%I%7%'!<%/%7!<%/%(%s%935N,(B</p> + <a id="figure1" name="figure1"><dfn>図1</dfn></a>: SSL + ハンドシェークシークエンス概略</p> - <p>$B%5!<%P$H%/%i%$%"%s%H$G;H$o$l$k(B - $B%O%s%I%7%'!<%/%7!<%/%(%s%9$NMWAG$r0J2<$K<($7$^$9(B:</p> + <p>サーバとクライアントで使われる + ハンドシェークシークエンスの要素を以下に示します:</p> <ol> - <li>$B%G!<%?DL?.$K;H$o$l$k0E9f%9%$!<%H$N<h$j7h$a(B</li> - <li>$B%/%i%$%"%s%H$H%5!<%P4V$G$N%;%C%7%g%s80$N3NN)$H6&M-(B</li> - <li>$B%*%W%7%g%s$H$7$F!"%/%i%$%"%s%H$KBP$9$k%5!<%P$NG'>Z(B</li> - <li>$B%*%W%7%g%s$H$7$F!"%5!<%P$KBP$9$k%/%i%$%"%s%H$NG'>Z(B</li> + <li>データ通信に使われる暗号スイートの取り決め</li> + <li>クライアントとサーバ間でのセッション鍵の確立と共有</li> + <li>オプションとして、クライアントに対するサーバの認証</li> + <li>オプションとして、サーバに対するクライアントの認証</li> </ol> - <p>$BBh0l%9%F%C%W$N0E9f%9%$!<%H<h$j7h$a$K$h$C$F!"(B - $B%5!<%P$H%/%i%$%"%s%H$O$=$l$>$l$K$"$C$?(B - $B0E9f%9%$!<%H$rA*$V$3$H$,$G$-$^$9!#(B - SSL3.0 $B%W%m%H%3%k$N;EMM=q$O(B 31 $B$N0E9f%9%$!<%H$rDj5A$7$F$$$^$9!#(B - $B0E9f%9%$!<%H$O0J2<$N%3%s%]!<%M%s%H$K$h$jDj5A$5$l$F$$$^$9(B:</p> + <p>第一ステップの暗号スイート取り決めによって、 + サーバとクライアントはそれぞれにあった + 暗号スイートを選ぶことができます。 + SSL3.0 プロトコルの仕様書は 31 の暗号スイートを定義しています。 + 暗号スイートは以下のコンポーネントにより定義されています:</p> <ul> - <li>$B80$N8r49<jCJ(B</li> - <li>$B%G!<%?DL?.$N0E9f=Q(B</li> - <li>Message Authentication Code (MAC) $B:n@.$N$?$a$N(B - $B%a%C%;!<%8%@%$%8%'%9%H(B</li> + <li>鍵の交換手段</li> + <li>データ通信の暗号術</li> + <li>Message Authentication Code (MAC) 作成のための + メッセージダイジェスト</li> </ul> - <p>$B$3$l$i$N;0$D$NMWAG$O0J2<$N%;%/%7%g%s$G@bL@$5$l$F$$$^$9!#(B</p> + <p>これらの三つの要素は以下のセクションで説明されています。</p> </section> <section id="keyexchange"> -<title>$B80$N8r49<jCJ(B</title> - <p>$B80$N8r49<jCJ$O%"%W%j%1!<%7%g%s$N%G!<%?DL?.$K;H$o$l!"(B - $B6&M-$5$l$kBP>N0E9f80$r$I$N$h$&$K$,%/%i%$%"%s%H$H%5!<%P$G(B - $B<h$j7h$a$k$+$rDj5A$7$^$9!#(B - SSL 2.0 $B$O(B RSA $B808r49$7$+;H$$$^$;$s$,!"(B - SSL 3.0 $B$O>ZL@=q$,;H$o$l$k$H$-$O(B RSA $B808r49$r;H$$!"(B - $B>ZL@=q$,L5$/!"%/%i%$%"%s%H$H%5!<%P$N;vA0$NDL?.$,L5$$>l9g$O(B - Diffie-Hellman $B808r49$r;H$&(B - $B$J$IMM!9$J808r49%"%k%4%j%:%`$r%5%]!<%H$7$^$9!#(B</p> - - <p>$B80$N8r49J}K!$K$*$1$k0l$D$NA*Br;h$OEE;R=pL>$G$9!#(B - $BEE;R=pL>$r;H$&$+$I$&$+!"$^$?!"(B - $B$I$N<oN`$N=pL>$r;H$&$+$H$$$&A*Br$,$"$j$^$9!#(B - $BHkL)80$G=pL>$9$k$3$H$G6&M-80$r@8@.$9$7!">pJs8r49$9$k;~$N(B - $B%^%s!&%$%s!&%6!&%_%I%k967b$rKI$0$3$H$,$G$-$^$9!#(B +<title>鍵の交換手段</title> + <p>鍵の交換手段はアプリケーションのデータ通信に使われ、 + 共有される対称暗号鍵をどのようにがクライアントとサーバで + 取り決めるかを定義します。 + SSL 2.0 は RSA 鍵交換しか使いませんが、 + SSL 3.0 は証明書が使われるときは RSA 鍵交換を使い、 + 証明書が無く、クライアントとサーバの事前の通信が無い場合は + Diffie-Hellman 鍵交換を使う + など様々な鍵交換アルゴリズムをサポートします。</p> + + <p>鍵の交換方法における一つの選択肢は電子署名です。 + 電子署名を使うかどうか、また、 + どの種類の署名を使うかという選択があります。 + 秘密鍵で署名することで共有鍵を生成すし、情報交換する時の + マン・イン・ザ・ミドル攻撃を防ぐことができます。 [<a href="#AC96">AC96</a>, p516]</p> </section> <section id="ciphertransfer"> -<title>$B%G!<%?DL?.$N0E9f=Q(B</title> - <p>SSL $B$O%;%C%7%g%s$N%a%C%;!<%8$N0E9f2=$KA0=R$7$?(B - $B=>Mh7?0E9f(B($BBP>N0E9f(B)$B$rMQ$$$^$9!#(B - $B0E9f2=$7$J$$$H$$$&A*Br;h$b4^$a6e$D$NA*Br;h$,$"$j$^$9(B:</p> +<title>データ通信の暗号術</title> + <p>SSL はセッションのメッセージの暗号化に前述した + 従来型暗号(対称暗号)を用います。 + 暗号化しないという選択肢も含め九つの選択肢があります:</p> <ul> - <li>$B0E9f2=$J$7(B</li> - <li>$B%9%H%j!<%`0E9f(B + <li>暗号化なし</li> + <li>ストリーム暗号 <ul> - <li>40-bit $B80$G$N(B RC4</li> - <li>128-bit $B80$G$N(B RC4</li> + <li>40-bit 鍵での RC4</li> + <li>128-bit 鍵での RC4</li> </ul></li> - <li>CBC $B%V%m%C%/0E9f(B - <ul><li>40 bit $B80$G$N(B RC2</li> - <li>40 bit $B80$G$N(B DES</li> - <li>56 bit $B80$G$N(B DES</li> - <li>168 bit $B80$G$N(B Triple-DES</li> - <li>Idea (128 bit $B80(B)</li> - <li>Fortezza (96 bit $B80(B)</li> + <li>CBC ブロック暗号 + <ul><li>40 bit 鍵での RC2</li> + <li>40 bit 鍵での DES</li> + <li>56 bit 鍵での DES</li> + <li>168 bit 鍵での Triple-DES</li> + <li>Idea (128 bit 鍵)</li> + <li>Fortezza (96 bit 鍵)</li> </ul></li> </ul> - <p>$B$3$3$G$N(B CBC $B$H$O0E9f%V%m%C%/O":?(B (Cipher Block Chaining) - $B$NN,$G!"0l$DA0$N0E9f2=$5$l$?0E9fJ8$N0lIt$,(B - $B%V%m%C%/$N0E9f2=$K;H$o$l$k$3$H$r0UL#$7$^$9!#(B - DES $B$O%G!<%?0E9f2=I8=`5,3J(B (Data Encryption Standard) - [<a href="#AC96">AC96</a>, ch12] $B$NN,$G!"(B - DES40 $B$d(B 3DES_EDE $B$r4^$`$$$/$D$b$N<oN`$,$"$j$^$9!#(B - Idea $B$O:G9b$J$b$N$N0l$D$G!"0E9f=QE*$K$O8=:_$"$kCf$G(B - $B:G$b6/NO$J$b$N$G$9!#(B - RC2 $B$O(B RSA DSI $B$K$h$kFH@jE*$J%"%k%4%j%:%`$G$9!#(B + <p>ここでの CBC とは暗号ブロック連鎖 (Cipher Block Chaining) + の略で、一つ前の暗号化された暗号文の一部が + ブロックの暗号化に使われることを意味します。 + DES はデータ暗号化標準規格 (Data Encryption Standard) + [<a href="#AC96">AC96</a>, ch12] の略で、 + DES40 や 3DES_EDE を含むいくつもの種類があります。 + Idea は最高なものの一つで、暗号術的には現在ある中で + 最も強力なものです。 + RC2 は RSA DSI による独占的なアルゴリズムです。 [<a href="#AC96">AC96</a>, ch13]</p> </section> <section id="digestfuntion"> -<title>$B%@%$%8%'%9%H4X?t(B</title> +<title>ダイジェスト関数</title> <p> - $B%@%$%8%'%9%H4X?t$NA*Br$O%l%3!<%I%f%K%C%H$+$i$I$N$h$&$K%@%$%8%'%9%H$,@8@.$5$l$k$+$r7hDj$7$^$9!#(B - SSL $B$O0J2<$r%5%]!<%H$7$^$9(B:</p> + ダイジェスト関数の選択はレコードユニットからどのようにダイジェストが生成されるかを決定します。 + SSL は以下をサポートします:</p> <ul> - <li>$B%@%$%8%'%9%H$J$7(B</li> - <li>MD5 (128-bit $B%O%C%7%e(B)</li> - <li>Secure Hash Algorithm (SHA-1) (160-bit $B%O%C%7%e(B)</li> + <li>ダイジェストなし</li> + <li>MD5 (128-bit ハッシュ)</li> + <li>Secure Hash Algorithm (SHA-1) (160-bit ハッシュ)</li> </ul> - <p>$B%a%C%;!<%8%@%$%8%'%9%H$O(B Message Authentication Code (MAC) - $B$N@8@.$K;H$o$l!"%a%C%;!<%8$H6&$K0E9f2=$5$l!"%a%C%;!<%8$N?.MQ$r(B - $BDs6!$7!"%j%W%l%$967b$rKI$.$^$9!#(B</p> + <p>メッセージダイジェストは Message Authentication Code (MAC) + の生成に使われ、メッセージと共に暗号化され、メッセージの信用を + 提供し、リプレイ攻撃を防ぎます。</p> </section> <section id="handshake"> -<title>$B%O%s%I%7%'!<%/%7!<%/%(%s%9%W%m%H%3%k(B</title> - <p>$B%O%s%I%7%'!<%/%7!<%/%(%s%9$O;0$D$N%W%m%H%3%k$r;H$$$^$9(B:</p> +<title>ハンドシェークシークエンスプロトコル</title> + <p>ハンドシェークシークエンスは三つのプロトコルを使います:</p> <ul> - <li><dfn>SSL $B%O%s%I%7%'!<%/%W%m%H%3%k(B</dfn>$B$O(B - $B%/%i%$%"%s%H$H%5!<%P4V$G$N(B SSL $B%;%C%7%g%s$N3NN)$K;H$o$l$^$9!#(B</li> - <li><dfn>SSL $B0E9f;EMMJQ99%W%m%H%3%k(B</dfn>$B$O(B - $B%;%C%7%g%s$G$N0E9f%9%$!<%H$N<h$j7h$a$K;H$o$l$^$9!#(B</li> - <li><dfn>SSL $B7Y9p%W%m%H%3%k(B</dfn>$B$O(B - $B%/%i%$%"%s%H%5!<%P4V$G(B SSL $B%(%i!<$rEAC#$9$k$N$K;H$o$l$^$9!#(B</li> + <li><dfn>SSL ハンドシェークプロトコル</dfn>は + クライアントとサーバ間での SSL セッションの確立に使われます。</li> + <li><dfn>SSL 暗号仕様変更プロトコル</dfn>は + セッションでの暗号スイートの取り決めに使われます。</li> + <li><dfn>SSL 警告プロトコル</dfn>は + クライアントサーバ間で SSL エラーを伝達するのに使われます。</li> </ul> - <p>$B;0$D$N%W%m%H%3%k$O!"%"%W%j%1!<%7%g%s%W%m%H%3%k%G!<%?$H$H$b$K!"(B - <a href="#figure2">$B?^(B2</a>$B$K<($9$H$*$j(B <dfn>SSL $B%l%3!<%I%W%m%H%3%k(B</dfn> - $B$G%+%W%;%k2=$5$l$^$9!#(B - $B%+%W%;%k2=$5$l$?%W%m%H%3%k$O%G!<%?$r8!::$7$J$$(B - $B2<AX$N%W%m%H%3%k$K$h$C$F%G!<%?$H$7$FEAC#$5$l$^$9!#(B - $B%+%W%;%k2=$5$l$?%W%m%H%3%k$O2<AX$N%W%m%H%3%k$K4X$7$F0l@Z4XCN$7$^$;$s!#(B</p> + <p>三つのプロトコルは、アプリケーションプロトコルデータとともに、 + <a href="#figure2">図2</a>に示すとおり <dfn>SSL レコードプロトコル</dfn> + でカプセル化されます。 + カプセル化されたプロトコルはデータを検査しない + 下層のプロトコルによってデータとして伝達されます。 + カプセル化されたプロトコルは下層のプロトコルに関して一切関知しません。</p> <p class="figure"> <img src="../images/ssl_intro_fig2.gif" alt="" width="428" height="217" /><br /> - <a id="figure2" name="figure2"><dfn>$B?^(B2</dfn></a>: SSL $B%W%m%H%3%k%9%?%C%/(B + <a id="figure2" name="figure2"><dfn>図2</dfn></a>: SSL プロトコルスタック </p> <p> - $B%l%3!<%I%W%m%H%3%k$K$h$k(B SSL $B%3%s%H%m!<%k%W%m%H%3%k$N%+%W%;%k2=$O!"(B - $B%"%/%F%#%V$J%;%C%7%g%s$NFs2sL\$NDL?.$,$"$C$?>l9g!"(B - $B%3%s%H%m!<%k%W%m%H%3%k$,0BA4$G$"$k$3$H$r0UL#$7$^$9!#(B - $B4{$K%;%C%7%g%s$,L5$$>l9g$O!"(BNull $B0E9f%9%$!<%H$,;H$o$l!"(B - $B0E9f2=$O9T$J$o$l$:!"%;%C%7%g%s$,3NN)$9$k$^$G$O(B - $B%@%$%8%'%9%H$bL5$$>uBV$H$J$j$^$9!#(B</p> + レコードプロトコルによる SSL コントロールプロトコルのカプセル化は、 + アクティブなセッションの二回目の通信があった場合、 + コントロールプロトコルが安全であることを意味します。 + 既にセッションが無い場合は、Null 暗号スイートが使われ、 + 暗号化は行なわれず、セッションが確立するまでは + ダイジェストも無い状態となります。</p> </section> <section id="datatransfer"> -<title>$B%G!<%?DL?.(B</title> - <p><a href="#figure3">$B?^(B3</a>$B$K<($5$l$k(B SSL $B%l%3!<%I%W%m%H%3%k(B - $B$O%/%i%$%"%s%H$H%5!<%P4V$N%"%W%j%1!<%7%g%s$d(B - SSL $B%3%s%H%m!<%k%G!<%?$NDL?.$K;H$o$l$^$9!#(B - $B$3$N%G!<%?$O$h$j>.$5$$%f%K%C%H$KJ,$1$i$l$?$j!"(B - $B$$$/$D$+$N9b5i%W%m%H%3%k$r$^$H$a$F0l%f%K%C%H$H$7$FDL?.$,(B - $B9T$J$o$l$k$3$H$b$"$j$^$9!#(B - $B%G!<%?$r05=L$7!"%@%$%8%'%9%H=pL>$rE:IU$7$F!"(B - $B$3$l$i$N%f%K%C%H$r0E9f2=$7$?$N$A!"%Y!<%9$H$J$C$F$$$k(B - $B?.Mj@-$N$"$k%H%i%s%9%]!<%H%W%m%H%3%k$rMQ$$$k$+$b$7$l$^$;$s!#(B - ($BCm0U(B: $B8=:_%a%8%c!<$J(B SLL $B<BAu$G05=L$r%5%]!<%H$7$F$$$k$b$N$O$"$j$^$;$s(B)</p> +<title>データ通信</title> + <p><a href="#figure3">図3</a>に示される SSL レコードプロトコル + はクライアントとサーバ間のアプリケーションや + SSL コントロールデータの通信に使われます。 + このデータはより小さいユニットに分けられたり、 + いくつかの高級プロトコルをまとめて一ユニットとして通信が + 行なわれることもあります。 + データを圧縮し、ダイジェスト署名を添付して、 + これらのユニットを暗号化したのち、ベースとなっている + 信頼性のあるトランスポートプロトコルを用いるかもしれません。 + (注意: 現在メジャーな SLL 実装で圧縮をサポートしているものはありません)</p> <p class="figure"> <img src="../images/ssl_intro_fig3.gif" alt="" width="423" height="323" /><br /> - <a id="figure3" name="figure3"><dfn>$B?^(B 3</dfn></a>: SSL $B%l%3!<%I%W%m%H%3%k(B + <a id="figure3" name="figure3"><dfn>図 3</dfn></a>: SSL レコードプロトコル </p> </section> <section id="securehttp"> -<title>HTTP $BDL?.$N0BA42=(B</title> - <p>$B$h$/$"$k(B SSL $B$N;H$$J}$O%V%i%&%6$H%&%'%V%5!<%P4V$N(B HTTP $BDL?.(B - $B$N0BA42=$G$9!#(B - $B$3$l$O!"=>Mh$N0BA4$G$O$J$$(B HTTP $B$N;HMQ$r=|30$9$k$b$N$G$O$"$j$^$;$s!#(B - $B0BA42=$5$l$?$b$N$O<g$K(B SSH $B>e$NIaDL$N(B HTTP $B$G!"(BHTTPS $B$H8F$P$l$^$9!#(B - $BBg$-$J0c$$$O!"(BURL $B%9%-!<%`$K(B <code>http</code> $B$NBe$o$j$K(B <code>https</code> - $B$rMQ$$!"%5!<%P$,JL$N%]!<%H$r;H$&$3$H$G$9(B ($B%G%U%)%k%H$G$O(B443)$B!#(B - $B$3$l$,<g$K(B <module - >mod_ssl</module> $B$,(B Apache $B%&%'%V%5!<%P$KDs6!$9$k5!G=$G$9!#(B</p> +<title>HTTP 通信の安全化</title> + <p>よくある SSL の使い方はブラウザとウェブサーバ間の HTTP 通信 + の安全化です。 + これは、従来の安全ではない HTTP の使用を除外するものではありません。 + 安全化されたものは主に SSH 上の普通の HTTP で、HTTPS と呼ばれます。 + 大きな違いは、URL スキームに <code>http</code> の代わりに <code>https</code> + を用い、サーバが別のポートを使うことです (デフォルトでは443)。 + これが主に <module + >mod_ssl</module> が Apache ウェブサーバに提供する機能です。</p> </section> </section> <!-- /ssl --> <section id="references"> -<title>$B;29MJ88%(B</title> +<title>参考文献</title> <dl> <dt><a id="AC96" name="AC96">[AC96]</a></dt> <dd>Bruce Schneier, <q>Applied Cryptography</q>, 2nd Edition, Wiley, diff --git a/docs/manual/stopping.xml.ja b/docs/manual/stopping.xml.ja index 3add89054d..c9636a72bc 100644 --- a/docs/manual/stopping.xml.ja +++ b/docs/manual/stopping.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 151408:655319 (outdated) --> @@ -22,225 +22,225 @@ <manualpage metafile="stopping.xml.meta"> - <title>$BDd;_$H:F5/F0(B</title> + <title>停止と再起動</title> <summary> - <p>$B$3$NJ8=q$G$O(B Unix $B$KN`;w$7$?%7%9%F%`$G$N(B - Apache $B$NDd;_$H:F5/F0$K$D$$$F07$C$F$$$^$9!#(B - Windows NT, 2000, XP $B%f!<%6$O(B<a - href="platform/windows.html#winsvc">$B%5!<%S%9$H$7$F(B - Apache $B$r<B9T$9$k(B</a>$B$G!"(BWindows 9x, ME$B%f!<%6$O(B<a - href="platform/windows.html#wincons">$B%3%s%=!<%k%"%W%j%1!<%7%g%s$H$7$F(B - Apache $B$r<B9T$9$k(B</a>$B$G!"(B - $B$3$l$i$N%W%i%C%H%[!<%`$G$N;HMQJ}K!$r$4Mw2<$5$$!#(B</p> + <p>この文書では Unix に類似したシステムでの + Apache の停止と再起動について扱っています。 + Windows NT, 2000, XP ユーザは<a + href="platform/windows.html#winsvc">サービスとして + Apache を実行する</a>で、Windows 9x, MEユーザは<a + href="platform/windows.html#wincons">コンソールアプリケーションとして + Apache を実行する</a>で、 + これらのプラットホームでの使用方法をご覧下さい。</p> </summary> <seealso><program>httpd</program></seealso> <seealso><program>apachectl</program></seealso> -<section id="introduction"><title>$B%$%s%H%m%@%/%7%g%s(B</title> - - <p>Apache $B$rDd;_$7$?$j:F5/F0$7$?$j$9$k$?$a$K$O!"<B9T$5$l$F$$$k(B - <program>httpd</program> $B%W%m%;%9$K%7%0%J%k$rAw$kI,MW$,$"$j$^$9!#(B - $B%7%0%J%k$rAw$k$K$OFs$D$NJ}K!$,$"$j$^$9!#(B - $B0l$DL\$O%W%m%;%9$KD>@\%7%0%J%k$rAw$k(B unix $B$N(B <code>kill</code> - $B%3%^%s%I$r;HMQ$9$kJ}K!$G$9!#(B - $B%7%9%F%`$r8+$l$P$?$/$5$s$N(B <program>httpd</program> $B$,(B - $B<B9T$5$l$F$$$k$N$K5$$,IU$/$G$7$g$&$,!"%7%0%J%k$rAw$k$N$O(B - $B?F%W%m%;%9$@$1$G!"$=$l0J30$N8D!9$N%W%m%;%9$K$O(B - $B%7%0%J%k$rAw$i$J$$$G2<$5$$!#$=$N?F%W%m%;%9$N(B pid $B$O(B +<section id="introduction"><title>イントロダクション</title> + + <p>Apache を停止したり再起動したりするためには、実行されている + <program>httpd</program> プロセスにシグナルを送る必要があります。 + シグナルを送るには二つの方法があります。 + 一つ目はプロセスに直接シグナルを送る unix の <code>kill</code> + コマンドを使用する方法です。 + システムを見ればたくさんの <program>httpd</program> が + 実行されているのに気が付くでしょうが、シグナルを送るのは + 親プロセスだけで、それ以外の個々のプロセスには + シグナルを送らないで下さい。その親プロセスの pid は <directive module="mpm_common">PidFile</directive> - $B$K=q$+$l$F$$$^$9!#$3$l$O$D$^$j!"?F0J30$N%W%m%;%9$K(B - $B%7%0%J%k$rAw$kI,MW$9$i$J$$!"$H$$$&$3$H$G$9!#(B - $B?F%W%m%;%9$KAw$k$3$H$,$G$-$k(B 3 $B<oN`$N%7%0%J%k$,$"$j$^$9(B: + に書かれています。これはつまり、親以外のプロセスに + シグナルを送る必要すらない、ということです。 + 親プロセスに送ることができる 3 種類のシグナルがあります: <code><a href="#term">TERM</a></code>, <code><a href="#hup">HUP</a></code>, <code><a href="#graceful">USR1</a></code> - $B$G$9!#$3$l$i$N@bL@$K$D$$$F$OB3$-$r$4Mw2<$5$$!#(B</p> + です。これらの説明については続きをご覧下さい。</p> - <p>$B?F%W%m%;%9$K%7%0%J%k$rAw$k$K$O!"(B - $B<!$N$h$&$J%3%^%s%I$rH/9T$7$F2<$5$$(B:</p> + <p>親プロセスにシグナルを送るには、 + 次のようなコマンドを発行して下さい:</p> <example>kill -TERM `cat /usr/local/apache2/logs/httpd.pid`</example> - <p><program>httpd</program> $B%W%m%;%9$K%7%0%J%k$rAw$k(B 2 $BHVL\$NJ}K!$O(B - <code>-k</code> $B$H$$$&%3%^%s%I%i%$%s0z?t$r;HMQ$9$k$3$H$G$9!#(B - $B2<$G@bL@$5$l$F$$$k$h$&$K!"(B<code>stop</code>, <code>restart</code>, - <code>graceful</code> $B$r;XDj$G$-$^$9!#(B - $B$3$l$i$O(B <program>httpd</program> $B$N0z?t$G$9$,!"(B - $B@)8fMQ$N%9%/%j%W%H(B <program>apachectl</program> $B$O$=$l$i$N0z?t$r$=$N$^$^(B - <program>httpd</program> $B$KEO$7$^$9!#(B</p> + <p><program>httpd</program> プロセスにシグナルを送る 2 番目の方法は + <code>-k</code> というコマンドライン引数を使用することです。 + 下で説明されているように、<code>stop</code>, <code>restart</code>, + <code>graceful</code> を指定できます。 + これらは <program>httpd</program> の引数ですが、 + 制御用のスクリプト <program>apachectl</program> はそれらの引数をそのまま + <program>httpd</program> に渡します。</p> - <p><program>httpd</program> $B$K%7%0%J%k$rAw$C$?8e!"(B - $B<B9T>u67$r<!$N%3%^%s%I$GFI$`$3$H$,$G$-$^$9(B:</p> + <p><program>httpd</program> にシグナルを送った後、 + 実行状況を次のコマンドで読むことができます:</p> <example>tail -f /usr/local/apache2/logs/error_log</example> - <p>$B$3$3$K5s$2$?Nc$O!"3F<+$N(B + <p>ここに挙げた例は、各自の <directive module="core">ServerRoot</directive> - $B$H(B + と <directive module="mpm_common">PidFile</directive> - $B$N@_Dj$KE,9g$9$k$h$&$KE,59=$@5$7$F2<$5$$!#(B</p> + の設定に適合するように適宜修正して下さい。</p> </section> -<section id="term"><title>$B5^$JDd;_(B</title> +<section id="term"><title>急な停止</title> -<dl><dt>$B%7%0%J%k(B: TERM</dt> +<dl><dt>シグナル: TERM</dt> <dd><code>apachectl -k stop</code></dd> </dl> - <p><code>TERM</code> $B$"$k$$$O(B <code>stop</code> - $B%7%0%J%k$r?F%W%m%;%9$KAw$k$H!"B(:B$K;R%W%m%;%9A4$F$r(B kill $B$7$h$&$H$7$^$9!#(B - $B;R%W%m%;%9$r40A4$K(B kill $B$7=*$o$k$^$G$K?tIC$+$+$k$+$b$7$l$^$;$s!#(B - $B$=$N8e!"?F%W%m%;%9<+?H$,=*N;$7$^$9!#(B - $B=hM}Cf$N%j%/%(%9%H$OA4$FDd;_$5$l!"$b$O$d%j%/%(%9%H$KBP$9$k(B - $B1~Ez$O$5$l$^$;$s!#(B</p> + <p><code>TERM</code> あるいは <code>stop</code> + シグナルを親プロセスに送ると、即座に子プロセス全てを kill しようとします。 + 子プロセスを完全に kill し終わるまでに数秒かかるかもしれません。 + その後、親プロセス自身が終了します。 + 処理中のリクエストは全て停止され、もはやリクエストに対する + 応答はされません。</p> </section> -<section id="graceful"><title>$B4K$d$+$J:F5/F0(B</title> +<section id="graceful"><title>緩やかな再起動</title> -<dl><dt>$B%7%0%J%k(B: USR1</dt> +<dl><dt>シグナル: USR1</dt> <dd><code>apachectl -k graceful</code></dd> </dl> - <p>$B?F%W%m%;%9$O(B <code>USR1</code> $B$"$k$$$O(B <code>graceful</code> - $B%7%0%J%k$r<u$1<h$k$H!";R%W%m%;%9$K8=:_$N%j%/%(%9%H$N=hM}$N8e$K=*N;$9$k(B - ($B$"$k$$$O2?$b$7$F$$$J$1$l$P$9$0$K=*N;$9$k(B) - $B$h$&$K(B<em>$B=u8@(B</em>$B$7$^$9!#(B - $B?F%W%m%;%9$O@_Dj%U%!%$%k$r:FFI9~$7$F!"%m%0%U%!%$%k$r3+$-D>$7$^$9!#(B - $B;R%W%m%;%9$,=y!9$K$J$/$J$k$K=>$C$F!"(B - $B?7$7$$(B<em>$B@$Be(B</em>$B$N@_Dj$K$h$k;R%W%m%;%9$KCV$-49$($F$$$-$^$9!#(B - $B$=$7$F!"$3$l$i$,?7$?$J%j%/%(%9%H$KB(:B$K1~Ez$7;O$a$^$9!#(B</p> - - <note>$BFCDj$N%W%i%C%H%[!<%`$G$O(B <code>USR1</code> - $B$r4K$d$+$J:F5/F0$N$?$a$K;H$&$3$H$,$G$-$^$;$s$,!"Be$o$j$N%7%0%J%k(B - ($BNc$($P(B WINCH) $B$,;HMQ$G$-$k$G$7$g$&!#(B + <p>親プロセスは <code>USR1</code> あるいは <code>graceful</code> + シグナルを受け取ると、子プロセスに現在のリクエストの処理の後に終了する + (あるいは何もしていなければすぐに終了する) + ように<em>助言</em>します。 + 親プロセスは設定ファイルを再読込して、ログファイルを開き直します。 + 子プロセスが徐々になくなるに従って、 + 新しい<em>世代</em>の設定による子プロセスに置き換えていきます。 + そして、これらが新たなリクエストに即座に応答し始めます。</p> + + <note>特定のプラットホームでは <code>USR1</code> + を緩やかな再起動のために使うことができませんが、代わりのシグナル + (例えば WINCH) が使用できるでしょう。 <code>apachectl graceful</code> - $B$H$$$&%3%^%s%I$O%W%i%C%H%[!<%`$K9g$C$?%7%0%J%k$rAw$j$^$9!#(B</note> + というコマンドはプラットホームに合ったシグナルを送ります。</note> - <p>$B$3$N%3!<%I$O>o$K(B - MPM $B$N%W%m%;%9@)8f%G%#%l%/%F%#%V$N@_Dj$r=E;k$7$^$9$N$G!"(B - $B%/%i%$%"%s%H$N%j%/%(%9%H$r07$&%W%m%;%9$H%9%l%C%I$N?t$r:F5/F0$N=hM}Cf$b(B - $BE,@Z$JCM$K0];}$5$l$^$9!#!#$^$?!"<!$N$h$&$K$7$F(B + <p>このコードは常に + MPM のプロセス制御ディレクティブの設定を重視しますので、 + クライアントのリクエストを扱うプロセスとスレッドの数を再起動の処理中も + 適切な値に維持されます。。また、次のようにして <directive module="mpm_common">StartServers</directive> - $B$r<i$j$^$9(B: - $B>/$J$/$H$b(B 1 $BIC8e$K(B <directive - module="mpm_common">StartServers</directive> $B8D$N?7$7$$;R%W%m%;%9$,(B - $B@8@.$5$l$F$$$J$1$l$P!"$=$N?t$K$J$k$h$&$KE,59%W%m%;%9$r@8@.$7$^$9!#(B - $B$3$N5sF0$O8=:_$NIi2Y$KBP$7$FE,@Z$J;R%W%m%;%9$N?t$H(B + を守ります: + 少なくとも 1 秒後に <directive + module="mpm_common">StartServers</directive> 個の新しい子プロセスが + 生成されていなければ、その数になるように適宜プロセスを生成します。 + この挙動は現在の負荷に対して適切な子プロセスの数と <directive - module="mpm_common">StartServers</directive> $B%Q%i%a!<%?$G$N(B - $B4uK>$N?t$NN>J}$r0];}$7$h$&$H$7$F$$$^$9!#(B</p> - - <p><module>mod_status</module> $B$r(B - $B;HMQ$7$F$$$k>l9g$O!"(B<code>USR1</code> $B%7%0%J%k$,Aw$i$l$?:]$K(B - $B%5!<%PE}7W$,%<%m$K(B<strong>$B@_Dj$5$l$J$$(B</strong>$B$3$H$K(B - $BCm0U$7$F$/$@$5$$!#(B - $B%5!<%P$,?7$7$$%j%/%(%9%H$K1~EzITG=$J;~4V$r:G>.$K$9$k$h$&$K(B - ($B%j%/%(%9%H$O(B OS $B$K$h$C$F%-%e!<$KDI2C$5$l$k$N$G@dBP$KJ6<:$O$7$^$;$s(B)$B!"(B - $B$^$?F1;~$K!"4uK>$N%A%e!<%K%s%0%Q%i%a!<%?$r<i$k$h$&$K(B - $B%3!<%I$O=q$+$l$F$$$^$9!#(B - $B$3$N$h$&$K$9$k$?$a$K!"@$Be$r$^$?$,$C$?A4;R%W%m%;%9$NDI@W$K;H$o$l$F$$$k(B - <em>$B%9%3%"%\!<%I(B</em>$B$r0];}$7$J$1$l$P$J$j$^$;$s!#(B</p> - - <p>status $B%b%8%e!<%k$O!"4K$d$+$J:F5/F00JA0$+$i3+;O$7$F(B - $B%j%/%(%9%H$K1~Ez$7B3$1$F$$$k;R%W%m%;%9$rFCDj$9$k$?$a$K!"(B - <code>G</code> $B$r;H$&$3$H$b$7$^$9!#(B</p> - - <p>$B8=:_!"(B<code>USR1</code> $B$r;H$&%m%00\F0%9%/%j%W%H$G$O!"(B - $B:F5/F0A0$N;R%W%m%;%9$,%m%0$r=q$-=*$o$C$?$3$H$r3N>Z$9$kJ}K!$,(B - $B$"$j$^$;$s!#8E$$%m%0$KBP$7$F2?$+$9$kA0$K!"(B - <code>USR1</code> $B%7%0%J%k$rAw$C$?8e$$$/$i$+E,Ev$J;~4VBT$D$3$H$r(B - $BDs0F$7$^$9!#Nc$($P!"BS0h$N69$$DL?.O)$N%f!<%6$N%j%/%(%9%H$N$[$H$s$I$,(B 10 - $BJ,0J2<$G40N;$7$F$$$k$H$$$&$3$H$,J,$+$C$F$$$l$P!"(B - $B8E$$%m%0$K2?$+$9$kA0$K(B 15 $BJ,BT$D$H$$$&$3$H$G$9!#(B</p> - - <note>$B:F5/F0;~$K@_Dj%U%!%$%k$K8m$j$,$"$k$H!"(B - $B?F%W%m%;%9$O:F5/F0$;$:$K%(%i!<$H$H$b$K=*N;$7$^$9!#(B - $B4K$d$+$J:F5/F0$N>l9g$O!"?F%W%m%;%9$,=*N;$7$?8e$G$b;R%W%m%;%9$,(B - $B<B9T$5$l$?$^$^J|CV$5$l$?$j$b$7$^$9!#(B - ($B:G8e$N%j%/%(%9%H$r=hM}$7$?8e!V4K$d$+$K=*N;!W$9$k(B - $B;R%W%m%;%9$H$J$j$^$9!#(B) - $B%5!<%P$r:F5/F0$9$k:]$K!"$3$l$,LdBj$K$J$k$+$b$7$l$^$;$s(B - -- $B%5!<%P$O(B listen $B$9$k%]!<%H$K%P%$%s%I$G$-$J$$$+$b$7$l$^$;$s!#(B - $B:F5/F0$9$kA0$K!"@_Dj%U%!%$%k$N9=J8$r(B <code>-t</code> - $B%3%^%s%I%i%$%s0z?t(B - (<program>httpd</program> $B$r$4Mw2<$5$$(B) - $B$r;H$C$F8!>Z$9$k$3$H$,$G$-$^$9!#(B - $B@_Dj%U%!%$%k$N0UL#E*$JFbMF$r9=J8$HF1MM$K8!>Z$7$?$$>l9g$O!"(B - $BHs(B root $B%f!<%6$G(B <program>httpd</program> $B$r5/F0$7$h$&$H$9$l$P$o$+$j$^$9!#(B - $B$b$7%(%i!<$,$J$1$l$P!"%=%1%C%H$d%m%0$r3+$3$&$H$7$F(B - root $B$G$J$$$?$a(B - ($B$b$7$/$O<B9TCf$N(B <program>httpd</program> - $B$,4{$KI,MW$J%]!<%H$K%P%$%s%I$7$F$$$k$?$a(B) - $B$K<:GT$9$k$G$7$g$&!#(B - $B$3$l0J30$NM}M3$G5/F0$K<:GT$7$?$N$G$"$l$P!"(B - $B$=$l$O@_Dj%U%!%$%k$N%(%i!<$G!"(B - $B4K$d$+$J:F5/F0$r9T$&A0$K$=$N8m$j$r=$@5$7$J$1$l$P$J$j$^$;$s!#(B</note> + module="mpm_common">StartServers</directive> パラメータでの + 希望の数の両方を維持しようとしています。</p> + + <p><module>mod_status</module> を + 使用している場合は、<code>USR1</code> シグナルが送られた際に + サーバ統計がゼロに<strong>設定されない</strong>ことに + 注意してください。 + サーバが新しいリクエストに応答不能な時間を最小にするように + (リクエストは OS によってキューに追加されるので絶対に紛失はしません)、 + また同時に、希望のチューニングパラメータを守るように + コードは書かれています。 + このようにするために、世代をまたがった全子プロセスの追跡に使われている + <em>スコアボード</em>を維持しなければなりません。</p> + + <p>status モジュールは、緩やかな再起動以前から開始して + リクエストに応答し続けている子プロセスを特定するために、 + <code>G</code> を使うこともします。</p> + + <p>現在、<code>USR1</code> を使うログ移動スクリプトでは、 + 再起動前の子プロセスがログを書き終わったことを確証する方法が + ありません。古いログに対して何かする前に、 + <code>USR1</code> シグナルを送った後いくらか適当な時間待つことを + 提案します。例えば、帯域の狭い通信路のユーザのリクエストのほとんどが 10 + 分以下で完了しているということが分かっていれば、 + 古いログに何かする前に 15 分待つということです。</p> + + <note>再起動時に設定ファイルに誤りがあると、 + 親プロセスは再起動せずにエラーとともに終了します。 + 緩やかな再起動の場合は、親プロセスが終了した後でも子プロセスが + 実行されたまま放置されたりもします。 + (最後のリクエストを処理した後「緩やかに終了」する + 子プロセスとなります。) + サーバを再起動する際に、これが問題になるかもしれません + -- サーバは listen するポートにバインドできないかもしれません。 + 再起動する前に、設定ファイルの構文を <code>-t</code> + コマンドライン引数 + (<program>httpd</program> をご覧下さい) + を使って検証することができます。 + 設定ファイルの意味的な内容を構文と同様に検証したい場合は、 + 非 root ユーザで <program>httpd</program> を起動しようとすればわかります。 + もしエラーがなければ、ソケットやログを開こうとして + root でないため + (もしくは実行中の <program>httpd</program> + が既に必要なポートにバインドしているため) + に失敗するでしょう。 + これ以外の理由で起動に失敗したのであれば、 + それは設定ファイルのエラーで、 + 緩やかな再起動を行う前にその誤りを修正しなければなりません。</note> </section> -<section id="hup"><title>$B5^$J:F5/F0(B</title> +<section id="hup"><title>急な再起動</title> -<dl><dt>$B%7%0%J%k(B: HUP</dt> +<dl><dt>シグナル: HUP</dt> <dd><code>apachectl -k restart</code></dd> </dl> - <p><code>HUP</code> $B$"$k$$$O(B <code>restart</code> $B%7%0%J%k$r?F%W%m%;%9$KAw$k$H!"(B - <code>TERM</code> $B$HF1MM$K;R%W%m%;%9$r(B kill $B$7$^$9$,!"(B - $B?F%W%m%;%9$O=*N;$7$^$;$s!#(B - $B@_Dj%U%!%$%k$r:FFI9~$7$F!"%m%0%U%!%$%kA4$F$r3+$-D>$7$^$9!#(B - $B$=$N8e!"?7$7$$;R%W%m%;%9$r5/F0$7$F1~Ez$rB3$1$^$9!#(B</p> + <p><code>HUP</code> あるいは <code>restart</code> シグナルを親プロセスに送ると、 + <code>TERM</code> と同様に子プロセスを kill しますが、 + 親プロセスは終了しません。 + 設定ファイルを再読込して、ログファイル全てを開き直します。 + その後、新しい子プロセスを起動して応答を続けます。</p> <p><module>mod_status</module> - $B$r;H$C$F$$$k>l9g$O!"(B<code>HUP</code> $B$,Aw$i$l$?>l9g$K(B - $B%5!<%PE}7W$,%<%m$K@_Dj$5$l$k$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + を使っている場合は、<code>HUP</code> が送られた場合に + サーバ統計がゼロに設定されることに注意してください。</p> - <note>$B:F5/F0;~$K@_Dj%U%!%$%k$K8m$j$,$"$k$H!"(B - $B?F%W%m%;%9$O:F5/F0$;$:$K%(%i!<$H$H$b$K=*N;$7$^$9!#(B - $B$3$l$rHr$1$k$K$O<!$NJ}K!$r$4Mw2<$5$$!#(B</note> + <note>再起動時に設定ファイルに誤りがあると、 + 親プロセスは再起動せずにエラーとともに終了します。 + これを避けるには次の方法をご覧下さい。</note> </section> -<section id="race"><title>$BIUO?(B: $B%7%0%J%k$H6%9g>uBV(B</title> +<section id="race"><title>付録: シグナルと競合状態</title> - <p>Apache 1.2b9 $B0JA0$O!":F5/F0$dDd;_$N%7%0%J%k$r4^$`(B<em>$B6%9g>uBV(B</em> - ($B6%9g>uBV$r4JC1$K@bL@$9$k$H(B: $B%?%$%_%s$K%0$h$kLdBj$G!"(B - $B6q9g$N0-$$;~4VBS$K$A$g$&$I2?$+$,5/$3$k$HM=A[30$NF0:n$r$9$k(B - $B$h$&$J$3$H$r;X$7$^$9(B) $B$,$"$j$^$7$?!#(B - $B!V@5$7$$!W5!G=$r;}$C$F$$$k%"!<%-%F%/%A%c$G$O!"$G$-$k$@$1(B - $B$3$N$h$&$J$3$H$,5/$3$i$J$$$h$&$K$7$F$$$^$9!#(B - $B$7$+$7!"$"$k<o$N%"!<%-%F%/%A%c$G$O6%9g>uBV$OL$$@3N<B$K5/$3$j$($k(B - $B$H$$$&$3$H$KCm0U$7$F$/$@$5$$!#(B</p> + <p>Apache 1.2b9 以前は、再起動や停止のシグナルを含む<em>競合状態</em> + (競合状態を簡単に説明すると: タイミンにグよる問題で、 + 具合の悪い時間帯にちょうど何かが起こると予想外の動作をする + ようなことを指します) がありました。 + 「正しい」機能を持っているアーキテクチャでは、できるだけ + このようなことが起こらないようにしています。 + しかし、ある種のアーキテクチャでは競合状態は未だ確実に起こりえる + ということに注意してください。</p> - <p>$B%G%#%9%/>e$G(B + <p>ディスク上で <directive module="mpm_common">ScoreBoardFile</directive> - $B$r;HMQ$7$F$$$k%"!<%-%F%/%A%c$G$O!"(B - $B@x:_E*$K%9%3%"%\!<%I$,2u$l$k2DG=@-$,$"$j$^$9!#(B - $B%9%3%"%\!<%I$,2u$l$?>l9g$O!"(B - "bind: Address already in use" (<code>HUP</code> $B8e(B) $B$d(B - "long lost child came home!" (<code>USR1</code> $B8e(B) - $B$H$$$C$?7k2L$K$J$j$^$9!#(B - $BA0<T$OCWL?E*$J%(%i!<$G$9$,!"(B - $B8e<T$O%9%3%"%\!<%I%9%m%C%H$r<:$&$@$1$G$9!#(B - $B$G$9$+$i4K$d$+$J:F5/F0$O!"$?$^$K3N<B$J:F5/F0(B (HUP) - $B$bJ;MQ$7$F;H$C$?J}$,NI$$$G$7$g$&!#(B - $B$3$l$i$NLdBj$r9nI~$9$k$N$OHs>o$KFq$7$$$N$G$9$,!"(B - $B9,$$$J$3$H$KBgItJ,$N%"!<%-%F%/%A%c$G$O%9%3%"%\!<%I$N%U%!%$%k$OI,MW$"$j$^$;$s!#(B - $B$3$l$r;HMQ$9$k%"!<%-%F%/%A%c$O!"(B + を使用しているアーキテクチャでは、 + 潜在的にスコアボードが壊れる可能性があります。 + スコアボードが壊れた場合は、 + "bind: Address already in use" (<code>HUP</code> 後) や + "long lost child came home!" (<code>USR1</code> 後) + といった結果になります。 + 前者は致命的なエラーですが、 + 後者はスコアボードスロットを失うだけです。 + ですから緩やかな再起動は、たまに確実な再起動 (HUP) + も併用して使った方が良いでしょう。 + これらの問題を克服するのは非常に難しいのですが、 + 幸いなことに大部分のアーキテクチャではスコアボードのファイルは必要ありません。 + これを使用するアーキテクチャは、 <directive module="mpm_common">ScoreBoardFile</directive> - $B$r$4Mw2<$5$$!#(B</p> - - <p>$BA4$F$N%"!<%-%F%/%A%c$K$*$$$F!"8D!9$N;R%W%m%;%9$G(B - $B7QB3E*$J(B HTTP $B%3%M%/%7%g%s(B (KeepAlive) - $B$K4X$9$k>.$5$J6%9g>uBV$,5/$3$j$($^$9!#(B - $B%j%/%(%9%H9T$rFI$s$@8e!"$=$7$F%j%/%(%9%H%X%C%@$rFI$`A0$K(B - $B;R%W%m%;%9$O=*N;$9$k$+$bCN$l$^$;$s!#(B - $B$3$l$KBP$9$k=$@5$,$"$j$^$9$,(B 1.2 $B$G=$@5$9$k$K$OH/8+$,CY$9$.$^$7$?!#(B - $BM}O@E*$K$O!"$3$l$OLdBj$G$O$"$j$^$;$s!#(B - $B$J$<$J$i(B KeepAlive $B$N%/%i%$%"%s%H$O!"%M%C%H%o!<%/CY1d$d(B - $B%5!<%P$N%?%$%`%"%&%H$J$I$KHw$($F$$$J$1$l$P$J$i$J$$$+$i$G$9!#(B - $B<B:]$K$b2?$+1F6A$,$"$k$h$&$K$O8+$($^$;$s(B - -- $B%F%9%H%1!<%9$G%5!<%P$r(B 1 $BIC4V$K(B 20 $B2s:F5/F0$7$F$b(B - $B%/%i%$%"%s%H$O2u$l$?2hA|$d6u$N%I%-%e%a%s%H$r<u$1<h$k$3$H$J$/(B - $B@5>o$K1\Mw$G$-$F$$$^$9!#(B</p> + をご覧下さい。</p> + + <p>全てのアーキテクチャにおいて、個々の子プロセスで + 継続的な HTTP コネクション (KeepAlive) + に関する小さな競合状態が起こりえます。 + リクエスト行を読んだ後、そしてリクエストヘッダを読む前に + 子プロセスは終了するかも知れません。 + これに対する修正がありますが 1.2 で修正するには発見が遅すぎました。 + 理論的には、これは問題ではありません。 + なぜなら KeepAlive のクライアントは、ネットワーク遅延や + サーバのタイムアウトなどに備えていなければならないからです。 + 実際にも何か影響があるようには見えません + -- テストケースでサーバを 1 秒間に 20 回再起動しても + クライアントは壊れた画像や空のドキュメントを受け取ることなく + 正常に閲覧できています。</p> </section> </manualpage> diff --git a/docs/manual/style/lang/ja.xml b/docs/manual/style/lang/ja.xml index b7da8700e7..92fba6cda1 100644 --- a/docs/manual/style/lang/ja.xml +++ b/docs/manual/style/lang/ja.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE language SYSTEM "../lang.dtd"> <!-- English revision: 106753 --> @@ -39,37 +39,37 @@ <message id="nativename">Japanese</message> <!-- Used for the moduleindex --> - <message id="corefeatures">$B%3%"5!G=$H(B MPM</message> - <message id="othermodules">$BB>$N%b%8%e!<%k(B</message> - <message id="obsoletemodules">$B5l<0$N%b%8%e!<%k(B</message> + <message id="corefeatures">コア機能と MPM</message> + <message id="othermodules">他のモジュール</message> + <message id="obsoletemodules">旧式のモジュール</message> <!-- Used for the modulesynopsis and sitemap --> - <message id="obsoleteapachemodule">$B5l<0$N(B Apache Module</message> - <message id="apachemodule">Apache $B%b%8%e!<%k(B</message> - <message id="apachecore">Apache $B%3%"5!G=(B</message> - <message id="apachempmcommon">Apache MPM $B6&DL%G%#%l%/%F%#%V(B</message> + <message id="obsoleteapachemodule">旧式の Apache Module</message> + <message id="apachemodule">Apache モジュール</message> + <message id="apachecore">Apache コア機能</message> + <message id="apachempmcommon">Apache MPM 共通ディレクティブ</message> <message id="apachempm">Apache MPM</message> <!-- Used in description box for modulesynopsis --> - <message id="description">$B@bL@(B</message> - <message id="seealso">$B;2>H(B</message> - <message id="topics">$B%H%T%C%/(B</message> - <message id="status">$B%9%F!<%?%9(B</message> - <message id="moduleidentifier">$B%b%8%e!<%k<1JL;R(B</message> - <message id="sourcefile">$B%=!<%9%U%!%$%k(B</message> - <message id="compatibility">$B8_49@-(B</message> + <message id="description">説明</message> + <message id="seealso">参照</message> + <message id="topics">トピック</message> + <message id="status">ステータス</message> + <message id="moduleidentifier">モジュール識別子</message> + <message id="sourcefile">ソースファイル</message> + <message id="compatibility">互換性</message> <!-- Used in manualpage --> - <message id="relatedmodules">$B4XO"%b%8%e!<%k(B</message> - <message id="relateddirectives">$B4XO"%G%#%l%/%F%#%V(B</message> + <message id="relatedmodules">関連モジュール</message> + <message id="relateddirectives">関連ディレクティブ</message> <!-- Used in description box for directives --> - <message id="syntax">$B9=J8(B</message> - <message id="default">$B%G%U%)%k%H(B</message> - <message id="context">$B%3%s%F%-%9%H(B</message> - <message id="override">$B>e=q$-(B</message> - <message id="status">$B%9%F!<%?%9(B</message> - <message id="module">$B%b%8%e!<%k(B</message> + <message id="syntax">構文</message> + <message id="default">デフォルト</message> + <message id="context">コンテキスト</message> + <message id="override">上書き</message> + <message id="status">ステータス</message> + <message id="module">モジュール</message> <!-- Status descriptions --> <message id="base" letter="B">Base</message> @@ -80,50 +80,50 @@ <message id="external" letter="T">External</message> <!-- Used in directive context lists --> - <message id="serverconfig" letter="s">$B%5!<%P@_Dj%U%!%$%k(B</message> - <message id="virtualhost" letter="v">$B%P!<%A%c%k%[%9%H(B</message> - <message id="directory" letter="d">$B%G%#%l%/%H%j(B</message> + <message id="serverconfig" letter="s">サーバ設定ファイル</message> + <message id="virtualhost" letter="v">バーチャルホスト</message> + <message id="directory" letter="d">ディレクトリ</message> <message id="htaccess" letter="h">.htaccess</message> <!-- Used for directive lists --> - <message id="directives">$B%G%#%l%/%F%#%V(B</message> + <message id="directives">ディレクティブ</message> <!-- the optional attribute replace-space-with takes a string. if present, the space between <directive name> and 'Directive' in directivesynopsis headings will be replaced by the given string. (see de.xml for an example) --> - <message id="directive">$B%G%#%l%/%F%#%V(B</message> - <message id="nodirectives">$B$3$N%b%8%e!<%k$K%G%#%l%/%F%#%V$O$"$j$^$;$s!#(B</message> + <message id="directive">ディレクティブ</message> + <message id="nodirectives">このモジュールにディレクティブはありません。</message> <!-- Used in summaries --> - <message id="summary">$B35MW(B</message> + <message id="summary">概要</message> <!-- Used for translation notes --> - <message id="transnote">$BLuCm(B:</message> + <message id="transnote">訳注:</message> <!-- Used for glossary link titles --> - <message id="glossarylink">$BMQ8l=8$r;2>H(B</message> + <message id="glossarylink">用語集を参照</message> <!-- Used in headers and footers --> - <message id="apachetitle">- Apache HTTP $B%5!<%P(B</message> - <message id="apachehttpserver">Apache HTTP $B%5!<%P(B - $B%P!<%8%g%s(B &httpd.major;.&httpd.minor;</message> + <message id="apachetitle">- Apache HTTP サーバ</message> + <message id="apachehttpserver">Apache HTTP サーバ + バージョン &httpd.major;.&httpd.minor;</message> <message id="apachedocalt">[APACHE DOCUMENTATION]</message> <message id="search">Google Search</message> <!-- search button --> - <message id="index">$B:w0z(B</message> <!-- deprecated --> - <message id="home">$B%[!<%`(B</message> <!-- deprecated --> + <message id="index">索引</message> <!-- deprecated --> + <message id="home">ホーム</message> <!-- deprecated --> <!-- breadcrumb links --> <message id="apache">Apache</message> - <message id="http-server">HTTP $B%5!<%P(B</message> - <message id="documentation">$B%I%-%e%a%s%F!<%7%g%s(B</message> - <message id="version">$B%P!<%8%g%s(B + <message id="http-server">HTTP サーバ</message> + <message id="documentation">ドキュメンテーション</message> + <message id="version">バージョン &httpd.major;.&httpd.minor;</message> <!-- super menu --> - <message id="modules">$B%b%8%e!<%k(B</message> + <message id="modules">モジュール</message> <message id="faq">FAQ</message> - <message id="glossary">$BMQ8l(B</message> - <message id="sitemap">$B%5%$%H%^%C%W(B</message> + <message id="glossary">用語</message> + <message id="sitemap">サイトマップ</message> <!-- footer line --> <message id="before-license">Licensed under the</message> diff --git a/docs/manual/suexec.xml.ja b/docs/manual/suexec.xml.ja index 235207a70e..ebf7808026 100644 --- a/docs/manual/suexec.xml.ja +++ b/docs/manual/suexec.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp"?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 151408:655869 (outdated) --> @@ -22,574 +22,574 @@ <manualpage metafile="suexec.xml.meta"> - <title>suEXEC $B%5%]!<%H(B</title> + <title>suEXEC サポート</title> <summary> <p><strong>suEXEC</strong> - $B5!G=$K$h$j!"(BApache $B%f!<%6$O(B Web $B%5!<%P$r<B9T$7$F$$$k%f!<%6(B ID $B$H$O(B - $B0[$J$k%f!<%6(B ID $B$G(B <strong>CGI</strong> $B%W%m%0%i%`$d(B <strong>SSI</strong> - $B%W%m%0%i%`$r<B9T$9$k$3$H$,$G$-$^$9!#(BCGI $B%W%m%0%i%`$^$?$O(B SSI - $B%W%m%0%i%`$r<B9T$9$k>l9g!"DL>o$O(B web $B%5!<%P$HF1$8%f!<%6$G<B9T$5$l$^$9!#(B + 機能により、Apache ユーザは Web サーバを実行しているユーザ ID とは + 異なるユーザ ID で <strong>CGI</strong> プログラムや <strong>SSI</strong> + プログラムを実行することができます。CGI プログラムまたは SSI + プログラムを実行する場合、通常は web サーバと同じユーザで実行されます。 </p> - <p>$BE,@Z$K;HMQ$9$k$H!"$3$N5!G=$K$h$j%f!<%6$,8DJL$N(B CGI - $B$d(B SSI $B%W%m%0%i%`$r3+H/$7<B9T$9$k$3$H$G@8$8$k%;%-%e%j%F%#>e$N4m81$r!"(B - $B$+$J$j8:$i$9$3$H$,$G$-$^$9!#$7$+$7!"(BsuEXEC $B$N@_Dj$,ITE,@Z$@$H!"(B - $BB?$/$NLdBj$,@8$8!"$"$J$?$N%3%s%T%e!<%?$K?7$7$$%;%-%e%j%F%#%[!<%k$r(B - $B:n$C$F$7$^$&2DG=@-$,$"$j$^$9!#$"$J$?$,(B <em>setuid root</em> - $B$5$l$?%W%m%0%i%`$H!"$=$l$i$+$i@8$8$k%;%-%e%j%F%#>e$NLdBj$N4IM}$K(B - $B>\$7$/$J$$$h$&$J$i!"(BsuEXEC $B$N;HMQ$r8!F$$7$J$$$h$&$K6/$/?d>)$7$^$9!#(B + <p>適切に使用すると、この機能によりユーザが個別の CGI + や SSI プログラムを開発し実行することで生じるセキュリティ上の危険を、 + かなり減らすことができます。しかし、suEXEC の設定が不適切だと、 + 多くの問題が生じ、あなたのコンピュータに新しいセキュリティホールを + 作ってしまう可能性があります。あなたが <em>setuid root</em> + されたプログラムと、それらから生じるセキュリティ上の問題の管理に + 詳しくないようなら、suEXEC の使用を検討しないように強く推奨します。 </p> </summary> - <section id="before"><title>$B;O$a$kA0$K(B</title> + <section id="before"><title>始める前に</title> - <p>$B$3$NJ8=q$N@hF,$KHt$VA0$K!"(BApache - $B%0%k!<%W$H$3$NJ8=q$G$N2>Dj$rCN$C$F$*$/$Y$-$G$7$g$&!#(B + <p>この文書の先頭に飛ぶ前に、Apache + グループとこの文書での仮定を知っておくべきでしょう。 </p> - <p>$BBh(B 1 $B$K!"$"$J$?$,(B <strong>setuid</strong> $B$H(B - <strong>setgid</strong> $BA`:n$,2DG=$J(B UNIX - $BM3Mh$N%*%Z%l!<%F%#%s%0%7%9%F%`$r;H$C$F$$$k$3$H$rA[Dj$7$F$$$^$9!#(B - $B$3$l$O!"$9$Y$F$N%3%^%s%INc$K$"$F$O$^$j$^$9!#(B - $B$=$NB>$N%W%i%C%H%[!<%`$G$O!"$b$7(B suEXEC - $B$,%5%]!<%H$5$l$F$$$?$H$7$F$b@_Dj$O0[$J$k$+$b$7$l$^$;$s!#(B</p> - - <p>$BBh(B 2 $B$K!"$"$J$?$,;HMQCf$N%3%s%T%e!<%?$N(B - $B%;%-%e%j%F%#$K4X$9$k4pK\E*$J35G0$H!"$=$l$i$N4IM}$K$D$$$F>\$7$$$3$H$r(B - $BA[Dj$7$F$$$^$9!#$3$l$O!"(B<strong>setuid/setgid</strong> - $BA`:n!"$"$J$?$N%7%9%F%`>e$G$N$=$NA`:n$K$h$kMM!9$J8z2L!"(B - $B%;%-%e%j%F%#%l%Y%k$K$D$$$F$"$J$?$,M}2r$7$F$$$k$H$$$&$3$H$r4^$_$^$9!#(B + <p>第 1 に、あなたが <strong>setuid</strong> と + <strong>setgid</strong> 操作が可能な UNIX + 由来のオペレーティングシステムを使っていることを想定しています。 + これは、すべてのコマンド例にあてはまります。 + その他のプラットホームでは、もし suEXEC + がサポートされていたとしても設定は異なるかもしれません。</p> + + <p>第 2 に、あなたが使用中のコンピュータの + セキュリティに関する基本的な概念と、それらの管理について詳しいことを + 想定しています。これは、<strong>setuid/setgid</strong> + 操作、あなたのシステム上でのその操作による様々な効果、 + セキュリティレベルについてあなたが理解しているということを含みます。 </p> - <p>$BBh(B 3 $B$K!"(B<strong>$B2~B$$5$l$F$$$J$$(B</strong> suEXEC - $B%3!<%I$N;HMQ$rA[Dj$7$F$$$^$9!#(BsuEXEC $B$N%3!<%I$O!"(B - $BB?$/$N%Y!<%?%F%9%?$@$1$G$J$/!"3+H/<T$K$h$C$F$bCm0U?<$/@:::$5$l(B - $B%F%9%H$5$l$F$$$^$9!#$=$l$i$NCm0U$K$h$j!"4J7i$G?.Mj$G$-$k0BA4$J(B - $B%3!<%I$N4pHW$,J]>Z$5$l$^$9!#$3$N%3!<%I$r2~JQ$9$k$3$H$G!"(B - $BM=4|$5$l$J$$LdBj$d?7$7$$%;%-%e%j%F%#>e$N4m81$,@8$8$k$3$H$,$"$j$^$9!#(B - $B%;%-%e%j%F%#%W%m%0%i%_%s%0$N>\:Y$KDL$8$F$$$F!"(B - $B:#8e$N8!F$$N$?$a$K@.2L$r(B Apache - $B%0%k!<%W$H6&M-$7$h$&$H;W$&$N$G$J$1$l$P!"(BsuEXEC - $B%3!<%I$OJQ$($J$$$3$H$r(B <strong>$B6/$/(B</strong>$B?d>)$7$^$9!#(B</p> - - <p>$BBh(B 4 $B$K!"$3$l$,:G8e$G$9$,!"(BsuEXEC $B$r(B Apache - $B$N%G%U%)%k%H%$%s%9%H!<%k$K$O(B<strong>$B4^$a$J$$(B</strong>$B$3$H$,(B - Apache $B%0%k!<%W$G7hDj$5$l$F$$$^$9!#$3$l$O!"(BsuEXEC - $B$N@_Dj$K$O4IM}<T$N>\:Y$K$o$?$k?5=E$JCm0U$,I,MW$@$+$i$G$9!#(B - suEXEC $B$NMM!9$J@_Dj$K$D$$$F8!F$$,=*$o$l$P!"4IM}<T$O(B suEXEC - $B$rDL>o$N%$%s%9%H!<%kJ}K!$G%$%s%9%H!<%k$9$k$3$H$,$G$-$^$9!#(B - $B$3$l$i$N@_DjCM$O!"(BsuEXEC - $B5!G=$N;HMQCf$K%7%9%F%`%;%-%e%j%F%#$rE,@Z$KJ]$D$?$a$K!"(B - $B4IM}<T$K$h$C$F?5=E$K7hDj$5$l;XDj$5$l$k$3$H$,I,MW$G$9!#(B - $B$3$N>\:Y$J<j=g$K$h$j!"(BApache $B%0%k!<%W$O!"(BsuEXEC - $B$N%$%s%9%H!<%k$K$D$$$F!"Cm0U?<$/==J,$K8!F$$7$F$=$l$r;HMQ$9$k$3$H$r(B - $B7hDj$7$?>l9g$K8B$C$F$$$?$@$-$?$$$H9M$($F$$$^$9!#(B + <p>第 3 に、<strong>改造されていない</strong> suEXEC + コードの使用を想定しています。suEXEC のコードは、 + 多くのベータテスタだけでなく、開発者によっても注意深く精査され + テストされています。それらの注意により、簡潔で信頼できる安全な + コードの基盤が保証されます。このコードを改変することで、 + 予期されない問題や新しいセキュリティ上の危険が生じることがあります。 + セキュリティプログラミングの詳細に通じていて、 + 今後の検討のために成果を Apache + グループと共有しようと思うのでなければ、suEXEC + コードは変えないことを <strong>強く</strong>推奨します。</p> + + <p>第 4 に、これが最後ですが、suEXEC を Apache + のデフォルトインストールには<strong>含めない</strong>ことが + Apache グループで決定されています。これは、suEXEC + の設定には管理者の詳細にわたる慎重な注意が必要だからです。 + suEXEC の様々な設定について検討が終われば、管理者は suEXEC + を通常のインストール方法でインストールすることができます。 + これらの設定値は、suEXEC + 機能の使用中にシステムセキュリティを適切に保つために、 + 管理者によって慎重に決定され指定されることが必要です。 + この詳細な手順により、Apache グループは、suEXEC + のインストールについて、注意深く十分に検討してそれを使用することを + 決定した場合に限っていただきたいと考えています。 </p> - <p>$B$=$l$G$b?J$_$^$9$+(B? $B$h$m$7$$!#$G$O!"@h$X?J$_$^$7$g$&(B!</p> + <p>それでも進みますか? よろしい。では、先へ進みましょう!</p> </section> - <section id="model"><title>suEXEC $B%;%-%e%j%F%#%b%G%k(B</title> - - <p>suEXEC $B$N@_Dj$H%$%s%9%H!<%k$r;O$a$kA0$K!"(B - $B$^$:<BAu$7$h$&$H$7$F$$$k%;%-%e%j%F%#%b%G%k$K$D$$$FO@$8$F$*$-$^$9!#(B - $B$=$l$K$O!"(BsuEXEC $B$NFbIt$G9T$J$o$l$F$$$k$3$H!"(B - $B%7%9%F%`$N%;%-%e%j%F%#$rJ]>Z$9$k$?$a$K7Y9p$5$l$k$3$H$r(B - $B$h$/M}2r$7$F$*$$$?J}$,$h$$$G$7$g$&!#(B</p> - - <p><strong>suEXEC</strong> $B$O!"(BApache web - $B%5!<%P$+$i8F$S=P$5$l$k(B setuid $B$5$l$?(B "wrapper" - $B%W%m%0%i%`$,4pK\$H$J$C$F$$$^$9!#@_7W$7$?(B CGI$B!"$^$?$O(B SSI - $B%W%m%0%i%`$X$N(B HTTP $B%j%/%(%9%H$,$"$k$H!"$3$N(B wrapper - $B$,8F$S=P$5$l$^$9!#$3$N$h$&$J%j%/%(%9%H$,$"$k$H!"(BApache - $B$O$=$N%W%m%0%i%`$,<B9T$5$l$k:]$N%W%m%0%i%`L>$H%f!<%6(B ID $B$H%0%k!<%W(B - ID $B$r;XDj$7$F(B suEXEC wrapper $B$r<B9T$7$^$9!#(B + <section id="model"><title>suEXEC セキュリティモデル</title> + + <p>suEXEC の設定とインストールを始める前に、 + まず実装しようとしているセキュリティモデルについて論じておきます。 + それには、suEXEC の内部で行なわれていること、 + システムのセキュリティを保証するために警告されることを + よく理解しておいた方がよいでしょう。</p> + + <p><strong>suEXEC</strong> は、Apache web + サーバから呼び出される setuid された "wrapper" + プログラムが基本となっています。設計した CGI、または SSI + プログラムへの HTTP リクエストがあると、この wrapper + が呼び出されます。このようなリクエストがあると、Apache + はそのプログラムが実行される際のプログラム名とユーザ ID とグループ + ID を指定して suEXEC wrapper を実行します。 </p> - <p>$B$=$l$+$i!"(Bwrapper $B$O@.8y$^$?$O<:GT$r7hDj$9$k$?$a(B - $B0J2<$N=hM}$r9T$J$$$^$9!#$3$l$i$N>uBV$N$&$A0l$D$G$b<:GT$7$?>l9g!"(B - $B%W%m%0%i%`$O<:GT$r%m%0$K5-O?$7$F%(%i!<$G=*N;$7$^$9!#(B - $B$=$&$G$J$1$l$P!"8e$N=hM}$,B3$1$i$l$^$9!#(B</p> + <p>それから、wrapper は成功または失敗を決定するため + 以下の処理を行ないます。これらの状態のうち一つでも失敗した場合、 + プログラムは失敗をログに記録してエラーで終了します。 + そうでなければ、後の処理が続けられます。</p> <ol> <li> <strong>wrapper - $B$r<B9T$7$F$$$k%f!<%6$O$3$N%7%9%F%`$N@5Ev$J%f!<%6$+(B?</strong> + を実行しているユーザはこのシステムの正当なユーザか?</strong> <p class="indent"> - $B$3$l$O!"(Bwrapper $B$r<B9T$7$F$$$k%f!<%6$,(B - $BK\Ev$K%7%9%F%`$NMxMQ<T$G$"$k$3$H$rJ]>Z$9$k$?$a$G$9!#(B + これは、wrapper を実行しているユーザが + 本当にシステムの利用者であることを保証するためです。 </p> </li> <li> - <strong>wrapper $B$,E,@Z$J?t$N0z?t$G8F$S=P$5$l$?$+(B?</strong> + <strong>wrapper が適切な数の引数で呼び出されたか?</strong> <p class="indent"> - wrapper $B$OE,@Z$J?t$N0z?t$,M?$($i$l$?>l9g$K$N$_<B9T$5$l$^$9!#(B - $BE,@Z$J0z?t$N%U%)!<%^%C%H$O(B Apache Web $B%5!<%P$K2r<a$5$l$^$9!#(B - $BE,@Z$J?t$N0z?t$r<u$1<h$i$J$1$l$P!"967b$r$5$l$?$+(B - $B$"$J$?$N(B Apache $B%P%$%J%j$N(B suEXEC $B$NItJ,$,(B - $B$I$3$+$*$+$7$$2DG=@-$,$"$j$^$9!#(B + wrapper は適切な数の引数が与えられた場合にのみ実行されます。 + 適切な引数のフォーマットは Apache Web サーバに解釈されます。 + 適切な数の引数を受け取らなければ、攻撃をされたか + あなたの Apache バイナリの suEXEC の部分が + どこかおかしい可能性があります。 </p> </li> <li> - <strong>$B$3$N@5Ev$J%f!<%6$O(B wrapper - $B$N<B9T$r5v2D$5$l$F$$$k$+(B?</strong> + <strong>この正当なユーザは wrapper + の実行を許可されているか?</strong> <p class="indent"> - $B$3$N%f!<%6$O(B wrapper $B<B9T$r5v2D$5$l$?%f!<%6$G$9$+(B? - $B$?$@0l?M$N%f!<%6(B (Apache $B%f!<%6(B) $B$@$1$,!"(B - $B$3$N%W%m%0%i%`$N<B9T$r5v2D$5$l$^$9!#(B + このユーザは wrapper 実行を許可されたユーザですか? + ただ一人のユーザ (Apache ユーザ) だけが、 + このプログラムの実行を許可されます。 </p> </li> <li> - <strong>$BBP>]$N(B CGI, SSI $B%W%m%0%i%`$,0BA4$G$J$$3,AX$N;2>H$r$7$F$$$k$+(B? + <strong>対象の CGI, SSI プログラムが安全でない階層の参照をしているか? </strong> <p class="indent"> - $BBP>]$N(B CGI, SSI $B%W%m%0%i%`$,(B '/' $B$+$i;O$^$k!"$^$?$O(B - '..' $B$K$h$k;2>H$r9T$J$C$F$$$^$9$+(B? $B$3$l$i$O5v2D$5$l$^$;$s!#(B - $BBP>]$N%W%m%0%i%`$O(B suEXEC $B$N%I%-%e%a%s%H%k!<%H(B - ($B2<5-$N(B <code>--with-suexec-docroot=<em>DIR</em></code> $B$r;2>H(B) - $BFb$KB8:_$7$J$1$l$P$J$j$^$;$s!#(B + 対象の CGI, SSI プログラムが '/' から始まる、または + '..' による参照を行なっていますか? これらは許可されません。 + 対象のプログラムは suEXEC のドキュメントルート + (下記の <code>--with-suexec-docroot=<em>DIR</em></code> を参照) + 内に存在しなければなりません。 </p> </li> <li> - <strong>$BBP>]$H$J$k%f!<%6L>$O@5Ev$J$b$N$+(B?</strong> + <strong>対象となるユーザ名は正当なものか?</strong> <p class="indent"> - $BBP>]$H$J$k%f!<%6L>$OB8:_$7$F$$$^$9$+(B? + 対象となるユーザ名は存在していますか? </p> </li> <li> - <strong>$BBP>]$H$J$k%0%k!<%WL>$O@5Ev$J$b$N$+(B?</strong> + <strong>対象となるグループ名は正当なものか?</strong> <p class="indent"> - $BBP>]$H$J$k%0%k!<%WL>$OB8:_$7$F$$$^$9$+(B? + 対象となるグループ名は存在していますか? </p> </li> <li> - <strong>$BL\E*$N%f!<%6$O%9!<%Q!<%f!<%6$G$O(B<em>$B$J$$(B</em>$B$+(B? + <strong>目的のユーザはスーパーユーザでは<em>ない</em>か? </strong> <p class="indent"> - $B:#$N$H$3$m!"(BsuEXEC $B$O(B <code><em>root</em></code> $B$K$h$k(B CGI/SSI - $B%W%m%0%i%`$N<B9T$r5v2D$7$F$$$^$;$s!#(B + 今のところ、suEXEC は <code><em>root</em></code> による CGI/SSI + プログラムの実行を許可していません。 </p> </li> <li> - <strong>$BBP>]$H$J$k%f!<%6(B ID $B$O!":G>.$N(B ID - $BHV9f$h$j$b(B<em>$BBg$-$$(B</em>$B$+(B? </strong> + <strong>対象となるユーザ ID は、最小の ID + 番号よりも<em>大きい</em>か? </strong> <p class="indent"> - $B:G>.%f!<%6(B ID $BHV9f$O@_Dj;~$K;XDj$5$l$^$9!#$3$l$O!"(B - CGI/SSI $B%W%m%0%i%`<B9T$r5v2D$5$l$k%f!<%6(B ID - $B$N$H$j$&$k:G>.CM$G$9!#$3$l$O(B - "system" $BMQ$N%"%+%&%s%H$rJD$a=P$9$N$KM-8z$G$9!#(B + 最小ユーザ ID 番号は設定時に指定されます。これは、 + CGI/SSI プログラム実行を許可されるユーザ ID + のとりうる最小値です。これは + "system" 用のアカウントを閉め出すのに有効です。 </p> </li> <li> - <strong>$BBP>]$H$J$k%0%k!<%W$O%9!<%Q!<%f!<%6$N%0%k!<%W$G$O(B - <em>$B$J$$(B</em>$B$+(B?</strong> + <strong>対象となるグループはスーパーユーザのグループでは + <em>ない</em>か?</strong> <p class="indent"> - $B:#$N$H$3$m!"(BsuEXEC $B$O(B 'root' $B%0%k!<%W$K$h$k(B CGI/SSI - $B%W%m%0%i%`$N<B9T$r5v2D$7$F$$$^$;$s!#(B + 今のところ、suEXEC は 'root' グループによる CGI/SSI + プログラムの実行を許可していません。 </p> </li> <li> - <strong>$BBP>]$H$J$k%0%k!<%W(B ID $B$O:G>.$N(B ID - $BHV9f$h$j$b(B<em>$BBg$-$$(B</em>$B$+(B?</strong> + <strong>対象となるグループ ID は最小の ID + 番号よりも<em>大きい</em>か?</strong> <p class="indent"> - $B:G>.%0%k!<%W(B ID $BHV9f$O@_Dj;~$K;XDj$5$l$^$9!#$3$l$O!"(B - CGI/SSI $B%W%m%0%i%`<B9T$r5v2D$5$l$k%0%k!<%W(B - ID $B$N$H$j$&$k:G>.CM$G$9!#(B - $B$3$l$O(B "system" $BMQ$N%0%k!<%W$rJD$a=P$9$N$KM-8z$G$9!#(B + 最小グループ ID 番号は設定時に指定されます。これは、 + CGI/SSI プログラム実行を許可されるグループ + ID のとりうる最小値です。 + これは "system" 用のグループを閉め出すのに有効です。 </p> </li> <li> - <strong>wrapper $B$,@5>o$KBP>]$H$J$k%f!<%6$H%0%k!<%W$K$J$l$k$+(B? + <strong>wrapper が正常に対象となるユーザとグループになれるか? </strong> <p class="indent"> - $B$3$3$G!"(Bsetuid $B$H(B setgid - $B$N5/F0$K$h$j%W%m%0%i%`$OBP>]$H$J$k%f!<%6$H%0%k!<%W$K$J$j$^$9!#(B - $B%0%k!<%W%"%/%;%9%j%9%H$O!"(B - $B%f!<%6$,B0$7$F$$$k$9$Y$F$N%0%k!<%W$G=i4|2=$5$l$^$9!#(B + ここで、setuid と setgid + の起動によりプログラムは対象となるユーザとグループになります。 + グループアクセスリストは、 + ユーザが属しているすべてのグループで初期化されます。 </p> </li> <li> - <strong>CGI/SSI $B%W%m%0%i%`$,CV$+$l$F$$$k%G%#%l%/%H%j$K0\F0(B - (change directory) $B$G$-$k$+(B?</strong> + <strong>CGI/SSI プログラムが置かれているディレクトリに移動 + (change directory) できるか?</strong> <p class="indent"> - $B%G%#%l%/%H%j$,B8:_$7$J$$$J$i!"$=$N%U%!%$%k$bB8:_$7$J$$$+$b$7$l$^$;$s!#(B - $B%G%#%l%/%H%j$K0\F0$G$-$J$$$N$G$"$l$P!"$*$=$i$/B8:_$b$7$J$$$G$7$g$&!#(B + ディレクトリが存在しないなら、そのファイルも存在しないかもしれません。 + ディレクトリに移動できないのであれば、おそらく存在もしないでしょう。 </p> </li> <li> - <strong>$B%G%#%l%/%H%j$,(B Apache $B$N%I%-%e%a%s%H%D%j!<Fb$K$"$k$+(B? + <strong>ディレクトリが Apache のドキュメントツリー内にあるか? </strong> <p class="indent"> - $B%j%/%(%9%H$,%5!<%PFb$N$b$N$G$"$l$P!"(B - $BMW5a$5$l$?%G%#%l%/%H%j$,(B suEXEC $B$N%I%-%e%a%s%H%k!<%HG[2<$K$"$j$^$9$+(B? - $B%j%/%(%9%H$,(B UserDir $B$N$b$N$G$"$l$P!"MW5a$5$l$?%G%#%l%/%H%j$,(B suEXEC - $B$N%f!<%6$N%I%-%e%a%s%H%k!<%HG[2<$K$"$j$^$9$+(B? - (<a href="#install">suEXEC $B@_Dj%*%W%7%g%s(B</a> $B;2>H(B) + リクエストがサーバ内のものであれば、 + 要求されたディレクトリが suEXEC のドキュメントルート配下にありますか? + リクエストが UserDir のものであれば、要求されたディレクトリが suEXEC + のユーザのドキュメントルート配下にありますか? + (<a href="#install">suEXEC 設定オプション</a> 参照) </p> </li> <li> - <strong>$B%G%#%l%/%H%j$rB>$N%f!<%6$,=q$-9~$a$k$h$&$K$J$C$F(B - <em>$B$$$J$$(B</em>$B$+(B?</strong> + <strong>ディレクトリを他のユーザが書き込めるようになって + <em>いない</em>か?</strong> <p class="indent"> - $B%G%#%l%/%H%j$rB>%f!<%6$K3+J|$7$J$$$h$&$K$7$^$9!#(B - $B=jM-%f!<%6$@$1$,$3$N%G%#%l%/%H%j$NFbMF$r2~JQ$G$-$k$h$&$K$7$^$9!#(B + ディレクトリを他ユーザに開放しないようにします。 + 所有ユーザだけがこのディレクトリの内容を改変できるようにします。 </p> </li> <li> - <strong>$BBP>]$H$J$k(B CGI/SSI $B%W%m%0%i%`$OB8:_$9$k$+(B?</strong> + <strong>対象となる CGI/SSI プログラムは存在するか?</strong> <p class="indent"> - $BB8:_$7$J$1$l$P<B9T$G$-$^$;$s!#(B + 存在しなければ実行できません。 </p> </li> <li> - <strong>$BBP>]$H$J$k(B CGI/SSI $B%W%m%0%i%`%U%!%$%k$,B>%"%+%&%s%H$+$i(B - $B=q$-9~$a$k$h$&$K$J$C$F(B<em>$B$$$J$$(B</em>$B$+(B?</strong> + <strong>対象となる CGI/SSI プログラムファイルが他アカウントから + 書き込めるようになって<em>いない</em>か?</strong> <p class="indent"> - $B=jM-<T0J30$K$O(B CGI/SSI $B%W%m%0%i%`$rJQ99$9$k8"8B$OM?$($i$l$^$;$s!#(B + 所有者以外には CGI/SSI プログラムを変更する権限は与えられません。 </p> </li> <li> - <strong>$BBP>]$H$J$k(B CGI/SSI $B%W%m%0%i%`$,(B setuid $B$^$?$O(B setgid - $B$5$l$F(B<em>$B$$$J$$(B</em>$B$+(B?</strong> + <strong>対象となる CGI/SSI プログラムが setuid または setgid + されて<em>いない</em>か?</strong> <p class="indent"> - UID/GID $B$r:FEYJQ99$7$F$N%W%m%0%i%`<B9T$O$7$^$;$s(B + UID/GID を再度変更してのプログラム実行はしません </p> </li> <li> - <strong>$BBP>]$H$J$k%f!<%6(B/$B%0%k!<%W$,%W%m%0%i%`$N(B - $B%f!<%6(B/$B%0%k!<%W$HF1$8$+(B?</strong> + <strong>対象となるユーザ/グループがプログラムの + ユーザ/グループと同じか?</strong> <p class="indent"> - $B%f!<%6$,$=$N%U%!%$%k$N=jM-<T$G$9$+(B? + ユーザがそのファイルの所有者ですか? </p> </li> <li> - <strong>$B0BA4$JF0:n$rJ]>Z$9$k$?$a$N4D6-JQ?t%/%j%"$,2DG=$+(B? + <strong>安全な動作を保証するための環境変数クリアが可能か? </strong> <p class="indent"> - suEXEC $B$O!"0BA4$J4D6-JQ?t$N%j%9%H(B - ($B$3$l$i$O@_Dj;~$K:n@.$5$l$^$9(B) $BFb$NJQ?t$H$7$FEO$5$l$k0BA4$J(B - PATH $BJQ?t(B ($B@_Dj;~$K;XDj$5$l$^$9(B) $B$r@_Dj$9$k$3$H$G!"(B - $B%W%m%;%9$N4D6-JQ?t$r%/%j%"$7$^$9!#(B + suEXEC は、安全な環境変数のリスト + (これらは設定時に作成されます) 内の変数として渡される安全な + PATH 変数 (設定時に指定されます) を設定することで、 + プロセスの環境変数をクリアします。 </p> </li> <li> - <strong>$BBP>]$H$J$k(B CGI/SSI $B%W%m%0%i%`$r(B exec $B$7$F<B9T$G$-$k$+(B?</strong> + <strong>対象となる CGI/SSI プログラムを exec して実行できるか?</strong> <p class="indent"> - $B$3$3$G(B suEXEC $B$,=*N;$7!"BP>]$H$J$k%W%m%0%i%`$,3+;O$5$l$^$9!#(B + ここで suEXEC が終了し、対象となるプログラムが開始されます。 </p> </li> </ol> - <p>$B$3$3$^$G$,(B suEXEC $B$N(B wrapper - $B$K$*$1$k%;%-%e%j%F%#%b%G%k$NI8=`E*$JF0:n$G$9!#$b$&>/$787=E$K(B - CGI/SSI $B@_7W$K$D$$$F$N?7$7$$@)8B$d5,Dj$r<h$jF~$l$k$3$H$b$G$-$^$9$,!"(B - suEXEC $B$O%;%-%e%j%F%#$KCm0U$7$F?5=E$K>/$7$:$D3+H/$5$l$F$-$^$7$?!#(B + <p>ここまでが suEXEC の wrapper + におけるセキュリティモデルの標準的な動作です。もう少し厳重に + CGI/SSI 設計についての新しい制限や規定を取り入れることもできますが、 + suEXEC はセキュリティに注意して慎重に少しずつ開発されてきました。 </p> - <p>$B$3$N%;%-%e%j%F%#%b%G%k$rMQ$$$F(B - $B%5!<%P@_Dj;~$K$I$N$h$&$K5v$9$3$H$r@)8B$9$k$+!"$^$?!"(BsuEXEC - $B$rE,@Z$K@_Dj$9$k$H$I$N$h$&$J%;%-%e%j%F%#>e$N4m81$rHr$1$i$l$k$+$K(B - $B4X$9$k$h$j>\$7$$>pJs$K$D$$$F$O!"(B<a href="#jabberwock">"$B$H$+$2$KCm0U(B" - (Beware the Jabberwock)</a> $B$N>O$r;2>H$7$F$/$@$5$$!#(B + <p>このセキュリティモデルを用いて + サーバ設定時にどのように許すことを制限するか、また、suEXEC + を適切に設定するとどのようなセキュリティ上の危険を避けられるかに + 関するより詳しい情報については、<a href="#jabberwock">"とかげに注意" + (Beware the Jabberwock)</a> の章を参照してください。 </p> </section> <section id="install"><title>suEXEC - $B$N@_Dj$H%$%s%9%H!<%k(B</title> + の設定とインストール</title> - <p>$B$3$3$+$i3Z$7$/$J$j$^$9!#(B</p> + <p>ここから楽しくなります。</p> <p><strong>suEXEC - $B@_Dj%*%W%7%g%s(B</strong><br /> + 設定オプション</strong><br /> </p> <dl> <dt><code>--enable-suexec</code></dt> - <dd>$B$3$N%*%W%7%g%s$O!"%G%U%)%k%H$G$O%$%s%9%H!<%k$5$l$:!"(B - $BM-8z$K$O$J$i$J$$(B suEXEC $B5!G=$rM-8z$K$7$^$9!#(B - suEXEC $B$r;H$&$h$&$K(B APACI $B$KMW5a$9$k$K$O!"(B<code>--enable-suexec</code> - $B%*%W%7%g%s$K$"$o$;$F>/$J$/$H$b0l$D$O(B <code>--with-suexec-xxxxx</code> - $B%*%W%7%g%s$,;XDj$5$l$J$1$l$P$J$j$^$;$s!#(B</dd> + <dd>このオプションは、デフォルトではインストールされず、 + 有効にはならない suEXEC 機能を有効にします。 + suEXEC を使うように APACI に要求するには、<code>--enable-suexec</code> + オプションにあわせて少なくとも一つは <code>--with-suexec-xxxxx</code> + オプションが指定されなければなりません。</dd> <dt><code>--with-suexec-bin=<em>PATH</em></code></dt> - <dd>$B%;%-%e%j%F%#>e$NM}M3$K$h$j!"(B<code>suexec</code> $B%P%$%J%j$N%Q%9$O%5!<%P$K(B - $B%O!<%I%3!<%I$5$l$F$$$kI,MW$,$"$j$^$9!#%G%U%)%k%H$N%Q%9$r(B - $BJQ$($?$$$H$-$O$3$N%*%W%7%g%s$r;H$C$F$/$@$5$$!#(B<em>$BNc$($P(B</em>$B!"(B - <code>--with-suexec-bin=/usr/sbin/suexec</code> $B$N$h$&$K!#(B</dd> + <dd>セキュリティ上の理由により、<code>suexec</code> バイナリのパスはサーバに + ハードコードされている必要があります。デフォルトのパスを + 変えたいときはこのオプションを使ってください。<em>例えば</em>、 + <code>--with-suexec-bin=/usr/sbin/suexec</code> のように。</dd> <dt><code>--with-suexec-caller=<em>UID</em></code></dt> - <dd>Apache $B$rDL>oF0:n$5$;$k(B<a - href="mod/mpm_common.html#user">$B%f!<%6L>(B</a>$B$r;XDj$7$^$9!#(B - $B$3$N%f!<%6$@$1$,(B suexec $B$N<B9T$r5v2D$5$l$?%f!<%6$K$J$j$^$9!#(B</dd> + <dd>Apache を通常動作させる<a + href="mod/mpm_common.html#user">ユーザ名</a>を指定します。 + このユーザだけが suexec の実行を許可されたユーザになります。</dd> <dt><code>--with-suexec-userdir=<em>DIR</em></code></dt> - <dd>suEXEC $B$,%"%/%;%9$r5v$5$l$k%f!<%6%[!<%`%G%#%l%/%H%jG[2<$N(B - $B%5%V%G%#%l%/%H%j$r;XDj$7$^$9!#(B - $B$3$N%G%#%l%/%H%j0J2<$NA4<B9T%U%!%$%k$O!"(B"$B0BA4$J(B"$B%W%m%0%i%`$K$J$k$h$&!"(B - suEXEC $B$,$=$N%f!<%6$H$7$F<B9T$G$-$k$h$&$K$7$^$9!#(B - "$BC1=c$J(B" UserDir $B%G%#%l%/%F%#%V$r;H$C$F$$$k>l9g(B - ($B$9$J$o$A(B "*" $B$r4^$^$J$$$b$N(B)$B!"$3$l$HF1$8CM$r@_Dj$9$Y$-$G$9!#(B - Userdir $B%G%#%l%/%F%#%V$,$=$N%f!<%6$N%Q%9%o!<%I%U%!%$%kFb$N(B - $B%[!<%`%G%#%l%/%H%j$HF1$8>l=j$r;X$7$F$$$J$1$l$P!"(B - suEXEC $B$OE,@Z$KF0:n$7$^$;$s!#%G%U%)%k%H$O(B "public_html" $B$G$9!#(B + <dd>suEXEC がアクセスを許されるユーザホームディレクトリ配下の + サブディレクトリを指定します。 + このディレクトリ以下の全実行ファイルは、"安全な"プログラムになるよう、 + suEXEC がそのユーザとして実行できるようにします。 + "単純な" UserDir ディレクティブを使っている場合 + (すなわち "*" を含まないもの)、これと同じ値を設定すべきです。 + Userdir ディレクティブがそのユーザのパスワードファイル内の + ホームディレクトリと同じ場所を指していなければ、 + suEXEC は適切に動作しません。デフォルトは "public_html" です。 <br /> - $B3F(B UserDir $B$,0[$J$C$?2>A[%[%9%H$r@_Dj$7$F$$$k>l9g!"(B - $B$=$l$i$rA4$F0l$D$N?F%G%#%l%/%H%j$K4^$a$F!"(B - $B$=$N?F%G%#%l%/%H%j$NL>A0$r$3$3$G;XDj$9$kI,MW$,$"$j$^$9!#(B - <strong>$B$3$N$h$&$K;XDj$5$l$J$1$l$P(B "~userdir" cgi - $B$X$N%j%/%(%9%H$,F0:n$7$^$;$s!#(B</strong></dd> + 各 UserDir が異なった仮想ホストを設定している場合、 + それらを全て一つの親ディレクトリに含めて、 + その親ディレクトリの名前をここで指定する必要があります。 + <strong>このように指定されなければ "~userdir" cgi + へのリクエストが動作しません。</strong></dd> <dt><code>--with-suexec-docroot=<em>DIR</em></code></dt> - <dd>Apache $B$N%I%-%e%a%s%H%k!<%H$r@_Dj$7$^$9!#$3$l$,(B suEXEC - $B$NF0:n$G;HMQ$9$kM#0l$N%G%#%l%/%H%j3,AX$K$J$j$^$9(B (UserDir - $B$N;XDj$OJL(B)$B!#%G%U%)%k%H$G$O(B <code>--datedir</code> $B$K(B "/htdocs" - $B$H$$$&%5%U%#%C%/%9$r$D$1$?$b$N$G$9!#(B - "<code>--datadir=/home/apache</code>" $B$H$7$F@_Dj$9$k$H!"(B - suEXEC wrapper $B$K$H$C$F(B "/home/apache/htdocs" - $B$,%I%-%e%a%s%H%k!<%H$H$7$F;H$o$l$^$9!#(B</dd> + <dd>Apache のドキュメントルートを設定します。これが suEXEC + の動作で使用する唯一のディレクトリ階層になります (UserDir + の指定は別)。デフォルトでは <code>--datedir</code> に "/htdocs" + というサフィックスをつけたものです。 + "<code>--datadir=/home/apache</code>" として設定すると、 + suEXEC wrapper にとって "/home/apache/htdocs" + がドキュメントルートとして使われます。</dd> <dt><code>--with-suexec-uidmin=<em>UID</em></code></dt> - <dd>suEXEC $B$NBP>]%f!<%6$H$7$F5v$5$l$k(B UID $B$N:G>.CM$r;XDj$7$^$9!#(B - $BBgDq$N%7%9%F%`$G$O(B 500 $B$+(B 100 $B$,0lHLE*$G$9!#(B - $B%G%U%)%k%HCM$O(B 100 $B$G$9!#(B</dd> + <dd>suEXEC の対象ユーザとして許される UID の最小値を指定します。 + 大抵のシステムでは 500 か 100 が一般的です。 + デフォルト値は 100 です。</dd> <dt><code>--with-suexec-gidmin=<em>GID</em></code></dt> - <dd>suEXEC $B$NBP>]%0%k!<%W$H$7$F5v$5$l$k(B GID - $B$N:G>.CM$r;XDj$7$^$9!#BgDq$N%7%9%F%`$G$O(B 100 $B$,0lHLE*$J$N$G!"(B - $B%G%U%)%k%HCM$H$7$F$b(B 100 $B$,;H$o$l$F$$$^$9!#(B</dd> + <dd>suEXEC の対象グループとして許される GID + の最小値を指定します。大抵のシステムでは 100 が一般的なので、 + デフォルト値としても 100 が使われています。</dd> <dt><code>--with-suexec-logfile=<em>FILE</em></code></dt> - <dd>suEXEC $B$N=hM}$H%(%i!<$,5-O?$5$l$k%U%!%$%kL>$r;XDj$7$^$9!#(B - ($B4F::$d%G%P%C%0L\E*$KM-MQ(B) - $B%G%U%)%k%H$G$O%m%0%U%!%$%k$O(B "suexec_log" $B$H$$$&L>A0$G!"(B - $BI8=`$N%m%0%U%!%$%k%G%#%l%/%H%j(B (<code>--logfiledir</code>) $B$KCV$+$l$^$9!#(B + <dd>suEXEC の処理とエラーが記録されるファイル名を指定します。 + (監査やデバッグ目的に有用) + デフォルトではログファイルは "suexec_log" という名前で、 + 標準のログファイルディレクトリ (<code>--logfiledir</code>) に置かれます。 </dd> <dt><code>--with-suexec-safepath=<em>PATH</em></code></dt> - <dd>CGI $B<B9T%U%!%$%k$KEO$5$l$k0BA4$J(B PATH $B4D6-JQ?t$G$9!#(B - $B%G%U%)%k%HCM$O(B "/usr/local/bin:/usr/bin:/bin" $B$G$9!#(B + <dd>CGI 実行ファイルに渡される安全な PATH 環境変数です。 + デフォルト値は "/usr/local/bin:/usr/bin:/bin" です。 </dd> </dl> <p><strong>suEXEC wrapper - $B$N%3%s%Q%$%k$H%$%s%9%H!<%k(B</strong><br /> - <code>--enable-suexec</code> $B%*%W%7%g%s$G(B suEXEC $B5!G=$rM-8z$K$9$k$H!"(B - "make" $B%3%^%s%I$r<B9T$7$?;~$K(B <code>suexec</code> $B$N%P%$%J%j(B (Apache $B<+BN$b(B) - $B$,<+F0E*$K:n@.$5$l$^$9!#(B + のコンパイルとインストール</strong><br /> + <code>--enable-suexec</code> オプションで suEXEC 機能を有効にすると、 + "make" コマンドを実行した時に <code>suexec</code> のバイナリ (Apache 自体も) + が自動的に作成されます。 <br /> - $B$9$Y$F$N9=@.MWAG$,:n@.$5$l$k$H!"$=$l$i$N%$%s%9%H!<%k$K$O(B - <code>make install</code> $B%3%^%s%I$,<B9T$G$-$^$9!#%P%$%J%j%$%a!<%8$N(B <code>suexec</code> - $B$O(B <code>--sbindir</code> $B%*%W%7%g%s$G;XDj$5$l$?%G%#%l%/%H%j$K%$%s%9%H!<%k$5$l$^$9!#(B - $B%G%U%)%k%H$N>l=j$O(B "/usr/local/apache/sbin/suexec" $B$G$9!#(B<br /> - $B%$%s%9%H!<%k;~$K$O(B <strong><em>root</em></strong> - $B8"8B$,I,MW$J$N$GCm0U$7$F$/$@$5$$!#(Bwrapper $B$,%f!<%6(B ID - $B$r@_Dj$9$k$?$a$K!"=jM-<T(B <code><em>root</em></code> - $B$G$N%;%C%H%f!<%6(B ID - $B%S%C%H$r$=$N%U%!%$%k$N%b!<%I$K@_Dj$7$J$1$l$P$J$j$^$;$s!#(B + すべての構成要素が作成されると、それらのインストールには + <code>make install</code> コマンドが実行できます。バイナリイメージの <code>suexec</code> + は <code>--sbindir</code> オプションで指定されたディレクトリにインストールされます。 + デフォルトの場所は "/usr/local/apache/sbin/suexec" です。<br /> + インストール時には <strong><em>root</em></strong> + 権限が必要なので注意してください。wrapper がユーザ ID + を設定するために、所有者 <code><em>root</em></code> + でのセットユーザ ID + ビットをそのファイルのモードに設定しなければなりません。 </p> - <p><strong>$B0BA4$J%Q!<%_%C%7%g%s$r@_Dj$9$k(B</strong><br /> - suEXEC $B%i%C%Q!<$O!"(B<code>--with-suexec-caller</code> <program>configure</program> - $B%*%W%7%g%s$G;XDj$7$?@5$7$$%f!<%6$G5/F0$5$l$F$$$k$3$H$r3NG'$7$^$9$,!"(B - $B%7%9%F%`>e$G$3$N%A%'%C%/$,9T$J$o$l$kA0$K!"(B - suEXEC $B$,8F$V%7%9%F%`$d%i%$%V%i%j$,@H<e$G$"$k2DG=@-$O;D$j$^$9!#BP93:v$H$7$F!"(B - $B0lHL$KNI$$=,47$H$b$5$l$$$^$9$,!"(B - $B%U%!%$%k%7%9%F%`%Q!<%_%C%7%g%s$r;H$C$F(B - Apache $B$N<B9T;~$N%0%k!<%W$N$_$,(B suEXEC $B$r<B9T$G$-$k$h$&$K(B - $B$9$k$N$,NI$$$G$7$g$&!#(B</p> + <p><strong>安全なパーミッションを設定する</strong><br /> + suEXEC ラッパーは、<code>--with-suexec-caller</code> <program>configure</program> + オプションで指定した正しいユーザで起動されていることを確認しますが、 + システム上でこのチェックが行なわれる前に、 + suEXEC が呼ぶシステムやライブラリが脆弱である可能性は残ります。対抗策として、 + 一般に良い習慣ともされいますが、 + ファイルシステムパーミッションを使って + Apache の実行時のグループのみが suEXEC を実行できるように + するのが良いでしょう。</p> - <p>$B$?$H$($P!"<!$N$h$&$K%5!<%P$,@_Dj$5$l$F$$$?$H$7$^$9!#(B</p> + <p>たとえば、次のようにサーバが設定されていたとします。</p> <example> User www<br /> Group webgroup<br /> </example> - <p><program>suexec</program> $B$,(B "/usr/local/apache2/sbin/suexec" - $B$K%$%s%9%H!<%k$5$l$F$$$?>l9g!"<!$N$h$&$K@_Dj$9$kI,MW$,$"$j$^$9!#(B</p> + <p><program>suexec</program> が "/usr/local/apache2/sbin/suexec" + にインストールされていた場合、次のように設定する必要があります。</p> <example> chgrp webgroup /usr/local/apache2/bin/suexec<br /> chmod 4750 /usr/local/apache2/bin/suexec<br /> </example> - <p>$B$3$l$G(B Apache $B$,<B9T$5$l$k%0%k!<%W$N$_$,(B - suEXEC $B%i%C%Q!<$r<B9T$G$-$k$H$$$&$3$H$r(B - $B3N>Z$7$^$9!#(B</p> + <p>これで Apache が実行されるグループのみが + suEXEC ラッパーを実行できるということを + 確証します。</p> </section> <section id="enable"><title>suEXEC - $B$NM-8z2=$HL58z2=(B</title> + の有効化と無効化</title> - <p>$B5/F0;~$K!"(BApache $B$O(B <code>--sbindir</code> - $B%*%W%7%g%s$G@_Dj$5$l$?%G%#%l%/%H%j$G(B - <code>suexec</code> $B$rC5$7$^$9(B - ($B%G%U%)%k%H$O(B "/usr/local/apache/sbin/suexec") $B!#(B - $BE,@Z$K@_Dj$5$l$?(B suEXEC $B$,$_$D$+$k$H!"(B - $B%(%i!<%m%0$K0J2<$N%a%C%;!<%8$,=PNO$5$l$^$9!#(B</p> + <p>起動時に、Apache は <code>--sbindir</code> + オプションで設定されたディレクトリで + <code>suexec</code> を探します + (デフォルトは "/usr/local/apache/sbin/suexec") 。 + 適切に設定された suEXEC がみつかると、 + エラーログに以下のメッセージが出力されます。</p> <example> [notice] suEXEC mechanism enabled (wrapper: <var>/path/to/suexec</var>) </example> - <p>$B%5!<%P5/F0;~$K$3$N%a%C%;!<%8$,=P$J$$>l9g!"(B - $BBgDq$O%5!<%P$,A[Dj$7$?>l=j$G(B wrapper $B%W%m%0%i%`$,8+$D$+$i$J$+$C$?$+!"(B - <em>setuid root</em> $B$H$7$F%$%s%9%H!<%k$5$l$F$$$J$$$+$G$9!#(B</p> + <p>サーバ起動時にこのメッセージが出ない場合、 + 大抵はサーバが想定した場所で wrapper プログラムが見つからなかったか、 + <em>setuid root</em> としてインストールされていないかです。</p> - <p>suEXEC $B$N;EAH$_$r;HMQ$9$k$N$,=i$a$F$G!"(BApache $B$,4{$KF0:nCf$G$"$l$P!"(B - Apache $B$r(B kill $B$7$F!":F5/F0$7$J$1$l$P$J$j$^$;$s!#(BHUP $B%7%0%J%k$d(B - USR1 $B%7%0%J%k$K$h$kC1=c$J:F5/F0$G$OIT==J,$G$9!#(B</p> - <p>suEXEC $B$rL58z$K$9$k>l9g$O!"(B<code>suexec</code> $B%U%!%$%k$r:o=|$7$F$+$i(B - Apache $B$r(B kill $B$7$F:F5/F0$7$^$9!#(B + <p>suEXEC の仕組みを使用するのが初めてで、Apache が既に動作中であれば、 + Apache を kill して、再起動しなければなりません。HUP シグナルや + USR1 シグナルによる単純な再起動では不十分です。</p> + <p>suEXEC を無効にする場合は、<code>suexec</code> ファイルを削除してから + Apache を kill して再起動します。 </p> </section> - <section id="usage"><title>suEXEC $B$N;HMQ(B</title> + <section id="usage"><title>suEXEC の使用</title> - <p>CGI $B%W%m%0%i%`$X$N%j%/%(%9%H$,(B suEXEC $B%i%C%Q!<$r8F$V$N$O!"(B - <directive module="mod_suexec">SuexecUserGroup</directive> $B%G%#%l%/%F%#%V$r(B - $B4^$`%P!<%A%c%k%[%9%H$X$N%j%/%(%9%H$+!"(B<module>mod_userdir</module> $B$K$h$j(B - $B=hM}$5$l$?%j%/%(%9%H$N>l9g$K8B$j$^$9!#(B</p> + <p>CGI プログラムへのリクエストが suEXEC ラッパーを呼ぶのは、 + <directive module="mod_suexec">SuexecUserGroup</directive> ディレクティブを + 含むバーチャルホストへのリクエストか、<module>mod_userdir</module> により + 処理されたリクエストの場合に限ります。</p> - <p><strong>$B2>A[%[%9%H(B:</strong><br /> - suEXEC wrapper $B$N;H$$J}$H$7$F!"(B - <directive module="core">VirtualHost</directive> $B@_Dj$G$N(B + <p><strong>仮想ホスト:</strong><br /> + suEXEC wrapper の使い方として、 + <directive module="core">VirtualHost</directive> 設定での <directive module="mod_suexec">SuexecUserGroup</directive> - $B%G%#%l%/%F%#%V$rDL$7$?$b$N$,$"$j$^$9!#(B - $B$3$N%G%#%l%/%F%#%V$r%a%$%s%5!<%P$N%f!<%6(B ID - $B$H0[$J$k$b$N$K$9$k$H!"(BCGI $B%j%=!<%9$X$N$9$Y$F$N%j%/%(%9%H$O!"$=$N(B + ディレクティブを通したものがあります。 + このディレクティブをメインサーバのユーザ ID + と異なるものにすると、CGI リソースへのすべてのリクエストは、その <directive module="core" - type="section">VirtualHost</directive> $B$G;XDj$5$l$?(B <em>User</em> $B$H(B - <em>Group</em> $B$H$7$F<B9T$5$l$^$9!#(B<directive module="core" + type="section">VirtualHost</directive> で指定された <em>User</em> と + <em>Group</em> として実行されます。<directive module="core" type="section">VirtualHost</directive> - $B$G$3$N%G%#%l%/%F%#%V$,;XDj$5$l$F$$$J$$>l9g!"(B - $B%a%$%s%5!<%P$N%f!<%6(B ID $B$,A[Dj$5$l$^$9!#(B</p> - - <p><strong>$B%f!<%6%G%#%l%/%H%j(B:</strong><br /> - <module>mod_userdir</module> $B$K$h$j=hM}$5$l$?%j%/%(%9%H$O(B - $B%j%/%(%9%H$5$l$?%f!<%6%G%#%l%/%H%j$N%f!<%6(B ID $B$G(B CGI $B%W%m%0%i%`$r(B - $B<B9T$9$k$?$a$K(B suEXEC $B%i%C%Q!<$r8F$S$^$9!#(B - $B$3$N5!G=$rF0:n$5$;$k$?$a$KI,MW$J$3$H$O!"(BCGI - $B$r$=$N%f!<%6$G<B9T$G$-$k$3$H!"$=$N%9%/%j%W%H$,>e5-$N(B<a - href="#model">$B%;%-%e%j%F%#8!::(B</a>$B$r%Q%9$G$-$k$3$H$G$9!#(B - <a href="#install">$B%3%s%Q%$%k(B - $B;~$N%*%W%7%g%s(B</a> <code>--with-suexec-userdir</code> $B$b;2>H$7$F$/$@$5$$!#(B</p> + でこのディレクティブが指定されていない場合、 + メインサーバのユーザ ID が想定されます。</p> + + <p><strong>ユーザディレクトリ:</strong><br /> + <module>mod_userdir</module> により処理されたリクエストは + リクエストされたユーザディレクトリのユーザ ID で CGI プログラムを + 実行するために suEXEC ラッパーを呼びます。 + この機能を動作させるために必要なことは、CGI + をそのユーザで実行できること、そのスクリプトが上記の<a + href="#model">セキュリティ検査</a>をパスできることです。 + <a href="#install">コンパイル + 時のオプション</a> <code>--with-suexec-userdir</code> も参照してください。</p> </section> - <section id="debug"><title>suEXEC $B$N%G%P%C%0(B</title> + <section id="debug"><title>suEXEC のデバッグ</title> - <p>suEXEC wrapper $B$O!">e5-$G=R$Y$?(B <code>--with-suexec-logfile</code> - $B%*%W%7%g%s$G;XDj$5$l$?%U%!%$%k$K%m%0>pJs$r5-O?$7$^$9!#(B - wrapper $B$rE,@Z$K@_Dj!"%$%s%9%H!<%k$G$-$F$$$k$H;W$&>l9g!"(B - $B$I$3$GLB$C$F$$$k$+8+$h$&$H$9$k$J$i$3$N%m%0$H%5!<%P$N(B - $B%(%i!<%m%0$r8+$k$H$h$$$G$7$g$&!#(B</p> + <p>suEXEC wrapper は、上記で述べた <code>--with-suexec-logfile</code> + オプションで指定されたファイルにログ情報を記録します。 + wrapper を適切に設定、インストールできていると思う場合、 + どこで迷っているか見ようとするならこのログとサーバの + エラーログを見るとよいでしょう。</p> </section> - <section id="jabberwock"><title>$B$H$+$2$KCm0U(B: $B7Y9p$H;vNc(B</title> + <section id="jabberwock"><title>とかげに注意: 警告と事例</title> - <p><strong>$BCm0U(B!</strong> - $B$3$N>O$O40A4$G$O$"$j$^$;$s!#$3$N>O$N:G?72~D{HG$K$D$$$F$O!"(B - Apache $B%0%k!<%W$N(B<a href="http://httpd.apache.org/docs/&httpd.docs;/suexec.html"> - $B%*%s%i%$%s%I%-%e%a%s%H(B</a>$BHG$r;2>H$7$F$/$@$5$$!#(B + <p><strong>注意!</strong> + この章は完全ではありません。この章の最新改訂版については、 + Apache グループの<a href="http://httpd.apache.org/docs/&httpd.docs;/suexec.html"> + オンラインドキュメント</a>版を参照してください。 </p> - <p>$B%5!<%P$N@_Dj$K@)8B$r$b$&$1$k(B wrapper $B$K$D$$$F!"(B - $B$$$/$D$+6=L#?<$$E@$,$"$j$^$9!#(BsuEXEC $B$K4X$9$k(B "$B%P%0(B" - $B$rJs9p$9$kA0$K$3$l$i$r3NG'$7$F$/$@$5$$!#(B</p> + <p>サーバの設定に制限をもうける wrapper について、 + いくつか興味深い点があります。suEXEC に関する "バグ" + を報告する前にこれらを確認してください。</p> <ul> - <li><strong>suEXEC $B$N6=L#?<$$E@(B</strong></li> + <li><strong>suEXEC の興味深い点</strong></li> - <li>$B3,AX9=B$$N@)8B(B + <li>階層構造の制限 <p class="indent"> - $B%;%-%e%j%F%#$H8zN($NM}M3$+$i!"(B<code>suEXEC</code> $B$NA4$F$N%j%/%(%9%H$O(B - $B2>A[%[%9%H$X$N%j%/%(%9%H$K$*$1$k:G>e0L$N%I%-%e%a%s%H%k!<%HFb$+!"(B - $B%f!<%6%G%#%l%/%H%j$X$N%j%/%(%9%H$K$*$1$k8D!9$N%f!<%6$N:G>e0L$N(B - $B%I%-%e%a%s%H%k!<%HFb$K;D$i$J$1$l$P$J$j$^$;$s!#(B - $BNc$($P!";M$D$N2>A[%[%9%H$r@_Dj$7$F$$$k>l9g!"(B - $B2>A[%[%9%H$N(B suEXEC $B$KM-Mx$J$h$&$K!"%a%$%s$N(B Apache - $B%I%-%e%a%s%H3,AX$N30B&$KA4$F$N2>A[%[%9%H$N%I%-%e%a%s%H%k!<%H$r(B - $B9=C[$9$kI,MW$,$"$j$^$9!#(B($BNc$O8eF|5-:\(B) + セキュリティと効率の理由から、<code>suEXEC</code> の全てのリクエストは + 仮想ホストへのリクエストにおける最上位のドキュメントルート内か、 + ユーザディレクトリへのリクエストにおける個々のユーザの最上位の + ドキュメントルート内に残らなければなりません。 + 例えば、四つの仮想ホストを設定している場合、 + 仮想ホストの suEXEC に有利なように、メインの Apache + ドキュメント階層の外側に全ての仮想ホストのドキュメントルートを + 構築する必要があります。(例は後日記載) </p> </li> - <li>suEXEC $B$N(B PATH $B4D6-JQ?t(B + <li>suEXEC の PATH 環境変数 <p class="indent"> - $B$3$l$rJQ99$9$k$N$O4m81$G$9!#$3$N;XDj$K4^$^$l$k3F%Q%9$,(B - <strong>$B?.Mj$G$-$k(B</strong> - $B%G%#%l%/%H%j$G$"$k$3$H$r3NG'$7$F$/$@$5$$!#(B - $B@$3&$+$i$N%"%/%;%9$K$h$j!"C/$+$,%[%9%H>e$G%H%m%$$NLZGO(B - $B$r<B9T$G$-$k$h$&$K$O$7$?$/$J$$$G$7$g$&!#(B + これを変更するのは危険です。この指定に含まれる各パスが + <strong>信頼できる</strong> + ディレクトリであることを確認してください。 + 世界からのアクセスにより、誰かがホスト上でトロイの木馬 + を実行できるようにはしたくないでしょう。 </p> </li> - <li>suEXEC $B%3!<%I$N2~B$(B + <li>suEXEC コードの改造 <p class="indent"> - $B7+$jJV$7$^$9$,!"2?$r$d$m$&$H$7$F$$$k$+GD0.$;$:$K$3$l$r$d$k$H(B - <strong>$BBg$-$JLdBj(B</strong>$B$r0z$-5/$3$7$+$M$^$;$s!#(B - $B2DG=$J8B$jHr$1$F$/$@$5$$!#(B + 繰り返しますが、何をやろうとしているか把握せずにこれをやると + <strong>大きな問題</strong>を引き起こしかねません。 + 可能な限り避けてください。 </p> </li> </ul> diff --git a/docs/manual/urlmapping.xml.ja b/docs/manual/urlmapping.xml.ja index 3a4be320c3..658dc153e6 100644 --- a/docs/manual/urlmapping.xml.ja +++ b/docs/manual/urlmapping.xml.ja @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="iso-2022-jp" ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="./style/manual.ja.xsl"?> <!-- English Revision: 151408:567425 (outdated) --> @@ -22,14 +22,14 @@ <manualpage metafile="urlmapping.xml.meta"> - <title>URL $B$+$i%U%!%$%k%7%9%F%`>e$N0LCV$X$N%^%C%W(B</title> + <title>URL からファイルシステム上の位置へのマップ</title> <summary> - <p>$B$3$NJ8=q$O(B Apache $B$,%j%/%(%9%H$N(B URL $B$+$iAw?.$9$k%U%!%$%k$N(B - $B%U%!%$%k%7%9%F%`>e$N0LCV$r7hDj$9$kJ}K!$r@bL@$7$^$9!#(B</p> + <p>この文書は Apache がリクエストの URL から送信するファイルの + ファイルシステム上の位置を決定する方法を説明します。</p> </summary> -<section id="related"><title>$B4XO"$9$k%b%8%e!<%k$H%G%#%l%/%F%#%V(B</title> +<section id="related"><title>関連するモジュールとディレクティブ</title> <related> <modulelist> @@ -64,158 +64,158 @@ <section id="documentroot"><title>DocumentRoot</title> - <p>$B%j%/%(%9%H$KBP$7$F$I$N%U%!%$%k$rAw?.$9$k$+$r7hDj$9$k$H$-$N(B - Apache $B$N%G%U%)%k%H$NF0:n$O!"%j%/%(%9%H$N(B URL-Path (URL $B$N%[%9%HL>$H(B - $B%]!<%HHV9f$N8e$KB3$/ItJ,(B) $B$r<h$j=P$7$F@_Dj%U%!%$%k$G;XDj$5$l$F$$$k(B + <p>リクエストに対してどのファイルを送信するかを決定するときの + Apache のデフォルトの動作は、リクエストの URL-Path (URL のホスト名と + ポート番号の後に続く部分) を取り出して設定ファイルで指定されている <directive module="core">DocumentRoot</directive> - $B$N:G8e$KDI2C$9$k!"$H$$$&$b$N$G$9!#$G$9$+$i!"(B + の最後に追加する、というものです。ですから、 <directive module="core">DocumentRoot</directive> - $B$N2<$N%G%#%l%/%H%j$d%U%!%$%k$,%&%'%V$+$i8+$($k4pK\$N%I%-%e%a%s%H$NLZ9=B$$r(B - $B$J$7$^$9!#(B</p> + の下のディレクトリやファイルがウェブから見える基本のドキュメントの木構造を + なします。</p> - <p>Apache $B$K$O%5!<%P$,J#?t$N%[%9%H$X$N%j%/%(%9%H$r<u$1<h$k(B - <a href="vhosts/">$B%P!<%A%c%k%[%9%H(B</a> $B$N5!G=$b$"$j$^$9!#(B - $B$3$N>l9g!"$=$l$>$l$N%P!<%A%c%k%[%9%H$KBP$7$F0c$&(B + <p>Apache にはサーバが複数のホストへのリクエストを受け取る + <a href="vhosts/">バーチャルホスト</a> の機能もあります。 + この場合、それぞれのバーチャルホストに対して違う <directive module="core">DocumentRoot</directive> - $B$r;XDj$9$k$3$H$,$G$-$^$9!#$^$?!"(B<module>mod_vhost_alias</module> - $B%b%8%e!<%k$K$h$jDs6!$5$l$k%G%#%l%/%F%#%V$r;H$C$F!"(B - $BAw?.$9$k$?$a$N%3%s%F%s%D$N>l=j$r%j%/%(%9%H$5$l$?(B IP - $B%"%I%l%9$d%[%9%HL>$+$iF0E*$K7h$a$k$3$H$b$G$-$^$9!#(B</p> + を指定することができます。また、<module>mod_vhost_alias</module> + モジュールにより提供されるディレクティブを使って、 + 送信するためのコンテンツの場所をリクエストされた IP + アドレスやホスト名から動的に決めることもできます。</p> </section> -<section id="outside"><title>DocumentRoot $B30$N%U%!%$%k(B</title> +<section id="outside"><title>DocumentRoot 外のファイル</title> - <p>$B%U%!%$%k%7%9%F%`>e$N!"(B - $B87L)$K$O(B <directive module="core">DocumentRoot</directive> - $B$N2<$K$O$J$$ItJ,$X$N%&%'%V%"%/%;%9$r5v2D$9$kI,MW$,$"$k(B - $B>l9g$,$h$/$"$j$^$9!#(BApache $B$O$3$N$?$a$KJ#?t$NJ}K!$rMQ0U$7$F$$$^$9!#(B - Unix $B%7%9%F%`$G$O!"%U%!%$%k%7%9%F%`$NB>$NItJ,$r%7%s%\%j%C%/%j%s%/$r(B - $B;H$C$F(B <directive module="core">DocumentRoot</directive> - $B$N2<$K;}$C$F$/$k$3$H$,$G$-$^$9!#%;%-%e%j%F%#>e$NM}M3$K$h$j!"(B - Apache $B$O3:Ev$9$k%G%#%l%/%H%j$N(B - <directive module="core">Options</directive> $B$N@_Dj$K(B - <code>FollowSymLinks</code> $B$+(B <code>SymLinksIfOwnerMatch</code> $B$,(B - $B$"$k>l9g$K$N$_%7%s%\%j%C%/%j%s%/$r$?$I$j$^$9!#(B</p> + <p>ファイルシステム上の、 + 厳密には <directive module="core">DocumentRoot</directive> + の下にはない部分へのウェブアクセスを許可する必要がある + 場合がよくあります。Apache はこのために複数の方法を用意しています。 + Unix システムでは、ファイルシステムの他の部分をシンボリックリンクを + 使って <directive module="core">DocumentRoot</directive> + の下に持ってくることができます。セキュリティ上の理由により、 + Apache は該当するディレクトリの + <directive module="core">Options</directive> の設定に + <code>FollowSymLinks</code> か <code>SymLinksIfOwnerMatch</code> が + ある場合にのみシンボリックリンクをたどります。</p> - <p>$BBe$o$j$NJ}K!$H$7$F!"(B<directive module="mod_alias">Alias</directive> - $B%G%#%l%/%F%#%V$r;H$C$F%U%!%$%k%7%9%F%`$NG$0U$NItJ,$r%&%'%V$N6u4V$K(B - $B%^%C%W$G$-$^$9!#$?$H$($P!"(B</p> + <p>代わりの方法として、<directive module="mod_alias">Alias</directive> + ディレクティブを使ってファイルシステムの任意の部分をウェブの空間に + マップできます。たとえば、</p> <example>Alias /docs /var/web</example> - <p>$B$H$$$&@_Dj$N$H$-$O!"(BURL - <code>http://www.example.com/docs/dir/file.html</code> $B$K$O(B - <code>/var/web/dir/file.html</code> $B$,Aw?.$5$l$^$9!#(B - <directive module="mod_alias">ScriptAlias</directive> $B$b!"(B - $BBP>]$H$J$C$F$$$k%Q%9$,(B CGI $B%9%/%j%W%H$H$7$F07$o$l$k$H$$$&DI2C$N(B - $B8z2L0J30$OF1$8$h$&$KF0:n$7$^$9!#(B</p> + <p>という設定のときは、URL + <code>http://www.example.com/docs/dir/file.html</code> には + <code>/var/web/dir/file.html</code> が送信されます。 + <directive module="mod_alias">ScriptAlias</directive> も、 + 対象となっているパスが CGI スクリプトとして扱われるという追加の + 効果以外は同じように動作します。</p> - <p>$B$b$C$H=@Fp$J@_Dj$,I,MW$J>u67$G$O!"(B - <directive module="mod_alias">AliasMatch</directive> $B%G%#%l%/%F%#%V$d(B - <directive module="mod_alias">ScriptAliasMatch</directive> $B%G%#%l%/%F%#%V(B - $B$r;H$C$F6/NO$J@55,I=8=$K4p$E$$$?%^%C%A$HCV49$r9T$J$&$3$H$,$G$-$^$9!#(B - $B$?$H$($P!"(B</p> + <p>もっと柔軟な設定が必要な状況では、 + <directive module="mod_alias">AliasMatch</directive> ディレクティブや + <directive module="mod_alias">ScriptAliasMatch</directive> ディレクティブ + を使って強力な正規表現に基づいたマッチと置換を行なうことができます。 + たとえば、</p> <example>ScriptAliasMatch ^/~([a-zA-Z0-9]+)/cgi-bin/(.+) /home/$1/cgi-bin/$2</example> - <p>$B$O(B <code>http://example.com/~user/cgi-bin/script.cgi</code> $B$X$N(B - $B%j%/%(%9%H$r(B <code>/home/user/cgi-bin/script.cgi</code> $B$H$$$&%Q%9$X(B - $B%^%C%W$7!"$3$N%^%C%W$N7k2L$H$7$F$N%U%!%$%k$r(B CGI $B%9%/%j%W%H$H$7$F(B - $B07$$$^$9!#(B</p> + <p>は <code>http://example.com/~user/cgi-bin/script.cgi</code> への + リクエストを <code>/home/user/cgi-bin/script.cgi</code> というパスへ + マップし、このマップの結果としてのファイルを CGI スクリプトとして + 扱います。</p> </section> -<section id="user"><title>$B%f!<%6%G%#%l%/%H%j(B</title> +<section id="user"><title>ユーザディレクトリ</title> - <p>$BEAE}E*$K(B Unix $B%7%9%F%`$G$O%f!<%6(B <em>user</em> $B$N%[!<%`%G%#%l%/%H%j$r(B - <code>~user/</code> $B$H$7$F;2>H$G$-$^$9!#(B<module>mod_userdir</module> - $B%b%8%e!<%k$O$3$N35G0$r%&%'%V$K3HD%$7$F!"(B - $B$=$l$>$l$N%f!<%6$N%[!<%`%G%#%l%/%H%j$N%U%!%$%k$r(B - $B0J2<$N$h$&$J(B URL $B$r;H$C$F%"%/%;%9$G$-$k$h$&$K$7$^$9!#(B</p> + <p>伝統的に Unix システムではユーザ <em>user</em> のホームディレクトリを + <code>~user/</code> として参照できます。<module>mod_userdir</module> + モジュールはこの概念をウェブに拡張して、 + それぞれのユーザのホームディレクトリのファイルを + 以下のような URL を使ってアクセスできるようにします。</p> <example>http://www.example.com/~user/file.html</example> - <p>$B%;%-%e%j%F%#$N4QE@$+$i!"%&%'%V$+$i%f!<%6$N%[!<%`%G%#%l%/%H%j$X(B - $BD>@\%"%/%;%9$G$-$k$h$&$K$9$k$3$H$OE,@Z$G$O$"$j$^$;$s!#$G$9$+$i!"(B - <directive module="mod_userdir">UserDir</directive> $B%G%#%l%/%F%#%V$K$O(B - $B%f!<%6$N%[!<%`%G%#%l%/%H%j$N2<$N!"%&%'%V%U%!%$%k$N(B - $BCV$+$l$F$$$k%G%#%l%/%H%j$r;XDj$7$^$9!#%G%U%)%k%H$N@_Dj$N(B - <code>Userdir public_html</code> $B$r;H$&$H!">e$N(B URL $B$O(B - <code>/home/user/public_html/file.html</code> $B$H$$$&$h$&$J%U%!%$%k$K(B - $B%^%C%W$5$l$^$9!#$3$3$G!"(B<code>/home/user/</code> $B$O(B - <code>/etc/passwd</code> $B$G;XDj$5$l$F$$$k%f!<%6$N%[!<%`%G%#%l%/%H%j$G$9!#(B</p> - - <p><directive module="mod_userdir">Userdir</directive> $B$K$O!"(B - <code>/etc/passwd</code> $B$K%[!<%`%G%#%l%/%H%j$N0LCV$,=q$+$l$F$$$J$$(B - $B%7%9%F%`$G$b;H$&$3$H$N$G$-$kB>$N7A<0$b$"$j$^$9!#(B</p> - - <p>$BCf$K$O%7%s%\%k(B "~" (<code>%7e</code> $B$N$h$&$KId9f2=$5$l$k$3$H$,B?$$(B) - $B$r3J9%$,0-$$$H;W$C$F!"%f!<%6$N%G%#%l%/%H%j$rI=$9$?$a$KJL$NJ8;zNs$N(B - $B;HMQ$r9%$`?M$,$$$^$9!#(Bmod_userdir $B$O$3$N5!G=$r%5%]!<%H$7$F$$$^$;$s!#(B - $B$7$+$7!"%f!<%6$N%[!<%`%G%#%l%/%H%j$,5,B'E*$J9=@.$N$H$-$O!"(B - <directive module="mod_alias">AliasMatch</directive> $B$r;H$C$FK>$_$N(B - $B8z2L$rC#@.$9$k$3$H$,$G$-$^$9!#$?$H$($P!"(B - <code>http://www.example.com/upages/user/file.html</code> $B$,(B - <code>/home/user/public_html/file.html</code> $B$K%^%C%W$5$l$k$h$&$K$9$k$K$O!"(B - $B0J2<$N$h$&$K(B <code>AliasMatch</code> $B%G%#%l%/%F%#%V$r;H$$$^$9(B:</p> + <p>セキュリティの観点から、ウェブからユーザのホームディレクトリへ + 直接アクセスできるようにすることは適切ではありません。ですから、 + <directive module="mod_userdir">UserDir</directive> ディレクティブには + ユーザのホームディレクトリの下の、ウェブファイルの + 置かれているディレクトリを指定します。デフォルトの設定の + <code>Userdir public_html</code> を使うと、上の URL は + <code>/home/user/public_html/file.html</code> というようなファイルに + マップされます。ここで、<code>/home/user/</code> は + <code>/etc/passwd</code> で指定されているユーザのホームディレクトリです。</p> + + <p><directive module="mod_userdir">Userdir</directive> には、 + <code>/etc/passwd</code> にホームディレクトリの位置が書かれていない + システムでも使うことのできる他の形式もあります。</p> + + <p>中にはシンボル "~" (<code>%7e</code> のように符号化されることが多い) + を格好が悪いと思って、ユーザのディレクトリを表すために別の文字列の + 使用を好む人がいます。mod_userdir はこの機能をサポートしていません。 + しかし、ユーザのホームディレクトリが規則的な構成のときは、 + <directive module="mod_alias">AliasMatch</directive> を使って望みの + 効果を達成することができます。たとえば、 + <code>http://www.example.com/upages/user/file.html</code> が + <code>/home/user/public_html/file.html</code> にマップされるようにするには、 + 以下のように <code>AliasMatch</code> ディレクティブを使います:</p> <example>AliasMatch ^/upages/([a-zA-Z0-9]+)/?(.*) /home/$1/public_html/$2</example> </section> -<section id="redirect"><title>URL $B%j%@%$%l%/%7%g%s(B</title> - - <p>$B>e$N@a$G@bL@$7$?@_DjMQ$N%G%#%l%/%F%#%V$O(B Apache $B$K(B - $B%U%!%$%k%7%9%F%`$NFCDj$N>l=j$+$i%3%s%F%s%D$r<h$C$F$-$F(B - $B%/%i%$%"%s%H$KAw$jJV$9$h$&$K$7$^$9!#$H$-$K$O!"$=$NBe$o$j$K(B - $B%/%i%$%"%s%H$K%j%/%(%9%H$5$l$?%3%s%F%s%D$OJL$N(B URL $B$K$"$k$3$H$r(B - $BCN$i$;$F!"%/%i%$%"%s%H$,?7$7$$(B URL $B$X?7$7$$%j%/%(%9%H$r9T$J$&$h$&$K(B - $B$9$kJ}$,K>$^$7$$$3$H$,$"$j$^$9!#$3$l$O(B<em>$B%j%@%$%l%/%7%g%s(B</em>$B$H(B - $B8F$P$l$F$$$F!"(B<directive module="mod_alias">Redirect</directive> - $B%G%#%l%/%F%#%V$K$h$j<BAu$5$l$F$$$^$9!#$?$H$($P!"(B - <directive module="core">DocumentRoot</directive> $B$N2<$N%G%#%l%/%H%j(B - <code>/foo/</code> $B$,?7$7$$%G%#%l%/%H%j(B <code>/bar/</code> $B$K0\F0$7$?$H$-$O!"(B - $B0J2<$N$h$&$K$7$F%/%i%$%"%s%H$,?7$7$$>l=j$N%3%s%F%s%D$r%j%/%(%9%H$9$k$h$&$K(B - $B;X<($9$k$3$H$,$G$-$^$9(B:</p> +<section id="redirect"><title>URL リダイレクション</title> + + <p>上の節で説明した設定用のディレクティブは Apache に + ファイルシステムの特定の場所からコンテンツを取ってきて + クライアントに送り返すようにします。ときには、その代わりに + クライアントにリクエストされたコンテンツは別の URL にあることを + 知らせて、クライアントが新しい URL へ新しいリクエストを行なうように + する方が望ましいことがあります。これは<em>リダイレクション</em>と + 呼ばれていて、<directive module="mod_alias">Redirect</directive> + ディレクティブにより実装されています。たとえば、 + <directive module="core">DocumentRoot</directive> の下のディレクトリ + <code>/foo/</code> が新しいディレクトリ <code>/bar/</code> に移動したときは、 + 以下のようにしてクライアントが新しい場所のコンテンツをリクエストするように + 指示することができます:</p> <example>Redirect permanent /foo/ http://www.example.com/bar/</example> - <p>$B$3$l$O!"(B<code>/foo/</code> $B$G;O$^$k$9$Y$F$N(B URL-Path $B$r!"(B - <code>www.example.com</code> $B%5!<%P$N(B <code>/bar/</code> $B$,(B - <code>/foo/</code> $B$KCV49$5$l$?$b$N$K%j%@%$%l%/%H$7$^$9!#(B - $B%5!<%P$O<+J,<+?H$N%5!<%P$@$1$G$J$/!"$I$N%5!<%P$K$G$b%/%i%$%"%s%H$r(B - $B%j%@%$%l%/%H$9$k$3$H$,$G$-$^$9!#(B</p> + <p>これは、<code>/foo/</code> で始まるすべての URL-Path を、 + <code>www.example.com</code> サーバの <code>/bar/</code> が + <code>/foo/</code> に置換されたものにリダイレクトします。 + サーバは自分自身のサーバだけでなく、どのサーバにでもクライアントを + リダイレクトすることができます。</p> - <p>Apache $B$O$h$jJ#;($J=q$-49$($NLdBj$N$?$a$K!"(B - <directive module="mod_alias">RedirectMatch</directive> $B%G%#%l%/%F%#%V$r(B - $BDs6!$7$F$$$^$9!#$?$H$($P!"%5%$%H$N%[!<%`%Z!<%8$r0c$&%5%$%H$K%j%@%$%l%/%H(B - $B$9$k$1$l$I!"B>$N%j%/%(%9%H$O$=$N$^$^07$&!"$H$$$&$H$-$O0J2<$N@_Dj$r(B - $B;H$$$^$9(B:</p> + <p>Apache はより複雑な書き換えの問題のために、 + <directive module="mod_alias">RedirectMatch</directive> ディレクティブを + 提供しています。たとえば、サイトのホームページを違うサイトにリダイレクト + するけれど、他のリクエストはそのまま扱う、というときは以下の設定を + 使います:</p> <example>RedirectMatch permanent ^/$ http://www.example.com/startpage.html</example> - <p>$B$"$k$$$O!"0l;~E*$K%5%$%H$N$9$Y$F$N%Z!<%8$rB>$N%5%$%H$NFCDj$N(B - $B%Z!<%8$X%j%@%$%l%/%H$9$k$H$-$O!"0J2<$r;H$$$^$9(B:</p> + <p>あるいは、一時的にサイトのすべてのページを他のサイトの特定の + ページへリダイレクトするときは、以下を使います:</p> <example>RedirectMatch temp .* http://othersite.example.com/startpage.html</example> </section> -<section id="proxy"><title>$B%j%P!<%9%W%m%-%7(B</title> +<section id="proxy"><title>リバースプロキシ</title> -<p>Apache $B$O1s3VCO$K$"$k%I%-%e%a%s%H$r%m!<%+%k$N%5!<%P$N(B URL $B6u4V$K(B -$B;}$C$F$/$k$3$H$b$G$-$^$9!#$3$N<jK!$O(B<em>$B%j%P!<%9%W%m%-%7(B</em>$B$H8F$P$l$F$$$^$9!#(B -$B%&%'%V%5!<%P$,1s3VCO$N%I%-%e%a%s%H$r<hF@$7$F%/%i%$%"%s%H$KAw$jJV$9$N$,(B -$B%W%m%-%7%5!<%P$NF0:n$N$h$&$K8+$($k$+$i$G$9!#%/%i%$%"%s%H$K$O%I%-%e%a%s%H$,(B -$B%j%P!<%9%W%m%-%7%5!<%P$+$iAw$i$l$F$-$F$$$k$h$&$K8+$($kE@$,DL>o$N(B -$B%W%m%-%7$H$O0[$J$j$^$9!#(B</p> +<p>Apache は遠隔地にあるドキュメントをローカルのサーバの URL 空間に +持ってくることもできます。この手法は<em>リバースプロキシ</em>と呼ばれています。 +ウェブサーバが遠隔地のドキュメントを取得してクライアントに送り返すのが +プロキシサーバの動作のように見えるからです。クライアントにはドキュメントが +リバースプロキシサーバから送られてきているように見える点が通常の +プロキシとは異なります。</p> -<p>$B<!$NNc$G$O!"%/%i%$%"%s%H$,(B <code>/foo/</code> $B%G%#%l%/%H%j$N2<$K$"$k(B -$B%I%-%e%a%s%H$r%j%/%(%9%H$9$k$H!"%5!<%P$,(B <code>internal.example.com</code> $B$N(B -<code>/bar/</code> $B%G%#%l%/%H%j$+$i<hF@$7$F!"$5$b%m!<%+%k%5!<%P$+$i$N(B -$B%I%-%e%a%s%H$N$h$&$K$7$F%/%i%$%"%s%H$KJV$7$^$9!#(B</p> +<p>次の例では、クライアントが <code>/foo/</code> ディレクトリの下にある +ドキュメントをリクエストすると、サーバが <code>internal.example.com</code> の +<code>/bar/</code> ディレクトリから取得して、さもローカルサーバからの +ドキュメントのようにしてクライアントに返します。</p> <example> ProxyPass /foo/ http://internal.example.com/bar/<br /> @@ -224,76 +224,76 @@ ProxyPassReverseCookieDomain internal.example.com public.example.com<br /> ProxyPassReverseCookiePath /foo/ /bar/ </example> -<p><directive module="mod_proxy">ProxyPass</directive> $B%G%#%l%/%F%#%V$O(B -$B%5!<%P$,E,@Z$J%I%-%e%a%s%H$r<hF@$9$k$h$&$K@_Dj$7!"(B -<directive module="mod_proxy">ProxyPassReverse</directive> $B%G%#%l%/%F%#%V$O(B -<code>internal.example.com</code> $B$+$i$N%j%@%$%l%/%H$,%m!<%+%k%5!<%P$N(B -$BE,@Z$J%G%#%l%/%H%j$r;X$9$h$&$K=q$-49$($^$9!#(B -$BF1MM$K(B <directive module="mod_proxy">ProxyPassReverseCookieDomain</directive> -$B$H(B <directive module="mod_proxy">ProxyPassReverseCookiePath</directive> -$B$G%P%C%/%(%s%IB&%5!<%P$NH/9T$7$?(B Cookie $B$r=q$-49$($k$3$H$,$G$-$^$9!#(B</p> -<p>$B$?$@$7!"%I%-%e%a%s%H$NCf$N%j%s%/$O=q$-49$($i$l$J$$!"(B -$B$H$$$&$3$H$OCN$C$F$*$$$F$/$@$5$$!#(B -$B$G$9$+$i!"(B<code>internal.example.com</code> $B$X$N@dBP%Q%9$K$h$k%j%s%/$G$O!"(B -$B%/%i%$%"%s%H$,%W%m%-%7%5!<%P$rH4$1=P$7$F(B <code>internal.example.com</code> $B$K(B -$BD>@\%j%/%(%9%H$rAw$k!"$H$$$&$3$H$K$J$j$^$9!#(B -$B%5!<%I%Q!<%F%#@=%b%8%e!<%k$N(B <a +<p><directive module="mod_proxy">ProxyPass</directive> ディレクティブは +サーバが適切なドキュメントを取得するように設定し、 +<directive module="mod_proxy">ProxyPassReverse</directive> ディレクティブは +<code>internal.example.com</code> からのリダイレクトがローカルサーバの +適切なディレクトリを指すように書き換えます。 +同様に <directive module="mod_proxy">ProxyPassReverseCookieDomain</directive> +と <directive module="mod_proxy">ProxyPassReverseCookiePath</directive> +でバックエンド側サーバの発行した Cookie を書き換えることができます。</p> +<p>ただし、ドキュメントの中のリンクは書き換えられない、 +ということは知っておいてください。 +ですから、<code>internal.example.com</code> への絶対パスによるリンクでは、 +クライアントがプロキシサーバを抜け出して <code>internal.example.com</code> に +直接リクエストを送る、ということになります。 +サードパーティ製モジュールの <a href="http://apache.webthing.com/mod_proxy_html/">mod_proxy_html</a> -$B$O!"(BHTML $B$H(B XHTML $BCf$N%j%s%/$r=q$-49$($k$3$H$,$G$-$^$9!#(B</p> +は、HTML と XHTML 中のリンクを書き換えることができます。</p> </section> -<section id="rewrite"><title>$B%j%i%$%H%(%s%8%s(B</title> - - <p>$B$h$j0lAX6/NO$JCV49$,I,MW$J$H$-$O!"(B<module>mod_rewrite</module> - $B$,Ds6!$9$k%j%i%$%H%(%s%8%s$,Lr$KN)$D$G$7$g$&!#(B - $B$3$N%b%8%e!<%k$K$h$jDs6!$5$l$k%G%#%l%/%F%#%V$O(B - $B%V%i%&%6$N<oN`!"%j%/%(%9%H85$N(B IP $B%"%I%l%9$J$I$N%j%/%(%9%H$NFCD'$r(B - $B;H$C$FAw$jJV$9%3%s%F%s%D$N>l=j$r7h$a$^$9!#$5$i$K!"(B<module>mod_rewrite</module> - $B$O30It$N%G!<%?%Y!<%9%U%!%$%k$d%W%m%0%i%`$r;H$C$F%j%/%(%9%H$N07$$J}$r(B - $B7h$a$k$3$H$b$G$-$^$9!#%j%i%$%H%(%s%8%s$O>e$G5s$2$i$l$F$$$k;0$D$N%^%C%T%s%0(B - $B$9$Y$F$r9T$J$&$3$H$,$G$-$^$9(B: $BFbIt$N%j%@%$%l%/%H(B ($B%(%$%j%"%9(B)$B!"(B - $B30It$N%j%@%$%l%/%H!"%W%m%-%7$G$9!#(Bmod_rewrite $B$r;H$&B?$/$N<BMQE*$JNc$O(B - <a href="misc/rewriteguide.html">URL $B%j%i%$%H%,%$%I(B</a> - $B$G@bL@$5$l$F$$$^$9!#(B</p> +<section id="rewrite"><title>リライトエンジン</title> + + <p>より一層強力な置換が必要なときは、<module>mod_rewrite</module> + が提供するリライトエンジンが役に立つでしょう。 + このモジュールにより提供されるディレクティブは + ブラウザの種類、リクエスト元の IP アドレスなどのリクエストの特徴を + 使って送り返すコンテンツの場所を決めます。さらに、<module>mod_rewrite</module> + は外部のデータベースファイルやプログラムを使ってリクエストの扱い方を + 決めることもできます。リライトエンジンは上で挙げられている三つのマッピング + すべてを行なうことができます: 内部のリダイレクト (エイリアス)、 + 外部のリダイレクト、プロキシです。mod_rewrite を使う多くの実用的な例は + <a href="misc/rewriteguide.html">URL リライトガイド</a> + で説明されています。</p> </section> <section id="notfound"><title>File Not Found</title> - <p>$BI,$:!"%j%/%(%9%H$5$l$?(B URL $B$KBP1~$9$k%U%!%$%k$,%U%!%$%k%7%9%F%`$K(B - $BL5$$$H$$$&>l9g$,H/@8$7$^$9!#$3$l$,5/$3$k$N$K$O$$$/$D$+$NM}M3$,$"$j$^$9!#(B - $B>l9g$K$h$C$F$O!"%I%-%e%a%s%H$rJL$N>l=j$K0\F0$7$?7k2L$G$"$k$3$H$,$"$j$^$9!#(B - $B$3$N>l9g$O!"%/%i%$%"%s%H$K%j%=!<%9$N?7$7$$0LCV$rCN$i$;$k$?$a$K(B - <a href="#redirect">URL $B%j%@%$%l%/%7%g%s(B</a>$B$r;H$&$N$,:GA1$NJ}K!$G$9!#(B - $B$=$&$9$k$3$H$K$h$C$F!"%j%=!<%9$O?7$7$$0LCV$K0\F0$7$F$$$k$1$l$I$b!"(B - $B8E$$%V%C%/%^!<%/$d%j%s%/$,F0:n$7B3$1$k$h$&$K$9$k$3$H$,$G$-$^$9!#(B</p> - - <p>"File Not Found" $B%(%i!<$N$b$&0l$D$N$h$/$"$kM}M3$O!"(B - $B%V%i%&%6$X$ND>@\F~NO$d(B HTML $B%j%s%/$+$i$N6vH/E*$J(B URL $B$NF~NO4V0c$$$G$9!#(B - Apache $B$O$3$NLdBj$r2~A1$9$k$?$a$K!"(B<module>mod_speling</module> - $B%b%8%e!<%k(B ($B0U?^E*$JDV$j4V0c$$(B) - ($BLuCm(B: $B@5$7$/$O(B spelling) $B$rDs6!$7$F$$$^$9!#$3$N%b%8%e!<%k$,(B - $B;HMQ$5$l$F$$$k$H$-$O!"(B"File Not Found" $B%(%i!<$r2#<h$j$7$F!"(B - $B;w$?%U%!%$%kL>$N%j%=!<%9$rC5$7$^$9!#$b$70l$D$@$18+$D$+$C$?>l9g$O(B - mod_speling $B$O%/%i%$%"%s%H$K@5$7$$0LCV$rCN$i$;$k$?$a$K(B HTTP $B%j%@%$%l%/%H$r(B - $BAw$j$^$9!#$b$7J#?t$N!V6a$$!W%U%!%$%k$,8+$D$+$C$?>l9g$O!"$=$l$i(B - $BBeBX$H$J$j$($k$b$N$N%j%9%H$,%/%i%$%"%s%H$KI=<($5$l$^$9!#(B</p> - - <p>mod_speling $B$NHs>o$KM-MQ$J5!G=$O!"BgJ8;z>.J8;z$r6hJL$;$:$K(B - $B%U%!%$%kL>$rHf3S$9$k$b$N$G$9!#$3$l$O(B URL $B$H(B unix $B$N(B - $B%U%!%$%k%7%9%F%`$,N>J}$H$bBgJ8;z>.J8;z$r6hJL$9$k$b$N$G$"$k!"(B - $B$H$$$&$3$H$r%f!<%6$,CN$i$J$$%7%9%F%`$GLr$KN)$A$^$9!#$?$@$7!"(B - $B;~@^$N(B URL $BD{@5DxEY$G:Q$^$:!"(Bmod_speling $B$r$h$jB?$/;HMQ$9$k$H!"%5!<%P$K(B - $B$5$i$J$kIi2Y$,$+$+$j$^$9!#$9$Y$F$N!V@5$7$/$J$$!W%j%/%(%9%H$N8e$K(B - URL $B$N%j%@%$%l%/%H$H%/%i%$%"%s%H$+$i$N?7$7$$%j%/%(%9%H$,$/$k$3$H$K(B - $B$J$j$^$9$+$i!#(B</p> - - <p>$B%3%s%F%s%D$N0LCV$r7h$a$h$&$H$9$k$9$Y$F$N;n$_$,<:GT$9$k$H!"(B - Apache $B$O!"(BHTTP $B%9%F!<%?%9%3!<%I(B 404 (file not found) $B$H6&$K(B - $B%(%i!<%Z!<%8$rJV$7$^$9!#$3$N%(%i!<%Z!<%8$N304Q$O(B + <p>必ず、リクエストされた URL に対応するファイルがファイルシステムに + 無いという場合が発生します。これが起こるのにはいくつかの理由があります。 + 場合によっては、ドキュメントを別の場所に移動した結果であることがあります。 + この場合は、クライアントにリソースの新しい位置を知らせるために + <a href="#redirect">URL リダイレクション</a>を使うのが最善の方法です。 + そうすることによって、リソースは新しい位置に移動しているけれども、 + 古いブックマークやリンクが動作し続けるようにすることができます。</p> + + <p>"File Not Found" エラーのもう一つのよくある理由は、 + ブラウザへの直接入力や HTML リンクからの偶発的な URL の入力間違いです。 + Apache はこの問題を改善するために、<module>mod_speling</module> + モジュール (意図的な綴り間違い) + (訳注: 正しくは spelling) を提供しています。このモジュールが + 使用されているときは、"File Not Found" エラーを横取りして、 + 似たファイル名のリソースを探します。もし一つだけ見つかった場合は + mod_speling はクライアントに正しい位置を知らせるために HTTP リダイレクトを + 送ります。もし複数の「近い」ファイルが見つかった場合は、それら + 代替となりえるもののリストがクライアントに表示されます。</p> + + <p>mod_speling の非常に有用な機能は、大文字小文字を区別せずに + ファイル名を比較するものです。これは URL と unix の + ファイルシステムが両方とも大文字小文字を区別するものである、 + ということをユーザが知らないシステムで役に立ちます。ただし、 + 時折の URL 訂正程度で済まず、mod_speling をより多く使用すると、サーバに + さらなる負荷がかかります。すべての「正しくない」リクエストの後に + URL のリダイレクトとクライアントからの新しいリクエストがくることに + なりますから。</p> + + <p>コンテンツの位置を決めようとするすべての試みが失敗すると、 + Apache は、HTTP ステータスコード 404 (file not found) と共に + エラーページを返します。このエラーページの外観は <directive module="core">ErrorDocument</directive> - $B%G%#%l%/%F%#%V$G@)8f$5$l!"(B - <a href="custom-error.html">$B%+%9%?%`%(%i!<%l%9%]%s%9(B</a> $B$G(B - $B@bL@$5$l$F$$$k$h$&$K!"=@Fp$J@_Dj$r9T$J$&$3$H$,$G$-$^$9!#(B</p> + ディレクティブで制御され、 + <a href="custom-error.html">カスタムエラーレスポンス</a> で + 説明されているように、柔軟な設定を行なうことができます。</p> </section> </manualpage> diff --git a/docs/manual/vhosts/examples.xml.ja b/docs/manual/vhosts/examples.xml.ja index c1bcbd5411..7d90937961 100644 --- a/docs/manual/vhosts/examples.xml.ja +++ b/docs/manual/vhosts/examples.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:659902 (outdated) --> @@ -21,41 +21,41 @@ --> <manualpage metafile="examples.xml.meta"> -<parentdocument href="./">$B%P!<%A%c%k%[%9%H(B</parentdocument> - <title>$B%P!<%A%c%k%[%9%H$NNc(B</title> +<parentdocument href="./">バーチャルホスト</parentdocument> + <title>バーチャルホストの例</title> <summary> - <p>$B$3$NJ8=q$O!"%P!<%A%c%k%[%9%H$N@_Dj$N:]$K(B - $B$h$/$"$k<ALd$KEz$($k$b$N$G$9!#A[Dj$7$F$$$kBP>]$O(B <a - href="name-based.html">$BL>A0%Y!<%9(B</a> $B$d(B <a - href="ip-based.html">IP $B%Y!<%9(B</a> $B$N%P!<%A%c%k%[%9%H$r;H$C$F(B - $B0l$D$N%5!<%P$GJ#?t$N%&%'%V%5%$%H$r1?MQ$7$F$$$k>u67$G$9!#(B + <p>この文書は、バーチャルホストの設定の際に + よくある質問に答えるものです。想定している対象は <a + href="name-based.html">名前ベース</a> や <a + href="ip-based.html">IP ベース</a> のバーチャルホストを使って + 一つのサーバで複数のウェブサイトを運用している状況です。 </p> </summary> - <section id="purename"><title>$B0l$D$N(B IP $B%"%I%l%9$G$$$/$D$+$NL>A0%Y!<%9$N(B - $B%&%'%V%5%$%H$r<B9T$9$k(B</title> - - <p>$B%5!<%P$O(B IP $B%"%I%l%9$r0l$D3d$jEv$F$i$l$F$$$F!"(BDNS $B$G%^%7%s$K(B - $BJ#?t$NL>A0(B (CNAME) $B$,;XDj$5$l$F$$$^$9!#$3$N%^%7%s$G(B - <code>www.example.com</code> $B$H(B <code>www.example.org</code> - $B$N$?$a$N%&%'%V%5!<%P$r<B9T$5$;$?$$$H$7$^$9!#(B</p> - - <note><title>$BCm(B</title><p> - Apache $B%5!<%P$N@_Dj$G%P!<%A%c%k%[%9%H$N@_Dj$r$7$?$@$1$G!"(B - $BCN$i$J$$4V$K$=$N%[%9%HL>$KBP1~$9$k(B DNS $B$N%(%s%H%j$,(B - $B:n@.$5$l$?$j$O$7$^$;$s!#$=$N%5!<%P$N(B IP $B%"%I%l%9$K2r7h$5$l$k(B - $B$h$&$K(B DNS $B$KL>A0$rEPO?$7$J$1$l$P(B<em>$B$J$j$^$;$s(B</em>$B!#(B - $B$=$&$G$J$$$HC/$b$"$J$?$N%&%'%V%5%$%H$r8+$k$3$H$O$G$-$^$;$s!#(B - $B%m!<%+%k$G$N%F%9%H$N$?$a$K(B <code>hosts</code> $B%U%!%$%k$K(B - $B%(%s%H%j$rDI2C$9$k$3$H$b$G$-$^$9$,!"$3$N>l9g$O$=$N(B - hosts $B%(%s%H%j$N$"$k%^%7%s$+$i$7$+F0:n$7$^$;$s!#(B</p> + <section id="purename"><title>一つの IP アドレスでいくつかの名前ベースの + ウェブサイトを実行する</title> + + <p>サーバは IP アドレスを一つ割り当てられていて、DNS でマシンに + 複数の名前 (CNAME) が指定されています。このマシンで + <code>www.example.com</code> と <code>www.example.org</code> + のためのウェブサーバを実行させたいとします。</p> + + <note><title>注</title><p> + Apache サーバの設定でバーチャルホストの設定をしただけで、 + 知らない間にそのホスト名に対応する DNS のエントリが + 作成されたりはしません。そのサーバの IP アドレスに解決される + ように DNS に名前を登録しなければ<em>なりません</em>。 + そうでないと誰もあなたのウェブサイトを見ることはできません。 + ローカルでのテストのために <code>hosts</code> ファイルに + エントリを追加することもできますが、この場合はその + hosts エントリのあるマシンからしか動作しません。</p> </note> <example> - <title>$B%5!<%P@_Dj(B</title> + <title>サーバ設定</title> # Ensure that Apache listens on port 80<br /> Listen 80<br /> @@ -84,18 +84,18 @@ </VirtualHost> </example> - <p>$B%"%9%?%j%9%/$O$9$Y$F$N%"%I%l%9$K%^%C%A$7$^$9$N$G!"<g%5!<%P$O(B - $B%j%/%(%9%H$r07$$$^$;$s!#(B<code>www.example.com</code> $B$O(B - $B:G=i$K$"$k$?$a!"M%@h=g0L$O0lHV9b$/$J$j!"(B<cite>default</cite> $B$b$7$/$O(B - <cite>primary</cite> $B$N%5!<%P$H9M$($k$3$H$,$G$-$^$9!#$D$^$j!"%j%/%(%9%H$,(B - $B$I$N(B <code>ServerName</code> $B%G%#%l%/%F%#%V$K$b%^%C%A$7$J$$>l9g!"(B - $B0lHV:G=i$N(B <code>VirtualHost</code> $B$K$h$j07$o$l$^$9!#(B</p> + <p>アスタリスクはすべてのアドレスにマッチしますので、主サーバは + リクエストを扱いません。<code>www.example.com</code> は + 最初にあるため、優先順位は一番高くなり、<cite>default</cite> もしくは + <cite>primary</cite> のサーバと考えることができます。つまり、リクエストが + どの <code>ServerName</code> ディレクティブにもマッチしない場合、 + 一番最初の <code>VirtualHost</code> により扱われます。</p> - <note><title>$BCm(B</title> + <note><title>注</title> - <p><code>*</code> $B$r%7%9%F%`$N<B:]$N(B IP $B%"%I%l%9$KCV$-49$($k(B - $B$3$H$b$G$-$^$9!#$=$N>l9g$O(B <code>VirtualHost</code> $B$N0z?t$O(B - <code>NameVirtualHost</code> $B$N0z?t$HF1$8$K(B<em>$B$7$J$1$l$P$J$j$^$;$s(B + <p><code>*</code> をシステムの実際の IP アドレスに置き換える + こともできます。その場合は <code>VirtualHost</code> の引数は + <code>NameVirtualHost</code> の引数と同じに<em>しなければなりません </em>:</p> <example> @@ -105,37 +105,37 @@ # etc ... </example> - <p>$B$7$+$7!"(BIP $B%"%I%l%9$,M=B,IT2DG=$J%7%9%F%`(B - $B!=!=Nc$($P%W%m%P%$%@$+$iF0E*$K(B IP $B%"%I%l%9$r<hF@$7$F2?$i$+$N(B - $B%@%$%J%_%C%/(B DNS $B$r;H$C$F$$$k>l9g$J$I!=!=$K$*$$$F$O!"(B<code>*</code> - $B;XDj$O$5$i$KJXMx$G$9!#(B<code>*</code> $B$O$9$Y$F$N(B IP $B%"%I%l%9$K(B - $B%^%C%A$7$^$9$N$G!"$3$N@_Dj$K$7$F$*$1$P(B IP $B%"%I%l%9$,JQ99$5$l$F$b(B - $B@_DjJQ99$;$:$KF0:n$7$^$9!#(B</p> + <p>しかし、IP アドレスが予測不可能なシステム + ――例えばプロバイダから動的に IP アドレスを取得して何らかの + ダイナミック DNS を使っている場合など――においては、<code>*</code> + 指定はさらに便利です。<code>*</code> はすべての IP アドレスに + マッチしますので、この設定にしておけば IP アドレスが変更されても + 設定変更せずに動作します。</p> </note> - <p>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%F%#%s%0$G$O$[$\$9$Y$F$N>u67$G!"(B - $B>e5-$N@_Dj$G4uK>$N@_Dj$K$J$C$F$$$k$3$H$G$7$g$&!#(B - $B<B:]$3$N@_Dj$,F0:n$7$J$$$N$O!"(BIP $B%"%I%l%9$d%]!<%H$N0c$$$K$h$C$F(B - $B0c$&%3%s%F%s%D$rAw$k$H$-$@$1$G$9!#(B</p> + <p>名前ベースのバーチャルホスティングではほぼすべての状況で、 + 上記の設定で希望の設定になっていることでしょう。 + 実際この設定が動作しないのは、IP アドレスやポートの違いによって + 違うコンテンツを送るときだけです。</p> </section> - <section id="twoips"><title>$BJ#?t$N(B IP $B%"%I%l%9$N$"$k%[%9%H$GL>A0%Y!<%9$N(B - $B%[%9%F%#%s%0$r9T$J$&(B</title> + <section id="twoips"><title>複数の IP アドレスのあるホストで名前ベースの + ホスティングを行なう</title> <note> - <title>$BCm(B</title><p>$B$3$3$G@bL@$5$l$F$$$kJ}K!$O(B IP $B%"%I%l%9$,(B - $B2?8D$"$C$F$bF1MM$K$G$-$^$9!#(B</p> + <title>注</title><p>ここで説明されている方法は IP アドレスが + 何個あっても同様にできます。</p> </note> - <p>$B%5!<%P$K$OFs$D(B IP $B%"%I%l%9$,$D$$$F$$$^$9!#0l$DL\(B - (<code>172.20.30.40</code>) $B$G$O<g%5!<%P(B - <code>server.domain.com</code> $B$r07$$!"$b$&0lJ}(B - (<code>172.20.30.50</code>) $B$G$OFs$D$+$=$l0J>e$N?t$N(B - $B%P!<%A%c%k%[%9%H$r07$$$^$9!#(B</p> + <p>サーバには二つ IP アドレスがついています。一つ目 + (<code>172.20.30.40</code>) では主サーバ + <code>server.domain.com</code> を扱い、もう一方 + (<code>172.20.30.50</code>) では二つかそれ以上の数の + バーチャルホストを扱います。</p> <example> - <title>$B%5!<%P$N@_Dj(B</title> + <title>サーバの設定</title> Listen 80<br /> <br /> @@ -167,29 +167,29 @@ </VirtualHost> </example> - <p><code>172.20.30.50</code> $B0J30$N%"%I%l%9$X$N%j%/%(%9%H$O<g%5!<%P(B - $B$,07$$$^$9!#(B<code>172.20.30.50</code> $B$X$N!"L$CN$N%[%9%HL>$^$?$O(B - <code>Host:</code> $B%X%C%@$J$7$N%j%/%(%9%H$O(B <code>www.example.com</code> - $B$,07$$$^$9!#(B</p> + <p><code>172.20.30.50</code> 以外のアドレスへのリクエストは主サーバ + が扱います。<code>172.20.30.50</code> への、未知のホスト名または + <code>Host:</code> ヘッダなしのリクエストは <code>www.example.com</code> + が扱います。</p> </section> - <section id="intraextra"><title>$B0c$&(B IP $B%"%I%l%9(B ($BNc$($P!"FbIt$H30It%"%I%l%9(B) - $B$GF1$8%3%s%F%s%D$rAw$k(B</title> + <section id="intraextra"><title>違う IP アドレス (例えば、内部と外部アドレス) + で同じコンテンツを送る</title> - <p>$B%5!<%P%^%7%s$O(B IP $B%"%I%l%9$rFs$D(B (<code>192.168.1.1</code> - $B$H(B <code>172.20.30.40</code>) $B;}$C$F$$$^$9!#$3$N%^%7%s$OFbIt(B - ($B%$%s%H%i%M%C%H(B) $B$H(B $B30It(B ($B%$%s%?!<%M%C%H(B) $B$N%M%C%H%o!<%/$N4V$K(B - $B$"$j$^$9!#(B<code>server.example.com</code> $B$O%M%C%H%o!<%/$N30$+$i$O(B - $B30It%"%I%l%9(B (<code>172.20.30.40</code>) $B$H$7$F2r7h$5$l$^$9$,!"(B - $B%M%C%H%o!<%/$NCf$+$i$OFbIt%"%I%l%9(B (<code>192.168.1.1</code>) - $B$H$7$F2r7h$5$l$^$9!#(B</p> + <p>サーバマシンは IP アドレスを二つ (<code>192.168.1.1</code> + と <code>172.20.30.40</code>) 持っています。このマシンは内部 + (イントラネット) と 外部 (インターネット) のネットワークの間に + あります。<code>server.example.com</code> はネットワークの外からは + 外部アドレス (<code>172.20.30.40</code>) として解決されますが、 + ネットワークの中からは内部アドレス (<code>192.168.1.1</code>) + として解決されます。</p> - <p><code>VirtualHost</code> $B0l$D$@$1$G%5!<%P$,FbIt$N%j%/%(%9%H$H(B - $B30It$N%j%/%(%9%H$NN>J}$KF1$8%3%s%F%s%D$G1~Ez$9$k$h$&$K$G$-$^$9!#(B</p> + <p><code>VirtualHost</code> 一つだけでサーバが内部のリクエストと + 外部のリクエストの両方に同じコンテンツで応答するようにできます。</p> <example> - <title>$B%5!<%P$N@_Dj(B</title> + <title>サーバの設定</title> NameVirtualHost 192.168.1.1<br /> NameVirtualHost 172.20.30.40<br /> @@ -203,29 +203,29 @@ </VirtualHost> </example> - <p>$B$3$l$G$I$A$i$N%M%C%H%o!<%/$+$i$N%j%/%(%9%H$bF1$8(B <code>VirtualHost</code> - $B$G07$o$l$k$h$&$K$J$j$^$9!#(B</p> + <p>これでどちらのネットワークからのリクエストも同じ <code>VirtualHost</code> + で扱われるようになります。</p> - <note><title>$BCm(B:</title><p>$BFbIt%M%C%H%o!<%/$G$O40A4$J%[%9%HL>$N(B - <code>server.example.com</code> $B$NBe$o$j$K!"C1$K(B <code>server</code> - $B$r;H$&$3$H$,$G$-$^$9!#(B</p> + <note><title>注:</title><p>内部ネットワークでは完全なホスト名の + <code>server.example.com</code> の代わりに、単に <code>server</code> + を使うことができます。</p> - <p>$B>e$NNc$G$O!"(BIP $B%"%I%l%9$N%j%9%H$r!"$9$Y$F$N%"%I%l%9$K(B - $BF1$8%3%s%F%s%D$G1~Ez$9$k(B <code>*</code> $B$KCV$-49$($i$l$^$9!#(B</p> + <p>上の例では、IP アドレスのリストを、すべてのアドレスに + 同じコンテンツで応答する <code>*</code> に置き換えられます。</p> </note> </section> - <section id="port"><title>$B0c$&%]!<%H$G0c$&%5%$%H$r1?1D$9$k(B</title> + <section id="port"><title>違うポートで違うサイトを運営する</title> - <p>$BF1$8(B IP $B$KJ#?t$N%I%a%$%s$,$"$j!"$5$i$KJ#?t$N%]!<%H$r;H$C$F(B - $B%j%/%(%9%H$r07$$$?$$$H$-$,$"$j$^$9!#(B"NameVirtualHost" $B%?%0$NCf$G(B - $B%]!<%H$rDj5A$9$k$3$H$G!"$3$l$rF0:n$5$;$i$l$^$9!#(B - NameVirtualHost name:port $BL5$7$d(B Listen $B%G%#%l%/%F%#%V$G(B - <VirtualHost name:port> $B$r;H$*$&$H$7$F$b!"$=$N@_Dj$OF0:n$7$^$;$s!#(B</p> + <p>同じ IP に複数のドメインがあり、さらに複数のポートを使って + リクエストを扱いたいときがあります。"NameVirtualHost" タグの中で + ポートを定義することで、これを動作させられます。 + NameVirtualHost name:port 無しや Listen ディレクティブで + <VirtualHost name:port> を使おうとしても、その設定は動作しません。</p> <example> - <title>$B%5!<%P$N@_Dj(B</title> + <title>サーバの設定</title> Listen 80<br /> Listen 8080<br /> @@ -264,14 +264,14 @@ </section> - <section id="ip"><title>IP $B%Y!<%9$N%P!<%A%c%k%[%9%F%#%s%0(B</title> + <section id="ip"><title>IP ベースのバーチャルホスティング</title> - <p>$B%5!<%P$O(B <code>www.example.com</code> $B$H(B <code>www.example.org</code> - $B$K$=$l$>$l2r7h$5$l$k!"Fs$D$N(B IP $B%"%I%l%9(B (<code>172.20.30.40</code> $B$H(B - <code>172.20.30.50</code>) $B$,$"$j$^$9!#(B</p> + <p>サーバは <code>www.example.com</code> と <code>www.example.org</code> + にそれぞれ解決される、二つの IP アドレス (<code>172.20.30.40</code> と + <code>172.20.30.50</code>) があります。</p> <example> - <title>$B%5!<%P$N@_Dj(B</title> + <title>サーバの設定</title> Listen 80<br /> <br /> @@ -290,22 +290,22 @@ </VirtualHost> </example> - <p><code><VirtualHost></code> $B%G%#%l%/%F%#%V$N$I$l$G$b(B - $B;XDj$5$l$F$$$J$$%"%I%l%9(B ($BNc$($P(B <code>localhost</code>) $B$O!"(B - $B<g%5!<%P$,$"$l$P$=$3$K9T$-$^$9!#(B</p> + <p><code><VirtualHost></code> ディレクティブのどれでも + 指定されていないアドレス (例えば <code>localhost</code>) は、 + 主サーバがあればそこに行きます。</p> </section> - <section id="ipport"><title>$B%]!<%H%Y!<%9$H(B IP $B%Y!<%9$N:.$6$C$?(B - $B%P!<%A%c%k%[%9%H(B</title> + <section id="ipport"><title>ポートベースと IP ベースの混ざった + バーチャルホスト</title> - <p>$B%5!<%P%^%7%s$O$=$l$>$l(B <code>www.example.com</code> $B$H(B - <code>www.example.org</code> $B$K$=$l$>$l2r7h$5$l$k!"(BIP $B%"%I%l%9$rFs$D(B - (<code>172.20.30.40</code> $B$H(B <code>172.20.30.50</code>) $B;}$C$F$$$^$9!#(B - $B$I$A$i$b%]!<%H(B 80 $B$H(B 8080 $B$G%[%9%H$rAv$i$;$^$9!#(B</p> + <p>サーバマシンはそれぞれ <code>www.example.com</code> と + <code>www.example.org</code> にそれぞれ解決される、IP アドレスを二つ + (<code>172.20.30.40</code> と <code>172.20.30.50</code>) 持っています。 + どちらもポート 80 と 8080 でホストを走らせます。</p> <example> - <title>$B%5!<%P$N@_Dj(B</title> + <title>サーバの設定</title> Listen 172.20.30.40:80<br /> Listen 172.20.30.40:8080<br /> @@ -343,14 +343,14 @@ </section> - <section id="mixed"><title>$BL>A0%Y!<%9$H(B IP $B%Y!<%9$r:.$<$?(B - $B%P!<%A%c%k%[%9%H(B</title> + <section id="mixed"><title>名前ベースと IP ベースを混ぜた + バーチャルホスト</title> - <p>$B$$$/$D$+$N%^%7%s$G$OL>A0%Y!<%9$N!"$=$NB>$G$O(B IP $B%Y!<%9$N%P!<%A%c%k(B - $B%[%9%H$r$7$^$9!#(B</p> + <p>いくつかのマシンでは名前ベースの、その他では IP ベースのバーチャル + ホストをします。</p> <example> - <title>$B%5!<%P$N@_Dj(B</title> + <title>サーバの設定</title> Listen 80<br /> <br /> @@ -395,14 +395,14 @@ </section> - <section id="proxy"><title><code>Virtual_host</code> $B$H(B - mod_proxy $B$rJ;MQ$9$k(B</title> + <section id="proxy"><title><code>Virtual_host</code> と + mod_proxy を併用する</title> - <p>$B<!$NNc$O!"%U%m%s%HB&$N%P!<%A%c%k%[%9%H$GB>$N%^%7%s$X%W%m%/%7$7$^$9!#(B - $BNc$G$O(B <code>192.168.111.2</code> $B$N%^%7%s$G$O%P!<%A%c%k%[%9%HL>$O(B - $BF1$8L>A0$G@_Dj$5$l$F$$$^$9!#J#?t$N%[%9%HL>$r0lBf$N%^%7%s$K%W%m%/%7$9$k(B - $B>l9g$O!"(B<directive module="mod_proxy">ProxyPreserveHost On</directive> - $B%G%#%l%/%F%#%V$r;H$C$F!"4uK>$N%[%9%HL>$rEO$;$k$h$&$K$J$j$^$9!#(B + <p>次の例は、フロント側のバーチャルホストで他のマシンへプロクシします。 + 例では <code>192.168.111.2</code> のマシンではバーチャルホスト名は + 同じ名前で設定されています。複数のホスト名を一台のマシンにプロクシする + 場合は、<directive module="mod_proxy">ProxyPreserveHost On</directive> + ディレクティブを使って、希望のホスト名を渡せるようになります。 </p> <example> @@ -416,18 +416,18 @@ </section> - <section id="default"><title><code>_default_</code> $B$N%P!<%A%c%k%[%9%H$r(B - $B;H$&(B</title> + <section id="default"><title><code>_default_</code> のバーチャルホストを + 使う</title> - <section id="defaultallports"><title>$B$9$Y$F$N%]!<%H$KBP$9$k(B - <code>_default_</code> $B%P!<%A%c%k%[%9%H(B</title> + <section id="defaultallports"><title>すべてのポートに対する + <code>_default_</code> バーチャルホスト</title> - <p>$BL$;XDj$N(B IP $B%"%I%l%9$H%]!<%H!"(B<em>$B$D$^$j(B</em>$BB>$N%P!<%A%c%k%[%9%H$K(B - $B;H$o$l$F$$$J$$%"%I%l%9$H%]!<%H$NAH$_9g$o$;!"$X$N(B<em>$B$9$Y$F$N(B</em>$B%j%/%(%9%H$r(B - $B<u$1<h$j$^$9!#(B</p> + <p>未指定の IP アドレスとポート、<em>つまり</em>他のバーチャルホストに + 使われていないアドレスとポートの組み合わせ、への<em>すべての</em>リクエストを + 受け取ります。</p> <example> - <title>$B%5!<%P$N@_Dj(B</title> + <title>サーバの設定</title> <VirtualHost _default_:*><br /> <indent> @@ -436,30 +436,30 @@ </VirtualHost> </example> - <p>$B$3$N$h$&$K%o%$%k%I%+!<%I$N%]!<%H$G%G%U%)%k%H$N%P!<%A%c%k%[%9%H$r(B - $B;XDj$9$k$H!"<g%5!<%P$K%j%/%(%9%H$,9T$/$N$rKI$2$^$9!#(B</p> + <p>このようにワイルドカードのポートでデフォルトのバーチャルホストを + 指定すると、主サーバにリクエストが行くのを防げます。</p> - <p>$B%G%U%)%k%H$N%P!<%A%c%k%[%9%H$OL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$K(B - $B;H$o$l$F$$$k%"%I%l%9$H%]!<%H$NAH$KAw$i$l$?%j%/%(%9%H$r07$&$3$H$O(B - $B$"$j$^$;$s!#%j%/%(%9%H$,ITL@$J(B <code>Host:</code> $B%X%C%@$d$=$N(B - $B%X%C%@$,$J$+$C$?$j$9$k>l9g$O4pK\L>A0%Y!<%9%P!<%A%c%k%[%9%H(B ($B$=$N(B - $B%"%I%l%9$H%]!<%H$G@_Dj%U%!%$%kCf$G:G=i$N%P!<%A%c%k%[%9%H(B) $B$K$h$j(B - $B07$o$l$^$9!#(B</p> + <p>デフォルトのバーチャルホストは名前ベースのバーチャルホストに + 使われているアドレスとポートの組に送られたリクエストを扱うことは + ありません。リクエストが不明な <code>Host:</code> ヘッダやその + ヘッダがなかったりする場合は基本名前ベースバーチャルホスト (その + アドレスとポートで設定ファイル中で最初のバーチャルホスト) により + 扱われます。</p> - <p>$B$I$s$J%j%/%(%9%H$G$b(B <directive module="mod_alias">AliasMatch</directive> - $B$d(B <directive module="mod_rewrite">RewriteRule</directive> $B$r;H$C$F(B - $BC10l$N>pJs%Z!<%8(B ($B$d%9%/%j%W%H(B) $B$K=q$-49$($k$3$H$,$G$-$^$9!#(B</p> + <p>どんなリクエストでも <directive module="mod_alias">AliasMatch</directive> + や <directive module="mod_rewrite">RewriteRule</directive> を使って + 単一の情報ページ (やスクリプト) に書き換えることができます。</p> </section> - <section id="defaultdifferentports"><title>$B0c$&%]!<%H$N$?$a$N(B - <code>_default_</code> $B%P!<%A%c%k%[%9%H(B</title> + <section id="defaultdifferentports"><title>違うポートのための + <code>_default_</code> バーチャルホスト</title> - <p>$B0l$D$a$N@_Dj$H$[$\F1$8$G$9$,!"%5!<%P$OJ#?t$N%]!<%H$r(B listen $B$7$F$*$j!"(B - 80 $BHV%]!<%H$KBP$7$FFs$D$a$N(B <code>_default_</code> $B%P!<%A%c%k%[%9%H$r(B - $B@_Dj$7$?$$>l9g$G$9!#(B</p> + <p>一つめの設定とほぼ同じですが、サーバは複数のポートを listen しており、 + 80 番ポートに対して二つめの <code>_default_</code> バーチャルホストを + 設定したい場合です。</p> <example> - <title>$B%5!<%P$N@_Dj(B</title> + <title>サーバの設定</title> <VirtualHost _default_:80><br /> <indent> @@ -476,20 +476,20 @@ </VirtualHost> </example> - <p>80 $BHV%]!<%H$N%G%U%)%k%H%P!<%A%c%k%[%9%H(B ($B%o%$%k%I%+!<%I%]!<%H$N(B - $B%G%U%)%k%H%P!<%A%c%k%[%9%H$h$j$bA0$K=q$+$l$F$$$J$1$l$P(B<em>$B$J$j$^$;$s(B</em>) $B$O(B - $BL$;XDj$N(B IP $B%"%I%l%9$KAw$i$l$?$9$Y$F$N%j%/%(%9%H$r07$$$^$9!#(B - $B<g%5!<%P$O%j%/%(%9%H$r07$$$^$;$s!#(B</p> + <p>80 番ポートのデフォルトバーチャルホスト (ワイルドカードポートの + デフォルトバーチャルホストよりも前に書かれていなければ<em>なりません</em>) は + 未指定の IP アドレスに送られたすべてのリクエストを扱います。 + 主サーバはリクエストを扱いません。</p> </section> - <section id="defaultoneport"><title>$B0l$D$N%]!<%H$KBP$7$F$@$1$N(B - <code>_default_</code> $B%P!<%A%c%k%[%9%H(B</title> + <section id="defaultoneport"><title>一つのポートに対してだけの + <code>_default_</code> バーチャルホスト</title> - <p>80 $BHV%]!<%H$K$O%G%U%)%k%H$N%P!<%A%c%k%[%9%H$,I,MW$G!"B>$N(B - $B%P!<%A%c%k%[%9%H$O%G%U%)%k%H$,I,MW$J$$>l9g$G$9!#(B</p> + <p>80 番ポートにはデフォルトのバーチャルホストが必要で、他の + バーチャルホストはデフォルトが必要ない場合です。</p> <example> - <title>$B%5!<%P$N@_Dj(B</title> + <title>サーバの設定</title> <VirtualHost _default_:80><br /> DocumentRoot /www/default<br /> @@ -497,28 +497,28 @@ </VirtualHost> </example> - <p>80 $BHV%]!<%H$X$N%"%I%l%9L$;XDj$N%j%/%(%9%H$O%G%U%)%k%H$N%P!<%A%c%k(B - $B%[%9%H$+$iAw$i$l$^$9!#B>$NL$;XDj$N%"%I%l%9$H%]!<%H$X$N%j%/%(%9%H$O(B - $B<g%5!<%P$+$iAw$i$l$^$9!#(B</p> + <p>80 番ポートへのアドレス未指定のリクエストはデフォルトのバーチャル + ホストから送られます。他の未指定のアドレスとポートへのリクエストは + 主サーバから送られます。</p> </section> </section> - <section id="migrate"><title>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$+$i(B IP $B%Y!<%9$N(B - $B%P!<%A%c%k%[%9%H$K0\9T$9$k(B</title> + <section id="migrate"><title>名前ベースのバーチャルホストから IP ベースの + バーチャルホストに移行する</title> - <p>$B%[%9%HL>$,L>A0(B <code>www.example.org</code> $B$N%P!<%A%c%k%[%9%H(B - (<a href="#name">$BL>A0%Y!<%9(B</a>$B$NNc$N(B 2 $BHVL\$N@_Dj(B) $B$,@lMQ$N(B IP $B%"%I%l%9$r(B - $BF@$?$H$7$^$9!#L>A0%Y!<%9$N%P!<%A%c%k%[%9%H$N8E$$(B IP $B%"%I%l%9$r(B - $B%-%c%C%7%e$7$F$$$k%M!<%`%5!<%P$d%W%m%-%7$N$?$a$K0\9T4|4VCf$ON>J}$N(B - $B%P!<%A%c%k%[%9%H$rDs6!$7$?$$$H$7$^$9!#(B</p> + <p>ホスト名が名前 <code>www.example.org</code> のバーチャルホスト + (<a href="#name">名前ベース</a>の例の 2 番目の設定) が専用の IP アドレスを + 得たとします。名前ベースのバーチャルホストの古い IP アドレスを + キャッシュしているネームサーバやプロキシのために移行期間中は両方の + バーチャルホストを提供したいとします。</p> - <p>$BEz$O4JC1$G$9!#C1$K?7$7$$(B IP $B%"%I%l%9(B (<code>172.20.30.50</code>) - $B$r(B <code>VirtualHost</code> $B%G%#%l%/%F%#%V$KDI2C$9$k$3$H$G(B - $B$G$-$^$9!#(B</p> + <p>答は簡単です。単に新しい IP アドレス (<code>172.20.30.50</code>) + を <code>VirtualHost</code> ディレクティブに追加することで + できます。</p> <example> - <title>$B%5!<%P@_Dj(B</title> + <title>サーバ設定</title> Listen 80<br /> ServerName www.example.com<br /> @@ -544,27 +544,27 @@ </VirtualHost> </example> - <p>$B$3$N%P!<%A%c%k%[%9%H$O?7$7$$%"%I%l%9(B (IP $B%Y!<%9$N%P!<%A%c%k%[%9%H$H$7$F(B) - $B$H8E$$%"%I%l%9(B($BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$H$7$F(B) $B$NN>J}$+$i(B - $B%"%/%;%9$G$-$^$9!#(B</p> + <p>このバーチャルホストは新しいアドレス (IP ベースのバーチャルホストとして) + と古いアドレス(名前ベースのバーチャルホストとして) の両方から + アクセスできます。</p> </section> - <section id="serverpath"><title><code>ServerPath</code> $B%G%#%l%/%F%#%V$r(B - $B;H$&(B</title> + <section id="serverpath"><title><code>ServerPath</code> ディレクティブを + 使う</title> - <p>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$,Fs$D$"$k%5!<%P$,$"$k$H$7$^$9!#(B - $B@5$7$$%P!<%A%c%k%[%9%H$rF@$k$?$a$K$O%/%i%$%"%s%H$O@5$7$$(B - <code>Host:</code> $B%X%C%@$rAw$i$J$1$l$P$J$j$^$;$s!#(B - $B8E$$(B HTTP/1.0 $B$O$=$N$h$&$J%X%C%@$rAw$i$J$$$N$G!"(BApache $B$O%/%i%$%"%s%H$,(B - $B$I$N%P!<%A%c%k%[%9%H$r0U?^$7$?$N$+$5$C$Q$j$o$+$j$^$;$s(B - ($B$J$N$G!"<g%P!<%A%c%k%[%9%H$G%j%/%(%9%H$r07$$$^$9(B)$B!#(B - $B2DG=$J8B$j$N2<0L8_49@-$rF@$k$?$a!"L>A0%Y!<%9$N%P!<%A%c%k%[%9%H$N(B - URL $B@\F,<-$X$N%j%s%/$N=q$+$l$?%Z!<%8$rJV$9!"(B - $B<g%P!<%A%c%k%[%9%H$,:n@.$5$l$^$9!#(B</p> + <p>名前ベースのバーチャルホストが二つあるサーバがあるとします。 + 正しいバーチャルホストを得るためにはクライアントは正しい + <code>Host:</code> ヘッダを送らなければなりません。 + 古い HTTP/1.0 はそのようなヘッダを送らないので、Apache はクライアントが + どのバーチャルホストを意図したのかさっぱりわかりません + (なので、主バーチャルホストでリクエストを扱います)。 + 可能な限りの下位互換性を得るため、名前ベースのバーチャルホストの + URL 接頭辞へのリンクの書かれたページを返す、 + 主バーチャルホストが作成されます。</p> <example> - <title>$B%5!<%P$N@_Dj(B</title> + <title>サーバの設定</title> NameVirtualHost 172.20.30.40<br /> <br /> @@ -601,22 +601,22 @@ </VirtualHost> </example> - <p><directive module="core">ServerPath</directive> $B%G%#%l%/%F%#%V$N@_Dj$K(B - $B$h$j!"(BURL <code>http://www.sub1.domain.tld/sub1/</code> $B$O(B - <em>$B>o$K(B</em> sub1-vhost $B$K$h$j07$o$l$^$9!#(BURL - <code>http://www.sub1.domain.tld/</code> $B$X$N%j%/%(%9%H$O(B - $B%/%i%$%"%s%H$,@5$7$$(B <code>Host:</code> $B%X%C%@$rAw$C$?$H$-$K$N$_(B - sub1-vhost $B$+$iAw$i$l$^$9!#(B<code>Host:</code> $B%X%C%@$,$J$1$l$P(B - $B%/%i%$%"%s%H$O<g%[%9%H$N>pJs%Z!<%8$rF@$^$9!#(B</p> - - <p>$B0l$D4qL/$JF0:n$r$9$kE@$,$"$k$3$H$O3P$($F$*$$$F$/$@$5$$!#(B - <code>http://www.sub2.domain.tld/sub1/</code> $B$X$N%j%/%(%9%H$b(B - <code>Host:</code> $B%X%C%@$,$J$1$l$P(B sub1-vhost $B$K$h$j07$o$l$^$9!#(B</p> - - <p>$B@5$7$$(B <code>Host:</code> $B%X%C%@$rAw$C$?%/%i%$%"%s%H$O$I$A$i$N(B - URL$B!"(B<em>$B$D$^$j(B</em>$B@\F,<-$,$"$kJ}$bL5$$J}$b;H$($k$h$&$K(B - <directive module="mod_rewrite">RewriteRule</directive> $B%G%#%l%/%F%#%V$,(B - $B;H$o$l$F$$$^$9!#(B</p> + <p><directive module="core">ServerPath</directive> ディレクティブの設定に + より、URL <code>http://www.sub1.domain.tld/sub1/</code> は + <em>常に</em> sub1-vhost により扱われます。URL + <code>http://www.sub1.domain.tld/</code> へのリクエストは + クライアントが正しい <code>Host:</code> ヘッダを送ったときにのみ + sub1-vhost から送られます。<code>Host:</code> ヘッダがなければ + クライアントは主ホストの情報ページを得ます。</p> + + <p>一つ奇妙な動作をする点があることは覚えておいてください。 + <code>http://www.sub2.domain.tld/sub1/</code> へのリクエストも + <code>Host:</code> ヘッダがなければ sub1-vhost により扱われます。</p> + + <p>正しい <code>Host:</code> ヘッダを送ったクライアントはどちらの + URL、<em>つまり</em>接頭辞がある方も無い方も使えるように + <directive module="mod_rewrite">RewriteRule</directive> ディレクティブが + 使われています。</p> </section> </manualpage> diff --git a/docs/manual/vhosts/fd-limits.xml.ja b/docs/manual/vhosts/fd-limits.xml.ja index 2316905549..b8f29feec8 100644 --- a/docs/manual/vhosts/fd-limits.xml.ja +++ b/docs/manual/vhosts/fd-limits.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 659902 --> @@ -21,52 +21,52 @@ --> <manualpage metafile="fd-limits.xml.meta"> -<parentdocument href="./">$B%P!<%A%c%k%[%9%H(B</parentdocument> - <title>$B%U%!%$%k5-=R;R$N8B3&(B</title> +<parentdocument href="./">バーチャルホスト</parentdocument> + <title>ファイル記述子の限界</title> <summary> - <p>$B$?$/$5$s$N%P!<%A%c%k%[%9%H$r1?MQ$9$k>l9g!"$b$7!"(B - $B3F%P!<%A%c%k%[%9%H$4$H$K0[$J$k%m%0%U%!%$%k$,;XDj$7$F$"$k$H!"(B - Apache $B$,%U%!%$%k5-=R;R(B (<cite>$B%U%!%$%k%O%s%I%k(B</cite>$B$H$b8F$P$l$^$9(B) - $B$r;H$$@Z$C$F$7$^$&$3$H$,$"$j$^$9!#(BApache $B$,;HMQ$9$k%U%!%$%k(B - $B5-=R;R$N?t$O!"3F%(%i!<%m%0%U%!%$%k$K$D$-(B 1 $B$D!"B>$N%m%0%U%!%$%k$N(B - $B%G%#%l%/%F%#%V$K$D$-(B 1 $B$D!"$5$i$KFbIt$G;HMQ$9$k(B 10 $B$+$i(B 20$B!"(B - $B$N9g7W$K$J$j$^$9!#(BUnix $B%*%Z%l!<%F%#%s%0%7%9%F%`$G$O%W%m%;%9$4$H$K(B - $B;HMQ2DG=$J%U%!%$%k5-=R;R$N?t$r@)8B$7$F$$$^$9!#$?$$$F$$$N>l9g$O(B 64 $B$G!"(B - $BIaDL$OBg$-$JCM$N%O!<%I%j%_%C%H$^$GA}$d$9$3$H$,$G$-$^$9!#(B</p> + <p>たくさんのバーチャルホストを運用する場合、もし、 + 各バーチャルホストごとに異なるログファイルが指定してあると、 + Apache がファイル記述子 (<cite>ファイルハンドル</cite>とも呼ばれます) + を使い切ってしまうことがあります。Apache が使用するファイル + 記述子の数は、各エラーログファイルにつき 1 つ、他のログファイルの + ディレクティブにつき 1 つ、さらに内部で使用する 10 から 20、 + の合計になります。Unix オペレーティングシステムではプロセスごとに + 使用可能なファイル記述子の数を制限しています。たいていの場合は 64 で、 + 普通は大きな値のハードリミットまで増やすことができます。</p> - <p>Apache $B$OI,MW$K1~$8$F>e8B$r3HBg$7$h$&$H;n$_$^$9$,!"(B - $B0J2<$N$h$&$J>l9g$K$O$&$^$/$$$+$J$$$+$b$7$l$^$;$s!#(B</p> + <p>Apache は必要に応じて上限を拡大しようと試みますが、 + 以下のような場合にはうまくいかないかもしれません。</p> <ol> - <li>$BMxMQ$7$F$$$k%7%9%F%`$G(B <code>setrlimit()</code> - $B%7%9%F%`%3!<%k$,Ds6!$5$l$F$$$J$$!#(B</li> + <li>利用しているシステムで <code>setrlimit()</code> + システムコールが提供されていない。</li> - <li>$B%7%9%F%`>e$G(B <code>setrlimit</code>(RLIMIT_NOFILE) $B$,F0:n$7$J$$(B - ($B$?$H$($P(B Solaris 2.3 $B$N$h$&$K(B)$B!#(B</li> + <li>システム上で <code>setrlimit</code>(RLIMIT_NOFILE) が動作しない + (たとえば Solaris 2.3 のように)。</li> - <li>$BMW5a$5$l$k%U%!%$%k5-=R;R$N?t$,(B - $B%O!<%I%j%_%C%H$rD6$($F$7$^$&!#(B</li> + <li>要求されるファイル記述子の数が + ハードリミットを超えてしまう。</li> - <li>$B%7%9%F%`$K%U%!%$%k5-=R;R$K4X$7$FJL$N@)8B$,B8:_$7$F$7$^$C$F$$$k!#(B - $B$?$H$($P!"(Bstdio $B%9%H%j!<%`$G$O%U%!%$%k5-=R;R$r(B 256 $B0J>e;H$($J$$(B - (Solaris 2)$B!"$J$I!#(B</li> + <li>システムにファイル記述子に関して別の制限が存在してしまっている。 + たとえば、stdio ストリームではファイル記述子を 256 以上使えない + (Solaris 2)、など。</li> </ol> - <p>$BLdBj$,H/@8$7$?;~$K<h$jF@$kBP=hJ}K!$O<!$N$H$*$j(B:</p> + <p>問題が発生した時に取り得る対処方法は次のとおり:</p> <ul> - <li>$B%m%0%U%!%$%k$N?t$r8:$i$9!#(B<directive type="section" + <li>ログファイルの数を減らす。<directive type="section" module="core">VirtualHost</directive> - $B%;%/%7%g%s$G%m%0%U%!%$%k$r;XDj$;$:!"%a%$%s$N%m%0%U%!%$%k$K$N$_5-O?$9$k!#(B - ($B$3$l$K4X$9$k>\$7$$>pJs$O0J2<$N(B<a - href="#splitlogs">$B%m%0%U%!%$%k$NJ,3d(B</a>$B$rFI$s$G$/$@$5$$!#(B)</li> + セクションでログファイルを指定せず、メインのログファイルにのみ記録する。 + (これに関する詳しい情報は以下の<a + href="#splitlogs">ログファイルの分割</a>を読んでください。)</li> <li> - $B$b$7!"A0=R$N(B 1 $B$^$?$O(B 2 $B$N>l9g$G$"$l$P!"(B - Apache $B$r5/F0$9$kA0$K%U%!%$%k5-=R;R$rA}$d$7$^$9!#(B - $B$?$H$($P<!$N$h$&$J%9%/%j%W%H$r;H$$$^$9!#(B + もし、前述の 1 または 2 の場合であれば、 + Apache を起動する前にファイル記述子を増やします。 + たとえば次のようなスクリプトを使います。 <example> <code>#!/bin/sh<br /> @@ -77,44 +77,44 @@ </ul> </summary> -<section id="splitlogs"><title>$B%m%0%U%!%$%k$NJ,3d(B</title> +<section id="splitlogs"><title>ログファイルの分割</title> -<p>$BJ#?t$N%P!<%A%c%k%[%9%H$N%m%0$rF1$8%m%0%U%!%$%k$K<}=8$7$h$&$H$7$F$$$k$H$-$K$O!"(B -$B3F%P!<%A%c%k%[%9%H$K$D$$$FE}7WE*$J2r@O$r<B9T$9$k$?$a$K8e$G%m%0%U%!%$%k$r(B -$BJ,3d$7$?$/$J$k$+$b$7$l$^$;$s!#$3$l$O0J2<$N$h$&$K$7$F<B8=$G$-$^$9!#(B</p> +<p>複数のバーチャルホストのログを同じログファイルに収集しようとしているときには、 +各バーチャルホストについて統計的な解析を実行するために後でログファイルを +分割したくなるかもしれません。これは以下のようにして実現できます。</p> -<p>$B$^$:!"%P!<%A%c%k%[%9%H$N>pJs$r%m%0$N%(%s%H%j$KDI2C$9$kI,MW$,$"$j$^$9!#(B -$B$3$l$O(B <directive module="mod_log_config">LogFormat</directive> -$B%G%#%l%/%F%#%V$N(B <code>%v</code> $BJQ?t$r;H$&$3$H$G$G$-$^$9!#(B -$B$3$l$r%m%0$N%U%)!<%^%C%HJ8;zNs$N@hF,$KDI2C$7$^$9(B:</p> +<p>まず、バーチャルホストの情報をログのエントリに追加する必要があります。 +これは <directive module="mod_log_config">LogFormat</directive> +ディレクティブの <code>%v</code> 変数を使うことでできます。 +これをログのフォーマット文字列の先頭に追加します:</p> <example> LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost<br /> CustomLog logs/multiple_vhost_log vhost </example> -<p>$B$3$l$O(B common log format $B$N%m%0$r:n@.$7$^$9$,!"$=$l$>$l$N9T$N@hF,$K(B -$B@55,2=$5$l$?%P!<%A%c%k%[%9%H$NL>A0(B +<p>これは common log format のログを作成しますが、それぞれの行の先頭に +正規化されたバーチャルホストの名前 (<directive module="core">ServerName</directive> -$B%G%#%l%/%F%#%V$K=q$+$l$F$$$k$b$N(B) $B$,IU2C$5$l$^$9!#(B -($B%m%0%U%!%$%k$N%+%9%?%^%$%:$N>\:Y$K$D$$$F$O(B <a -href="../mod/mod_log_config.html#formats">Custom Log Formats</a> $B$r(B -$BFI$s$G$/$@$5$$!#(B)</p> +ディレクティブに書かれているもの) が付加されます。 +(ログファイルのカスタマイズの詳細については <a +href="../mod/mod_log_config.html#formats">Custom Log Formats</a> を +読んでください。)</p> -<p>$B%m%0%U%!%$%k$r3FItJ,(B ($B%P!<%A%c%k%[%9%HKh$K(B 1 $B%U%!%$%k(B) $B$KJ,$1$?$$$H$-$O!"(B +<p>ログファイルを各部分 (バーチャルホスト毎に 1 ファイル) に分けたいときは、 <code><a href="../programs/other.html">split-logfile</a></code> -$B$r;H$C$F9T$J$&$3$H$,$G$-$^$9!#%W%m%0%i%`$O(B Apache $BG[I[$N(B -<code>support</code> $B%G%#%l%/%H%j$K$"$j$^$9!#(B</p> +を使って行なうことができます。プログラムは Apache 配布の +<code>support</code> ディレクトリにあります。</p> -<p>$B0J2<$N$h$&$J%3%^%s%I$G$3$N%W%m%0%i%`$r<B9T$7$^$9(B:</p> +<p>以下のようなコマンドでこのプログラムを実行します:</p> <example> split-logfile < /logs/multiple_vhost_log </example> -<p>$B$3$N%W%m%0%i%`$O%P!<%A%c%k%[%9%H$N%m%0%U%!%$%k$NL>A0$H$H$b$K<B9T$5$l!"(B -$B%m%0%U%!%$%k$K8=$l$k$=$l$>$l$N%P!<%A%c%k%[%9%HKh$K0l$D$N%U%!%$%k$r:n@.$7$^$9!#(B -$B$=$l$>$l$N%U%!%$%k$O(B <code>$B%[%9%HL>(B.log</code> $B$H$$$&L>A0$K$J$j$^$9!#(B</p> +<p>このプログラムはバーチャルホストのログファイルの名前とともに実行され、 +ログファイルに現れるそれぞれのバーチャルホスト毎に一つのファイルを作成します。 +それぞれのファイルは <code>ホスト名.log</code> という名前になります。</p> </section> </manualpage> diff --git a/docs/manual/vhosts/index.xml.ja b/docs/manual/vhosts/index.xml.ja index 6fb2b53bd3..9d1d84fd58 100644 --- a/docs/manual/vhosts/index.xml.ja +++ b/docs/manual/vhosts/index.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990 --> @@ -23,55 +23,55 @@ <manualpage metafile="index.xml.meta"> <parentdocument href="../"/> - <title>Apache $B%P!<%A%c%k%[%9%H@bL@=q(B</title> + <title>Apache バーチャルホスト説明書</title> <summary> - <p><cite>$B%P!<%A%c%k%[%9%H(B</cite>$B$H$$$&MQ8l$O!"(B1 $BBf$N%^%7%s>e$G(B - (<code>www.company1.com</code> and <code>www.company2.com</code> $B$N$h$&$J(B) - $BFs$D0J>e$N%&%'%V%5%$%H$r07$&1?MQJ}K!$N$3$H$r;X$7$^$9!#(B - $B%P!<%A%c%k%[%9%H$K$O!"3F%&%'%V%5%$%H$K0c$&(B IP $B%"%I%l%9$,$"$k(B - $B!V(B<a href="ip-based.html">IP $B%Y!<%9(B</a>$B!W$H!"$=$l$>$l$N(B IP $B%"%I%l%9$K(B - $BJ#?t$NL>A0$,$"$k!V(B<a href="name-based.html">$BL>A0%Y!<%9(B</a>$B!W$H$,$"$j$^$9!#(B - $BJ#?t$N%5%$%H$,J*M}E*$KF1$8%5!<%P$G07$o$l$F$$$k!"$H$$$&$3$H$O%(%s%I%f!<%6$K$O(B - $BL@$i$+$G$O$"$j$^$;$s!#(B</p> + <p><cite>バーチャルホスト</cite>という用語は、1 台のマシン上で + (<code>www.company1.com</code> and <code>www.company2.com</code> のような) + 二つ以上のウェブサイトを扱う運用方法のことを指します。 + バーチャルホストには、各ウェブサイトに違う IP アドレスがある + 「<a href="ip-based.html">IP ベース</a>」と、それぞれの IP アドレスに + 複数の名前がある「<a href="name-based.html">名前ベース</a>」とがあります。 + 複数のサイトが物理的に同じサーバで扱われている、ということはエンドユーザには + 明らかではありません。</p> - <p>Apache $B$O!"FC$K<j$rF~$l$J$$>uBV$G(B IP $B%Y!<%9$N%P!<%A%c%k%[%9%H(B - $B$r%5%]!<%H$7$?:G=i$N%5!<%P$N0l$D$G$9!#%P!<%8%g%s(B 1.1 $B0J9_$N(B Apache - $B$G$O!"(BIP $B%Y!<%9$H%M!<%`%Y!<%9$N%P!<%A%c%k%[%9%H$NN>J}$r%5%]!<%H(B - $B$7$F$$$^$9!#%M!<%`%Y!<%9$N%P!<%A%c%k%[%9%H$O!"(B<em>$B%[%9%H%Y!<%9(B</em>$B$"$k$$$O(B - <em>$BHs(B IP $B%Y!<%9(B</em>$B$N%P!<%A%c%k%[%9%H$H8F$P$l$k$3$H$b$"$j$^$9!#(B</p> + <p>Apache は、特に手を入れない状態で IP ベースのバーチャルホスト + をサポートした最初のサーバの一つです。バージョン 1.1 以降の Apache + では、IP ベースとネームベースのバーチャルホストの両方をサポート + しています。ネームベースのバーチャルホストは、<em>ホストベース</em>あるいは + <em>非 IP ベース</em>のバーチャルホストと呼ばれることもあります。</p> - <p>$B0J2<$N%Z!<%8$G$O!"(BApache $B%P!<%8%g%s(B 1.3 - $B0J9_$G$N%P!<%A%c%k%[%9%H$N%5%]!<%H$K$D$$$F$N>\:Y$r@bL@$7$^$9!#(B</p> + <p>以下のページでは、Apache バージョン 1.3 + 以降でのバーチャルホストのサポートについての詳細を説明します。</p> </summary> <seealso><module>mod_vhost_alias</module></seealso> -<seealso><a href="name-based.html">$B%M!<%`%Y!<%9$N%P!<%A%c%k%[%9%H(B</a></seealso> -<seealso><a href="ip-based.html">IP $B%Y!<%9$N%P!<%A%c%k%[%9%H(B</a></seealso> -<seealso><a href="examples.html">$B%P!<%A%c%k%[%9%H$N0lHLE*$J@_DjNc(B</a></seealso> -<seealso><a href="fd-limits.html">$B%U%!%$%k5-=R;R$N8B3&(B</a></seealso> -<seealso><a href="mass.html">$BBgNL$N%P!<%A%c%k%[%9%H$N@_Dj(B</a></seealso> -<seealso><a href="details.html">$B%P!<%A%c%k%[%9%H$N%^%C%A%s%0$K$D$$$F$N>\:Y(B</a></seealso> +<seealso><a href="name-based.html">ネームベースのバーチャルホスト</a></seealso> +<seealso><a href="ip-based.html">IP ベースのバーチャルホスト</a></seealso> +<seealso><a href="examples.html">バーチャルホストの一般的な設定例</a></seealso> +<seealso><a href="fd-limits.html">ファイル記述子の限界</a></seealso> +<seealso><a href="mass.html">大量のバーチャルホストの設定</a></seealso> +<seealso><a href="details.html">バーチャルホストのマッチングについての詳細</a></seealso> -<section id="support"><title>$B%P!<%A%c%k%[%9%H$N%5%]!<%H(B</title> +<section id="support"><title>バーチャルホストのサポート</title> <ul> - <li><a href="name-based.html">$B%M!<%`%Y!<%9$N%P!<%A%c%k%[%9%H(B</a> - ($B0l$D$N(B IP $B%"%I%l%9$KJ#?t$N%&%'%V%5%$%H(B)</li> - <li><a href="ip-based.html">IP $B%Y!<%9$N%P!<%A%c%k%[%9%H(B</a> - ($B3F%&%'%V%5%$%H$K(B IP $B%"%I%l%9(B)</li> - <li><a href="examples.html">$B%P!<%A%c%k%[%9%H$N0lHLE*$J@_DjNc(B</a></li> - <li><a href="fd-limits.html">$B%U%!%$%k5-=R;R$N8B3&(B</a> - ($B$^$?$O!"(B<em>$BB?2a$.$k%m%0%U%!%$%k(B</em>)</li> - <li><a href="mass.html">$BBgNL$N%P!<%A%c%k%[%9%H$N@_Dj(B</a></li> - <li><a href="details.html">$B%P!<%A%c%k%[%9%H$N%^%C%A%s%0$K$D$$$F$N>\:Y(B</a></li> + <li><a href="name-based.html">ネームベースのバーチャルホスト</a> + (一つの IP アドレスに複数のウェブサイト)</li> + <li><a href="ip-based.html">IP ベースのバーチャルホスト</a> + (各ウェブサイトに IP アドレス)</li> + <li><a href="examples.html">バーチャルホストの一般的な設定例</a></li> + <li><a href="fd-limits.html">ファイル記述子の限界</a> + (または、<em>多過ぎるログファイル</em>)</li> + <li><a href="mass.html">大量のバーチャルホストの設定</a></li> + <li><a href="details.html">バーチャルホストのマッチングについての詳細</a></li> </ul> </section> -<section id="directives"><title>$B@_Dj%G%#%l%/%F%#%V(B</title> +<section id="directives"><title>設定ディレクティブ</title> <ul> <li><directive type="section" @@ -82,19 +82,19 @@ <li><directive module="core">ServerPath</directive></li> </ul> - <p>$B%P!<%A%c%k%[%9%H$N@_Dj$N%G%P%C%0$r$9$k$K$O(B - Apache $B$N%3%^%s%I%i%$%s%9%$%C%A(B <code>-S</code> $B$,JXMx$G$9!#(B - $B$D$^$j!"0J2<$N%3%^%s%I$rF~NO$7$^$9(B:</p> + <p>バーチャルホストの設定のデバッグをするには + Apache のコマンドラインスイッチ <code>-S</code> が便利です。 + つまり、以下のコマンドを入力します:</p> <example> /usr/local/apache2/bin/httpd -S </example> - <p>$B$3$N%3%^%s%I$O(B Apache $B$,@_Dj%U%!%$%k$r$I$&2r@O$7$?$+$K$D$$$F=PNO$7$^$9!#(B - IP $B%"%I%l%9$H%5!<%PL>$rCm0U?<$/D4$Y$l$P!"(B - $B@_Dj$N4V0c$$$r8+$D$1$k=u$1$K$J$k$G$7$g$&!#(B - ($BB>$N%3%^%s%I%i%$%s$N%*%W%7%g%s$O(B <program>httpd</program> - $B%W%m%0%i%`$N@bL@J8=q$r8+$F$/$@$5$$(B)</p> + <p>このコマンドは Apache が設定ファイルをどう解析したかについて出力します。 + IP アドレスとサーバ名を注意深く調べれば、 + 設定の間違いを見つける助けになるでしょう。 + (他のコマンドラインのオプションは <program>httpd</program> + プログラムの説明文書を見てください)</p> </section> </manualpage> diff --git a/docs/manual/vhosts/ip-based.xml.ja b/docs/manual/vhosts/ip-based.xml.ja index 10c462220d..f279bc7fcf 100644 --- a/docs/manual/vhosts/ip-based.xml.ja +++ b/docs/manual/vhosts/ip-based.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 659902 --> @@ -21,96 +21,96 @@ --> <manualpage metafile="ip-based.xml.meta"> -<parentdocument href="./">$B%P!<%A%c%k%[%9%H(B</parentdocument> - <title>Apache $B$N(B IP $B%Y!<%9$N%P!<%A%c%k%[%9%H%5%]!<%H(B</title> +<parentdocument href="./">バーチャルホスト</parentdocument> + <title>Apache の IP ベースのバーチャルホストサポート</title> <seealso> -<a href="name-based.html">$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H%5%]!<%H(B</a> +<a href="name-based.html">名前ベースのバーチャルホストサポート</a> </seealso> -<section id="requirements"><title>$B%7%9%F%`MW7o(B</title> +<section id="requirements"><title>システム要件</title> - <p><cite>IP $B%Y!<%9(B</cite> $B$H$$$&L>A0$,<($9$h$&$K!"%5!<%P$K$O(B - <strong>IP $B%Y!<%9$N%P!<%A%c%k%[%9%H$=$l$>$l$K$D$-!"JL!9$N(B IP $B%"%I%l%9$,(B - $BI,MW$G$9(B</strong>$B!#J#?t$NJ*M}%3%M%/%7%g%s$r;}$C$F$$$k%^%7%s$rMQ0U$9$k$+!"(B - $B:G6a$N%*%Z%l!<%F%#%s%0%7%9%F%`$G%5%]!<%H$5$l$F$$$k%P!<%A%c%k(B - $B%$%s%?%U%'!<%9(B ($B>\:Y$O%7%9%F%`$N@bL@=q$rFI$s$G$/$@$5$$!#$?$$$F$$$O(B - "ip $B%(%$%j%"%9(B" $B$H8F$P$l$F$$$F!"@_Dj$K$OIaDL(B "ifconfig" $B%3%^%s%I$r(B - $B;H$$$^$9(B) $B$r;H$&$+$G<B8=$G$-$^$9!#(B</p> + <p><cite>IP ベース</cite> という名前が示すように、サーバには + <strong>IP ベースのバーチャルホストそれぞれにつき、別々の IP アドレスが + 必要です</strong>。複数の物理コネクションを持っているマシンを用意するか、 + 最近のオペレーティングシステムでサポートされているバーチャル + インタフェース (詳細はシステムの説明書を読んでください。たいていは + "ip エイリアス" と呼ばれていて、設定には普通 "ifconfig" コマンドを + 使います) を使うかで実現できます。</p> </section> -<section id="howto"><title>Apache $B$N@_DjJ}K!(B</title> +<section id="howto"><title>Apache の設定方法</title> - <p>$BJ#?t$N%[%9%H$r%5%]!<%H$9$k$h$&$K(B Apache $B$r@_Dj$9$kJ}K!$O(B - $BFsDL$j$"$j$^$9!#JL$N(B <program>httpd</program> $B%G!<%b%s$r3F%[%9%HKh$K<B9T$9$k$+!"(B - $B$9$Y$F$N%P!<%A%c%k%[%9%H$r%5%]!<%H$9$k%G!<%b%s$r0l$D<B9T$9$k$+$G$9!#(B</p> + <p>複数のホストをサポートするように Apache を設定する方法は + 二通りあります。別の <program>httpd</program> デーモンを各ホスト毎に実行するか、 + すべてのバーチャルホストをサポートするデーモンを一つ実行するかです。</p> - <p>$B0J2<$N$H$-$K$OJ#?t$N%G!<%b%s$r;H$&$HNI$$$G$7$g$&(B:</p> + <p>以下のときには複数のデーモンを使うと良いでしょう:</p> <ul> - <li>$B2q<R(B1 $B$O%&%'%V7PM30J30$G$O2q<R(B2 $B$+$i$O%G!<%?$rFI$^$l$?$/$J$$!"(B - $B$H$$$C$?%;%-%e%j%F%#$NJ,N%$NLdBj$,$"$k$H$-!#$3$N>l9g!"$=$l$>$l(B + <li>会社1 はウェブ経由以外では会社2 からはデータを読まれたくない、 + といったセキュリティの分離の問題があるとき。この場合、それぞれ <directive module="mpm_common">User</directive>, <directive module="mpm_common">Group</directive>, <directive module="mpm_common">Listen</directive>, <directive - module="core">ServerRoot</directive> $B$N@_Dj$,0c$&Fs$D$N%G!<%b%s$r(B - $B<B9T$9$kI,MW$,$"$j$^$9!#(B</li> - - <li>$B%^%7%s$N$9$Y$F$N(B IP $B%(%$%j%"%9$r(B listen $B$9$k$@$1$N(B - $B%a%b%j$H%U%!%$%k5-=R;R$NM>M5$,$"$k$H$-!#(B<directive - module="mpm_common">Listen</directive> $B$O!V%o%$%k%I%+!<%I!W(B - $B%"%I%l%9$+!"FCDj$N%"%I%l%9$N$_$r(B listen $B$9$k$3$H$,$G$-$^$9!#(B - $B$G$9$+$i!"2?$i$+$NM}M3$GFCDj$N%"%I%l%9$r(B listen $B$7$J$1$P$J$i$J$$(B - $B$H$-$O!"$=$NFCDj$N%"%I%l%9$r$9$Y$F(B listen $B$9$kI,MW$,$"$j$^$9!#(B - ($B$?$@$7!"0l$D$N(B <program>httpd</program> $B$,(B N-1 $B8D$N%"%I%l%9$r(B listen $B$7!"(B - $BJL$N(B <program>httpd</program> $B$,;D$j$N%"%I%l%9$r(B listen $B$9$k$H$$$C$?$3$H$O2DG=$G$9!#(B)</li> + module="core">ServerRoot</directive> の設定が違う二つのデーモンを + 実行する必要があります。</li> + + <li>マシンのすべての IP エイリアスを listen するだけの + メモリとファイル記述子の余裕があるとき。<directive + module="mpm_common">Listen</directive> は「ワイルドカード」 + アドレスか、特定のアドレスのみを listen することができます。 + ですから、何らかの理由で特定のアドレスを listen しなけばならない + ときは、その特定のアドレスをすべて listen する必要があります。 + (ただし、一つの <program>httpd</program> が N-1 個のアドレスを listen し、 + 別の <program>httpd</program> が残りのアドレスを listen するといったことは可能です。)</li> </ul> - <p>$B0J2<$N$H$-$K$OC1FH$N%G!<%b%s$r;H$&$HNI$$$G$7$g$&(B:</p> + <p>以下のときには単独のデーモンを使うと良いでしょう:</p> <ul> - <li>$B%P!<%A%c%k%[%9%H4V$G$N(B httpd $B$N@_Dj$r6&M-$7$F$b$h$$$H$-!#(B</li> + <li>バーチャルホスト間での httpd の設定を共有してもよいとき。</li> - <li>$B%^%7%s$,B?$/$N%j%/%(%9%H$r07$&$?$a!"JL%G!<%b%s$r<B9T$9$k$3$H$K$h$k(B - $B@-G=$NDc2<$N1F6A$,Cx$7$$$H$-!#(B</li> + <li>マシンが多くのリクエストを扱うため、別デーモンを実行することによる + 性能の低下の影響が著しいとき。</li> </ul> </section> -<section id="multiple"><title>$BJ#?t%G!<%b%s$N@_Dj(B</title> +<section id="multiple"><title>複数デーモンの設定</title> - <p>$B3F%P!<%A%c%k%[%9%H$KBP$7$FJL$N(B <program>httpd</program> $B$N%$%s%9%H!<%k$r9T$J$$$^$9!#(B - $B@_Dj%U%!%$%kCf$N(B <directive module="mpm_common">Listen</directive> - $B%G%#%l%/%F%#%V$r;H$C$F!"(B - $B3F%$%s%9%H!<%k$G%G!<%b%s$,07$&(B IP $B%"%I%l%9(B ($B%P!<%A%c%k%[%9%H(B) - $B$rA*Br$7$^$9!#Nc$($P(B</p> + <p>各バーチャルホストに対して別の <program>httpd</program> のインストールを行ないます。 + 設定ファイル中の <directive module="mpm_common">Listen</directive> + ディレクティブを使って、 + 各インストールでデーモンが扱う IP アドレス (バーチャルホスト) + を選択します。例えば</p> <example> Listen www.smallco.com:80 </example> - <p>$B$3$3$G!"%[%9%HL>$NBe$o$j$K(B IP $B%"%I%l%9$r;H$&J}$,?d>)$5$l$F$$$k$3$H$K(B - $BCm0U$7$F$*$$$F$/$@$5$$(B - (<a href="../dns-caveats.html">DNS $B$NCm0U;v9`(B</a> $B;2>H(B)$B!#(B</p> + <p>ここで、ホスト名の代わりに IP アドレスを使う方が推奨されていることに + 注意しておいてください + (<a href="../dns-caveats.html">DNS の注意事項</a> 参照)。</p> </section> -<section id="single"><title>$BJ#?t$N%P!<%A%c%k%[%9%H$N@_Dj$r$7$?(B -$B%G!<%b%s$r0l$D@_Dj$9$k(B</title> +<section id="single"><title>複数のバーチャルホストの設定をした +デーモンを一つ設定する</title> - <p>$B$3$N>l9g$O!"0l$D$N(B <program>httpd</program> $B$,<g%5!<%P$H$9$Y$F$N%P!<%A%c%k%[%9%H$N%j%/%(%9%H$r(B - $B=hM}$7$^$9!#@_Dj%U%!%$%k$N(B <directive - module="core">VirtualHost</directive> $B%G%#%l%/%F%#%V$r;H$C$F!"(B + <p>この場合は、一つの <program>httpd</program> が主サーバとすべてのバーチャルホストのリクエストを + 処理します。設定ファイルの <directive + module="core">VirtualHost</directive> ディレクティブを使って、 <directive module="core">ServerAdmin</directive>, <directive module="core">ServerName</directive>, <directive module="core">DocumentRoot</directive>, <directive module="core">ErrorLog</directive>, <directive module="mod_log_config">TransferLog</directive> - $B$d(B <directive module="mod_log_config">CustomLog</directive> - $B@_Dj%G%#%l%/%F%#%V$NCM$,3F%[%9%HKh$K0[$J$kCM$K@_Dj$5$l$k$h$&$K$7$^$9!#(B - $BNc$($P(B</p> + や <directive module="mod_log_config">CustomLog</directive> + 設定ディレクティブの値が各ホスト毎に異なる値に設定されるようにします。 + 例えば</p> <example> <VirtualHost www.smallco.com><br /> @@ -130,29 +130,29 @@ </VirtualHost> </example> - <p>$B$3$3$G!"%[%9%HL>$NBe$o$j$K(B IP $B%"%I%l%9$r;H$&J}$,?d>)$5$l$F$$$k$3$H$K(B - $BCm0U$7$F$*$$$F$/$@$5$$(B - (<a href="../dns-caveats.html">DNS $B$NCm0U;v9`(B</a> $B;2>H(B)$B!#(B</p> + <p>ここで、ホスト名の代わりに IP アドレスを使う方が推奨されていることに + 注意しておいてください + (<a href="../dns-caveats.html">DNS の注意事項</a> 参照)。</p> - <p>$B%W%m%;%9@8@.$r@)8f$9$k%G%#%l%/%F%#%V$d$=$NB>$N$$$/$D$+$N%G%#%l%/%F%#%V$r(B - $B=|$$$F!"$[$\(B<strong>$B$9$Y$F(B</strong>$B$N@_Dj%G%#%l%/%F%#%V$r(B VirtualHost - $B%G%#%l%/%F%#%V$NCf$K=q$/$3$H$,$G$-$^$9!#%G%#%l%/%F%#%V$,(B VirtualHost - $B%G%#%l%/%F%#%V$G;HMQ$G$-$k$+$I$&$+$O(B <a href="../mod/directives.html" - >$B%G%#%l%/%F%#%V:w0z(B</a>$B$r;H$C$F(B<a - href="../mod/directive-dict.html#Context">$B%3%s%F%-%9%H(B</a>$B$N(B - $BMs$rD4$Y$F$/$@$5$$!#(B</p> + <p>プロセス生成を制御するディレクティブやその他のいくつかのディレクティブを + 除いて、ほぼ<strong>すべて</strong>の設定ディレクティブを VirtualHost + ディレクティブの中に書くことができます。ディレクティブが VirtualHost + ディレクティブで使用できるかどうかは <a href="../mod/directives.html" + >ディレクティブ索引</a>を使って<a + href="../mod/directive-dict.html#Context">コンテキスト</a>の + 欄を調べてください。</p> - <p><a href="../suexec.html">suEXEC$B%i%C%Q!<(B</a>$B$r;H$C$F$$$k>l9g$O!"(B + <p><a href="../suexec.html">suEXECラッパー</a>を使っている場合は、 <directive module="mod_suexec">SuexecUserGroup</directive> - $B%G%#%l%/%F%#%V$r(B VirtualHost - $B%G%#%l%/%F%#%V$NCf$G;HMQ$9$k$3$H$,$G$-$^$9!#(B</p> - - <p><em>$B%;%-%e%j%F%#(B:</em> $B%m%0%U%!%$%k$r=q$/>l=j$r;XDj$9$k$H$-$O!"(B - Apache $B$r5/F0$7$?%f!<%60J30$,$=$N%G%#%l%/%H%j$K=q$-9~$_8"8B$r(B - $B;}$C$F$$$k>l9g$K%;%-%e%j%F%#>e$N4m81$,$"$k$3$H$KCm0U$7$F$/$@$5$$!#(B - $B>\:Y$O(B<a - href="../misc/security_tips.html">$B%;%-%e%j%F%#$N$3$D(B</a>$B%I%-%e%a%s%H$r(B - $B;2>H$7$F$/$@$5$$!#(B</p> + ディレクティブを VirtualHost + ディレクティブの中で使用することができます。</p> + + <p><em>セキュリティ:</em> ログファイルを書く場所を指定するときは、 + Apache を起動したユーザ以外がそのディレクトリに書き込み権限を + 持っている場合にセキュリティ上の危険があることに注意してください。 + 詳細は<a + href="../misc/security_tips.html">セキュリティのこつ</a>ドキュメントを + 参照してください。</p> </section> </manualpage> diff --git a/docs/manual/vhosts/name-based.xml.ja b/docs/manual/vhosts/name-based.xml.ja index d169e294da..a8a9eb9f6a 100644 --- a/docs/manual/vhosts/name-based.xml.ja +++ b/docs/manual/vhosts/name-based.xml.ja @@ -1,4 +1,4 @@ -<?xml version='1.0' encoding='iso-2022-jp' ?> +<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?> <!-- English Revision: 420990:659902 (outdated) --> @@ -21,59 +21,59 @@ --> <manualpage metafile="name-based.xml.meta"> -<parentdocument href="./">$B%P!<%A%c%k%[%9%H(B</parentdocument> -<title>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H(B</title> +<parentdocument href="./">バーチャルホスト</parentdocument> +<title>名前ベースのバーチャルホスト</title> <summary> - <p>$B$3$NJ8=q$G$OL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$r$I$s$J$H$-!"(B - $B$I$&$d$C$F;H$&$+$r@bL@$7$^$9!#(B</p> + <p>この文書では名前ベースのバーチャルホストをどんなとき、 + どうやって使うかを説明します。</p> </summary> -<seealso><a href="ip-based.html">$B%M!<%`%Y!<%9$N%P!<%A%c%k%[%9%H(B</a></seealso> -<seealso><a href="details.html">$B%P!<%A%c%k%[%9%H$N%^%C%A%s%0$K$D$$$F$N>\:Y(B</a></seealso> -<seealso><a href="mass.html">$BBgNL$N%P!<%A%c%k%[%9%H$NF0E*$J@_Dj(B</a></seealso> -<seealso><a href="examples.html">$B%P!<%A%c%k%[%9%H$N0lHLE*$J@_DjNc(B</a></seealso> -<seealso><a href="examples.html#serverpath">ServerPath $B@_DjNc(B</a></seealso> - -<section id="namevip"><title>$BL>A0%Y!<%9$H(B IP $B%Y!<%9$N%P!<%A%c%k%[%9%H$NHf3S(B</title> - - <p>IP $B%Y!<%9$N%P!<%A%c%k%[%9%H$G$O!"1~Ez$9$k(B - $B%P!<%A%c%k%[%9%H$X$N%3%M%/%7%g%s$r7hDj$9$k$?$a$K(B IP - $B%"%I%l%9$r;HMQ$7$^$9!#$G$9$+$i!"$=$l$>$l$N%[%9%H$K8D!9$K(B IP - $B%"%I%l%9$,I,MW$K$J$j$^$9!#$3$l$KBP$7$FL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$G$O!"(B - $B%/%i%$%"%s%H$,(B HTTP $B%X%C%@$N0lIt$H$7$F%[%9%HL>$r9p$2$k!"(B - $B$H$$$&$3$H$K0MB8$7$^$9!#$3$N5;=Q$GF10l(B IP - $B%"%I%l%9$r0[$J$kB??t$N%[%9%H$G6&M-$7$F$$$^$9!#(B</p> - - <p>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$ODL>oC1=c$G!"$=$l$>$l$N%[%9%HL>$H(B - $B$=$l$KBP1~$9$k@53N$J(B IP $B%"%I%l%9$r(B DNS $B$G@_Dj$7!"0[$J$k(B - $B%[%9%HL>$r6hJL$9$k$h$&$K(B Apache HTTP $B%5!<%P$r@_Dj$9$k$@$1$G$9!#(B - $B$5$i$K!"L>A0%Y!<%9$N%P!<%A%c%k%[%9%H$OITB-$9$k(B IP - $B%"%I%l%9$N<{MW$r4KOB$7$^$9!#$7$?$,$C$F!"(BIP $B%Y!<%9$N%P!<%A%c%k%[%9%H$r(B - $BA*Br$9$Y$-FCDj$NM}M3$,$J$1$l$PL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$r;H$&$Y$-$G$9!#(B - IP $B%Y!<%9$N%P!<%A%c%k%[%9%H$r;HMQ$9$k$3$H$r9MN8$9$kM}M3$H$7$F!"(B</p> +<seealso><a href="ip-based.html">ネームベースのバーチャルホスト</a></seealso> +<seealso><a href="details.html">バーチャルホストのマッチングについての詳細</a></seealso> +<seealso><a href="mass.html">大量のバーチャルホストの動的な設定</a></seealso> +<seealso><a href="examples.html">バーチャルホストの一般的な設定例</a></seealso> +<seealso><a href="examples.html#serverpath">ServerPath 設定例</a></seealso> + +<section id="namevip"><title>名前ベースと IP ベースのバーチャルホストの比較</title> + + <p>IP ベースのバーチャルホストでは、応答する + バーチャルホストへのコネクションを決定するために IP + アドレスを使用します。ですから、それぞれのホストに個々に IP + アドレスが必要になります。これに対して名前ベースのバーチャルホストでは、 + クライアントが HTTP ヘッダの一部としてホスト名を告げる、 + ということに依存します。この技術で同一 IP + アドレスを異なる多数のホストで共有しています。</p> + + <p>名前ベースのバーチャルホストは通常単純で、それぞれのホスト名と + それに対応する正確な IP アドレスを DNS で設定し、異なる + ホスト名を区別するように Apache HTTP サーバを設定するだけです。 + さらに、名前ベースのバーチャルホストは不足する IP + アドレスの需要を緩和します。したがって、IP ベースのバーチャルホストを + 選択すべき特定の理由がなければ名前ベースのバーチャルホストを使うべきです。 + IP ベースのバーチャルホストを使用することを考慮する理由として、</p> <ul> - <li>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$KBP1~$7$F$$$J$$8E$$%/%i%$%"%s%H$,$"$k(B - $BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$,F/$/$?$a$K$O!"%/%i%$%"%s%H$O(B - HTTP $B%[%9%H%X%C%@$rAw$C$F$3$J$1$l$P$J$j$^$;$s!#(B - $B$3$l$O(B HTTP/1.1 $B$N;EMM$GMW5a$5$l$F$$$F!"$9$Y$F$N8=BeE*$J(B - HTTP/1.0 $B%V%i%&%6$G$b3HD%$H$7$F<BAu$5$l$F$$$^$9!#(B - $B$H$F$b8E$$%/%i%$%"%s%H$r%5%]!<%H$7$D$D!"L>A0%Y!<%9$N(B - $B%P!<%A%c%k%[%9%H$r9T$$$?$$>l9g$O!"$3$NJ8=q$N:G8e$NJ}$K(B - $B=q$+$l$F$$$k2r7h:v$K$J$k$+$b$7$l$J$$J}K!$r8+$F$/$@$5$$!#(B</li> - - <li>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$O(B SSL $B%W%m%H%3%k$NFCD'$K$h$j!"(B - SSL $B%;%-%e%"%5!<%P$K$O;H$($^$;$s!#(B</li> - - <li>$B%*%Z%l!<%F%#%s%0%7%9%F%`$d%M%C%H%o!<%/AuCV$N$J$+$K$O!"(B - $BJL$N(B IP $B%"%I%l%9>e$G$J$$>l9g!"J#?t$N%[%9%H$rJL07$$$G$-$J$$$h$&$J(B - $BBS0h4IM}$NJ}K!$r<BAu$7$F$$$k$b$N$,$"$j$^$9!#(B</li> + <li>名前ベースのバーチャルホストに対応していない古いクライアントがある + 名前ベースのバーチャルホストが働くためには、クライアントは + HTTP ホストヘッダを送ってこなければなりません。 + これは HTTP/1.1 の仕様で要求されていて、すべての現代的な + HTTP/1.0 ブラウザでも拡張として実装されています。 + とても古いクライアントをサポートしつつ、名前ベースの + バーチャルホストを行いたい場合は、この文書の最後の方に + 書かれている解決策になるかもしれない方法を見てください。</li> + + <li>名前ベースのバーチャルホストは SSL プロトコルの特徴により、 + SSL セキュアサーバには使えません。</li> + + <li>オペレーティングシステムやネットワーク装置のなかには、 + 別の IP アドレス上でない場合、複数のホストを別扱いできないような + 帯域管理の方法を実装しているものがあります。</li> </ul> </section> -<section id="using"><title>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$rMxMQ$9$k(B</title> +<section id="using"><title>名前ベースのバーチャルホストを利用する</title> <related> <modulelist> @@ -91,53 +91,53 @@ </directivelist> </related> - <p>$BL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$r;H$&$K$O!"$=$N%[%9%H$X$N(B - $B%j%/%(%9%H$r<u$1IU$1$k%5!<%P$N(B IP $B%"%I%l%9(B ($B$b$7$+$7$?$i%]!<%H$b(B) - $B$r;XDj$9$kI,MW$,$"$j$^$9!#(B - $B$3$l$O(B <directive module="core">NameVirtualHost</directive> - $B%G%#%l%/%F%#%V$G@_Dj$7$^$9!#DL>o!"(B<directive - module="core">NameVirtualHost</directive> $B$G(B - <code>*</code> $B$NB0@-$r;H$C$F%5!<%P$NA4$F$N(B IP $B%"%I%l%9$r;H$$$^$9!#(B - ($BNc$($P(B SSL $B$N;HMQ$J$I$G(B) $BJ#?t$N%]!<%H$r;H$&$3$H$r7W2h$7$F$$$k$N$G$"$l$P!"(B - $B0z?t$K(B <code>*:80</code> $B$N$h$&$K%]!<%H$b4^$a$k$h$&$K$7$F$/$@$5$$!#(B - <directive module="core">NameVirtualHost</directive> $B%G%#%l%/%F%#%V$G(B - IP $B%"%I%l%9$r=q$$$F$b!"(B - $B<+F0E*$K%5!<%P$,$=$N(B IP $B%"%I%l%9$r%j%C%9%s$9$k$H$$$&$3$H$O$J$$$3$H$K(B - $BCm0U$7$F$/$@$5$$!#>\:Y$O!V(B<a href="../bind.html">Apache $B$N;H$&%"%I%l%9$H(B - $B%]!<%H$r@_Dj$9$k(B</a>$B!W$rFI$s$G$/$@$5$$!#$5$i$K!"$3$3$G;XDj$5$l$?(B - IP $B%"%I%l%9$OA4$F%5!<%P$N%M%C%H%o!<%/%$%s%?!<%U%'!<%9$H4XO"IU$1$i$l$F(B - $B$$$J$1$l$P$J$j$^$;$s!#(B</p> - - <p>$B<!$O!"07$&%[%9%H$=$l$>$l$KBP$7$F(B <directive type="section" - module="core">VirtualHost</directive> $B%V%m%C%/$r(B - $B:n@.$7$F$/$@$5$$!#(B<directive module="core" type="section">VirtualHost</directive> - $B%G%#%l%/%F%#%V$N0z?t$O(B <directive module="core">NameVirtualHost</directive> - $B%G%#%l%/%F%#%V$N0z?t$HF1$8$K$7$F$/$@$5$$(B ($B$9$J$o$A!"(BIP $B%"%I%l%9$+!"A4$F$N%"%I%l%9$r0UL#$9$k(B - <code>*</code>)$B!#$=$l$>$l$N(B <directive module="core" type="section">VirtualHost</directive> - $B%G%#%l%/%F%#%V$NCf$K$O!":GDc8B!"$I$N%[%9%H$,07$o$l$k$+$r<($9(B <directive - module="core">ServerName</directive> $B%G%#%l%/%F%#%V$H!"(B - $B$=$N%[%9%HMQ$N%3%s%F%s%D$,%U%!%$%k%7%9%F%`>e$N$I$3$K$"$k$+$r<($9(B - <directive module="core">DocumentRoot</directive> $B%G%#%l%/%F%#%V$r(B - $B=q$/I,MW$,$"$j$^$9!#(B</p> - - <note><title>$B%a%$%s%[%9%H$O$J$/$J$j$^$9(B</title> - <p>$B4{$K$"$k%&%'%V%5!<%P$K%P!<%A%c%k%[%9%H$rDI2C$9$k>l9g!"(B - $B4{B8$N%&%'%V%5!<%P$KBP$7$F$b(B <directive module="core" + <p>名前ベースのバーチャルホストを使うには、そのホストへの + リクエストを受け付けるサーバの IP アドレス (もしかしたらポートも) + を指定する必要があります。 + これは <directive module="core">NameVirtualHost</directive> + ディレクティブで設定します。通常、<directive + module="core">NameVirtualHost</directive> で + <code>*</code> の属性を使ってサーバの全ての IP アドレスを使います。 + (例えば SSL の使用などで) 複数のポートを使うことを計画しているのであれば、 + 引数に <code>*:80</code> のようにポートも含めるようにしてください。 + <directive module="core">NameVirtualHost</directive> ディレクティブで + IP アドレスを書いても、 + 自動的にサーバがその IP アドレスをリッスンするということはないことに + 注意してください。詳細は「<a href="../bind.html">Apache の使うアドレスと + ポートを設定する</a>」を読んでください。さらに、ここで指定された + IP アドレスは全てサーバのネットワークインターフェースと関連付けられて + いなければなりません。</p> + + <p>次は、扱うホストそれぞれに対して <directive type="section" + module="core">VirtualHost</directive> ブロックを + 作成してください。<directive module="core" type="section">VirtualHost</directive> + ディレクティブの引数は <directive module="core">NameVirtualHost</directive> + ディレクティブの引数と同じにしてください (すなわち、IP アドレスか、全てのアドレスを意味する + <code>*</code>)。それぞれの <directive module="core" type="section">VirtualHost</directive> + ディレクティブの中には、最低限、どのホストが扱われるかを示す <directive + module="core">ServerName</directive> ディレクティブと、 + そのホスト用のコンテンツがファイルシステム上のどこにあるかを示す + <directive module="core">DocumentRoot</directive> ディレクティブを + 書く必要があります。</p> + + <note><title>メインホストはなくなります</title> + <p>既にあるウェブサーバにバーチャルホストを追加する場合、 + 既存のウェブサーバに対しても <directive module="core" type="section">VirtualHost</directive> - $B%V%m%C%/$r:n$i$J$1$l$P$J$j$^$;$s!#$3$N%P!<%A%c%k%[%9%H$N(B - <directive module="core">ServerName</directive> $B$H(B + ブロックを作らなければなりません。このバーチャルホストの + <directive module="core">ServerName</directive> と <directive module="core">DocumentRoot</directive> - $B$O!"%0%m!<%P%k$J(B <directive module="core">ServerName</directive> $B$H(B + は、グローバルな <directive module="core">ServerName</directive> と <directive module="core">DocumentRoot</directive> - $B$HF1$8$b$N$K$7$^$9!#$^$?!"$3$N%P!<%A%c%k%[%9%H$r@_Dj%U%!%$%k$NCf$G(B - $B@hF,$KCV$$$F!"%G%U%)%k%H%[%9%H$H$7$FF0:n$9$k$h$&$K$7$^$9!#(B</p> + と同じものにします。また、このバーチャルホストを設定ファイルの中で + 先頭に置いて、デフォルトホストとして動作するようにします。</p> </note> - <p>$B$?$H$($P!"(B<code>www.domain.tld</code> $B$rF0$+$7$F$$$F!"(B - $B$5$i$K%P!<%A%c%k%[%9%H(B <code>www.otherdomain.tld</code> - $B$rDI2C$9$k$H$7$^$7$g$&!#$3$N%P!<%A%c%k%[%9%H$OF10l(B IP $B$r;X$7$F$$$k$H$7$^$9!#(B - $B$=$N$h$&$J>l9g$O!"(B<code>httpd.conf</code> - $B$K0J2<$N$h$&$J%3!<%I$rDI2C$9$k$@$1$G$9(B</p> + <p>たとえば、<code>www.domain.tld</code> を動かしていて、 + さらにバーチャルホスト <code>www.otherdomain.tld</code> + を追加するとしましょう。このバーチャルホストは同一 IP を指しているとします。 + そのような場合は、<code>httpd.conf</code> + に以下のようなコードを追加するだけです</p> <example> NameVirtualHost *:80<br /> @@ -157,98 +157,98 @@ </VirtualHost><br /> </example> - <p><directive module="core">NameVirtualHost</directive> $B5Z$S(B - <directive module="core">VirtualHost</directive> $B$N$I$A$i$N>l9g$b!"(B - * $B$NItJ,$K$OL@<(E*$K(B IP $B%"%I%l%9$r;XDj$9$k$3$H$,$G$-$^$9!#(B - $BNc$($P!"$"$k(B IP $B%"%I%l%9$G$OL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$r;H$$$?$$0lJ}$G!"(B - $BJL$N(B IP $B%"%I%l%9$G$O!"B>$N(B IP $B%Y!<%9$N%P!<%A%c%k%[%9%H$d(B - $BJLAH$NL>A0%Y!<%9$N%P!<%A%c%k%[%9%H$r;H$$$?$$>l9g!"(B - $B$=$&@_Dj$9$k$3$H$K$J$k$G$7$g$&!#(B</p> - - <p>$BJ#?t$NL>A0$G%5!<%P%"%/%;%9$,$G$-$k$h$&$K$7$?$$$3$H$bB?$$$G$7$g$&!#(B - $B$3$N$h$&$J$3$H$O!"(B<directive module="core" - >ServerAlias</directive> $B%G%#%l%/%F%#%V$r(B <directive module="core" + <p><directive module="core">NameVirtualHost</directive> 及び + <directive module="core">VirtualHost</directive> のどちらの場合も、 + * の部分には明示的に IP アドレスを指定することができます。 + 例えば、ある IP アドレスでは名前ベースのバーチャルホストを使いたい一方で、 + 別の IP アドレスでは、他の IP ベースのバーチャルホストや + 別組の名前ベースのバーチャルホストを使いたい場合、 + そう設定することになるでしょう。</p> + + <p>複数の名前でサーバアクセスができるようにしたいことも多いでしょう。 + このようなことは、<directive module="core" + >ServerAlias</directive> ディレクティブを <directive module="core" type="section">VirtualHost</directive> - $B%;%/%7%g%s$K5-=R$9$k$3$H$G<B8=$G$-$^$9!#(B - $BNc$($P>e5-$N(B <directive module="core" - type="section">VirtualHost</directive> $B$NNc$G$"$l$P!"(B - $B<!$N$h$&$K0lMw$K5s$2$i$l$?L>A0$,!"(B - $B%f!<%6$,F10l$N%&%'%V%5%$%H$H$7$FL\$K$7$F;HMQ$G$-$k%5!<%PL>$G$"$k!"(B - $B$H(B <directive module="core">ServerAlias</directive> - $B%G%#%l%/%F%#%V$G;XDj$G$-$^$9!#(B</p> + セクションに記述することで実現できます。 + 例えば上記の <directive module="core" + type="section">VirtualHost</directive> の例であれば、 + 次のように一覧に挙げられた名前が、 + ユーザが同一のウェブサイトとして目にして使用できるサーバ名である、 + と <directive module="core">ServerAlias</directive> + ディレクティブで指定できます。</p> <example> ServerAlias domain.tld *.domain.tld </example> - <p><code>domain.tld</code> $B%I%a%$%s$X$NA4$F$N%[%9%H$X$N%j%/%(%9%H$O(B - <code>www.domain.tld</code> $B$N%P!<%A%c%k%[%9%H$,=hM}$7$^$9!#(B - $BL>A0$r%^%C%A$5$;$k$?$a$K!"%o%$%k%I%+!<%IJ8;z(B * $B$d(B ? - $B$r;HMQ$9$k$3$H$b$G$-$^$9!#$b$A$m$s;W$$$D$-$NL>A0$r:n$C$F!"(B - <directive module="core">ServerName</directive> $B$d(B + <p><code>domain.tld</code> ドメインへの全てのホストへのリクエストは + <code>www.domain.tld</code> のバーチャルホストが処理します。 + 名前をマッチさせるために、ワイルドカード文字 * や ? + を使用することもできます。もちろん思いつきの名前を作って、 + <directive module="core">ServerName</directive> や <directive module="core">ServerAlias</directive> - $B$K$=$NL>A0$r=q$/$H$$$C$?$3$H$O$G$-$^$;$s!#$^$:$O!"(B - $B$3$l$i$NL>A0$,(B $B%5!<%P$KIU$1$i$l$?(B IP $B%"%I%l%9$K%^%C%W$5$l$k$h$&$K(B - DNS $B%5!<%P$rE,@Z$K@_Dj$7$J$1$l$P$J$j$^$;$s!#(B</p> - - <p>$B:G8e$K!"(B<directive module="core" - type="section">VirtualHost</directive> $B%3%s%F%J$NCf$K(B - $BB>$N%G%#%l%/%F%#%V$r=q$/$3$H$G!"%P!<%A%c%k%[%9%H$N@_Dj$r:Y$+$/D4@0(B - $B$9$k$3$H$,$G$-$^$9!#(B - $B$[$H$s$I$N%G%#%l%/%F%#%V$O$3$l$i$N%3%s%F%J$K@_CV$9$k$3$H$,$G$-$F!"(B - $BJQ99E@$O$=$N%P!<%A%c%k%[%9%H$KBP$7$F$N$_M-8z$K$J$j$^$9!#(B - $B$I$N%G%#%l%/%F%#%V$r=q$/$3$H$,$G$-$k$+$O!"%G%#%l%/%F%#%V$N(B <a - href="../mod/directive-dist.html#context">$B%3%s%F%-%9%H(B</a> $B$r(B - $BD4$Y$F$/$@$5$$!#(B<em>$B<g%5!<%P%3%s%F%-%9%H(B</em> + にその名前を書くといったことはできません。まずは、 + これらの名前が サーバに付けられた IP アドレスにマップされるように + DNS サーバを適切に設定しなければなりません。</p> + + <p>最後に、<directive module="core" + type="section">VirtualHost</directive> コンテナの中に + 他のディレクティブを書くことで、バーチャルホストの設定を細かく調整 + することができます。 + ほとんどのディレクティブはこれらのコンテナに設置することができて、 + 変更点はそのバーチャルホストに対してのみ有効になります。 + どのディレクティブを書くことができるかは、ディレクティブの <a + href="../mod/directive-dist.html#context">コンテキスト</a> を + 調べてください。<em>主サーバコンテキスト</em> (<directive module="core" type="section">VirtualHost</directive> - $B%3%s%F%J$N30(B) $B$N@_DjMQ%G%#%l%/%F%#%V$O%P!<%A%c%k%[%9%H$G$N@_Dj$G(B - $B>e=q$-$5$l$J$$>l9g$N$_;HMQ$5$l$^$9!#(B</p> + コンテナの外) の設定用ディレクティブはバーチャルホストでの設定で + 上書きされない場合のみ使用されます。</p> - <p>$B%j%/%(%9%H$,Mh$k$H!"%5!<%P$O$^$::G=i$K(B <directive module="core" + <p>リクエストが来ると、サーバはまず最初に <directive module="core" type="section">NameVirtualHost</directive> - $B$K%^%C%A$9$k(B IP $B%"%I%l%9$+$I$&$+$r%A%'%C%/$7$^$9!#%^%C%A$9$l$P(B - $B%^%C%A$7$?(B IP $B%"%I%l%9$N(B <directive module="core" + にマッチする IP アドレスかどうかをチェックします。マッチすれば + マッチした IP アドレスの <directive module="core" type="section">VirtualHost</directive> - $B$N$=$l$>$l$N%;%/%7%g%s$NCf$+$i(B - <directive module="core">ServerName</directive> $B$+(B + のそれぞれのセクションの中から + <directive module="core">ServerName</directive> か <directive module="core">ServerAlias</directive> - $B$KMW5a$5$l$?%[%9%HL>$,$"$k$+C5$7$^$9!#(B - $B8+$D$+$l$P$=$N%5!<%PMQ$N@_Dj$r;H$$$^$9!#%^%C%A$9$k%P!<%A%c%k%[%9%H(B - $B$,8+$D$+$i$J$1$l$P!"%^%C%A$7$?(B IP $B%"%I%l%9$N(B - <strong>$B%j%9%H$N:G=i$K$"$k%P!<%A%c%k%[%9%H(B</strong> $B$,;H$o$l$^$9!#(B</p> + に要求されたホスト名があるか探します。 + 見つかればそのサーバ用の設定を使います。マッチするバーチャルホスト + が見つからなければ、マッチした IP アドレスの + <strong>リストの最初にあるバーチャルホスト</strong> が使われます。</p> - <p>$B7k2L$H$7$F!"%j%9%H$N:G=i$N%P!<%A%c%k%[%9%H$,(B <em>$B%G%U%)%k%H(B</em> $B$N(B - $B%P!<%A%c%k%[%9%H$K$J$j$^$9!#(BIP $B%"%I%l%9$,(B <directive + <p>結果として、リストの最初のバーチャルホストが <em>デフォルト</em> の + バーチャルホストになります。IP アドレスが <directive module="core">NameVirtualHost</directive> - $B%G%#%l%/%F%#%V$K%^%C%A$7$?>l9g$O!"(B<em>$B%a%$%s$N%5!<%P(B</em> $B$N(B + ディレクティブにマッチした場合は、<em>メインのサーバ</em> の <directive module="core">DocumentRoot</directive> - $B$O(B<strong>$B7h$7$F;H$o$l$^$;$s(B</strong> - $B$I$N%P!<%A%c%k%[%9%H$K$b%^%C%A$7$J$$%j%/%(%9%H$KBP$7$F!"(B - $BFCJL$J@_Dj$r$7$?$$$N$G$"$l$P!"@_Dj%U%!%$%kCf$N:G=i$N(B - <code><VirtualHost></code> $B%3%s%F%J$K$=$l$r5-=R$7$F$/$@$5$$!#(B</p> + は<strong>決して使われません</strong> + どのバーチャルホストにもマッチしないリクエストに対して、 + 特別な設定をしたいのであれば、設定ファイル中の最初の + <code><VirtualHost></code> コンテナにそれを記述してください。</p> </section> -<section id="compat"><title>$B8E$$%V%i%&%6$H$N8_49@-(B</title> +<section id="compat"><title>古いブラウザとの互換性</title> - <p>$B0JA0=R$Y$?$h$&$K!"L>A0%Y!<%9$N%P!<%A%c%k%[%9%H$,@5$7$/F0:n$9$k(B - $B$?$a$KI,MW$J>pJs$rAw$C$F$3$J$$%/%i%$%"%s%H$,0MA3$H$7$FB8:_$7$F$$$^$9!#(B - $B$=$N$h$&$J%/%i%$%"%s%H$KBP$7$F$O!"3:Ev$9$k(B IP $B%"%I%l%9$K$D$$$F!"(B - $B0lHV:G=i$K@_Dj$5$l$F$$$k%P!<%A%c%k%[%9%H(B - (<cite>$B%W%i%$%^%j(B</cite>$B$NL>A0%Y!<%9$N%P!<%A%c%k%[%9%H(B) - $B$+$i%Z!<%8$,Aw$jJV$5$l$^$9!#(B</p> + <p>以前述べたように、名前ベースのバーチャルホストが正しく動作する + ために必要な情報を送ってこないクライアントが依然として存在しています。 + そのようなクライアントに対しては、該当する IP アドレスについて、 + 一番最初に設定されているバーチャルホスト + (<cite>プライマリ</cite>の名前ベースのバーチャルホスト) + からページが送り返されます。</p> - <note><title>$B$I$N$0$i$$8E$$$N(B ?</title> - <p>$B!V8E$$!W$HI=8=$7$F$$$k>l9g!"K\Ev$K8E$$$3$H$r0UL#$7$F;H$C$F$$$^$9!#(B - $BIT9,$K$7$F:#8=:_$G$b$3$N$h$&$J8E$$%V%i%&%6$KAx6x$9$k$3$H$,$"$j$^$9!#(B - $B8=:_$N%V%i%&%6$OA4$F!"L>A0%Y!<%9$N%P!<%A%c%k%[%9%H$KI,MW$J(B - <code>Host</code> $B%X%C%@$rAw$j$^$9!#(B</p> + <note><title>どのぐらい古いの ?</title> + <p>「古い」と表現している場合、本当に古いことを意味して使っています。 + 不幸にして今現在でもこのような古いブラウザに遭遇することがあります。 + 現在のブラウザは全て、名前ベースのバーチャルホストに必要な + <code>Host</code> ヘッダを送ります。</p> </note> <p><a href="../mod/core.html#serverpath"><code>ServerPath</code></a> - $B%G%#%l%/%F%#%V$GBP=h$,2DG=$G$9!#$A$g$C$HIT3J9%$G$9$1$l$I$b!#(B</p> + ディレクティブで対処が可能です。ちょっと不格好ですけれども。</p> - <p>$B@_DjNc(B</p> + <p>設定例</p> <example> NameVirtualHost 111.22.33.44<br /> @@ -262,28 +262,28 @@ </VirtualHost><br /> </example> - <p>$B$3$NNc$K$O$I$&$$$&0UL#$,$"$k$G$7$g$&$+(B? $B$3$l$O(B - "<code>/domain</code>" $B$G;O$^$k(B URI $B$X$N%j%/%(%9%H$O$9$Y$F!"(B - $B%P!<%A%c%k%[%9%H(B <code>www.domain.tld</code> $B$G=hM}$5$l$k!"(B - $B$H$$$&0UL#$G$9!#$D$^$j!"$9$Y$F$N%/%i%$%"%s%H$G(B - <code>http://www.domain.tld/domain/</code> $B$G%"%/%;%9$G$-$k%Z!<%8$,!"(B - <code>Host:</code> $B%X%C%@$rAw$C$F$/$k%/%i%$%"%s%H$G$"$l$P(B - <code>http://www.domain.tld/</code> $B$H$7$F$b%"%/%;%9$G$-$k!"(B - $B$H$$$&0UL#$G$9!#(B</p> - - <p>$B$3$l$,F0:n$9$k$h$&$K$9$k$K$O!"(B - $B%W%i%$%^%j$N%P!<%A%c%k%[%9%H$N%Z!<%8$K(B - <code>http://www.domain.tld/domain/</code> $B$X$N%j%s%/$r@_CV$7$^$9!#(B - $B$=$7$F!"%P!<%A%c%k%[%9%H$N%Z!<%8$G$O!"=c?h$JAjBP%j%s%/(B (<em>$BNc(B:</em> - "<code>file.html</code>" $B$d(B "<code>../icons/image.gif</code>")$B!"(B - $B$"$k$$$O(B <code>/domain/</code> $B$G;O$^$k%j%s%/(B (<em>$BNc(B:</em> - "<code>http://www.domain.tld/domain/misc/file.html</code>" $B$d(B - "<code>/domain/misc/file.html</code>") $B$@$1$r@_CV$7$^$9!#(B</p> - - <p>$B$3$l$K$O!"4vJ,$+$N5,N'$,I,MW$H$J$j$^$9$,!"(B - $B$3$N$h$&$J%,%$%I%i%$%s$rCi<B$K<i$k$3$H$K$h$j!"$?$$$F$$$N>l9g!"(B - $B$9$Y$F$N%V%i%&%6$G(B $B!=(B $B?7$7$$%V%i%&%6$G$b8E$$$b$N$G$b(B $B!=(B - $B:n@.$7$?%Z!<%8$,8+$($k$H$$$&$3$H$rJ]>Z$7$^$9!#(B</p> + <p>この例にはどういう意味があるでしょうか? これは + "<code>/domain</code>" で始まる URI へのリクエストはすべて、 + バーチャルホスト <code>www.domain.tld</code> で処理される、 + という意味です。つまり、すべてのクライアントで + <code>http://www.domain.tld/domain/</code> でアクセスできるページが、 + <code>Host:</code> ヘッダを送ってくるクライアントであれば + <code>http://www.domain.tld/</code> としてもアクセスできる、 + という意味です。</p> + + <p>これが動作するようにするには、 + プライマリのバーチャルホストのページに + <code>http://www.domain.tld/domain/</code> へのリンクを設置します。 + そして、バーチャルホストのページでは、純粋な相対リンク (<em>例:</em> + "<code>file.html</code>" や "<code>../icons/image.gif</code>")、 + あるいは <code>/domain/</code> で始まるリンク (<em>例:</em> + "<code>http://www.domain.tld/domain/misc/file.html</code>" や + "<code>/domain/misc/file.html</code>") だけを設置します。</p> + + <p>これには、幾分かの規律が必要となりますが、 + このようなガイドラインを忠実に守ることにより、たいていの場合、 + すべてのブラウザで ― 新しいブラウザでも古いものでも ― + 作成したページが見えるということを保証します。</p> </section> </manualpage> |