You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by nd...@apache.org on 2015/04/17 22:01:38 UTC
svn commit: r1674389 [13/16] - in /httpd/httpd/branches/2.2.x/docs/manual:
./ howto/ misc/ mod/ programs/ vhosts/
Modified: httpd/httpd/branches/2.2.x/docs/manual/mod/mod_proxy.html.ja.utf8
URL: http://svn.apache.org/viewvc/httpd/httpd/branches/2.2.x/docs/manual/mod/mod_proxy.html.ja.utf8?rev=1674389&r1=1674388&r2=1674389&view=diff
==============================================================================
--- httpd/httpd/branches/2.2.x/docs/manual/mod/mod_proxy.html.ja.utf8 [utf-8] (original)
+++ httpd/httpd/branches/2.2.x/docs/manual/mod/mod_proxy.html.ja.utf8 [utf-8] Fri Apr 17 20:01:34 2015
@@ -68,7 +68,18 @@
提供されています。これらの機能を利用するためには、該当するモジュールを
組み込んで設定しなければなりません。</p>
</div>
-<div id="quickview"><h3 class="directives">ディレクティブ</h3>
+<div id="quickview"><h3>トピック</h3>
+<ul id="topics">
+<li><img alt="" src="../images/down.gif" /> <a href="#forwardreverse">フォワードプロキシとリバースプロキシ/ゲートウェイ</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#examples">基本の例</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#workers">ワーカー</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#access">プロキシへのアクセス制御</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#startup">遅い起動</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#intranet">イントラネットプロキシ</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#envsettings">プロトコルの調整</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#request-bodies">リクエストボディ</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#x-headers">リバースプロキシのリクエストヘッダ</a></li>
+</ul><h3 class="directives">ディレクティブ</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#allowconnect">AllowCONNECT</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#balancermember">BalancerMember</a></li>
@@ -98,18 +109,7 @@
<li><img alt="" src="../images/down.gif" /> <a href="#proxytimeout">ProxyTimeout</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxyvia">ProxyVia</a></li>
</ul>
-<h3>トピック</h3>
-<ul id="topics">
-<li><img alt="" src="../images/down.gif" /> <a href="#forwardreverse">フォワードプロキシとリバースプロキシ/ゲートウェイ</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#examples">基本の例</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#workers">ワーカー</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#access">プロキシへのアクセス制御</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#startup">遅い起動</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#intranet">イントラネットプロキシ</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#envsettings">プロトコルの調整</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#request-bodies">リクエストボディ</a></li>
-<li><img alt="" src="../images/down.gif" /> <a href="#x-headers">リバースプロキシのリクエストヘッダ</a></li>
-</ul><h3>参照</h3>
+<h3>参照</h3>
<ul class="seealso">
<li><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code></li>
<li><code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code></li>
@@ -119,1562 +119,1562 @@
<li><code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code></li>
</ul><ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="AllowCONNECT" id="AllowCONNECT">AllowCONNECT</a> <a name="allowconnect" id="allowconnect">ディレクティブ</a></h2>
-<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシを経由して、どのポートに <code>CONNECT</code>
-できるかを指定する</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>AllowCONNECT <var>port</var> [<var>port</var>] ...</code></td></tr>
-<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>AllowCONNECT 443 563</code></td></tr>
-<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
-<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
-<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
-</table>
- <p><code class="directive">AllowCONNECT</code> はプロキシの <code>CONNECT</code>
- メソッドが接続を許可するポート番号のリストを指定します。
- 今日のブラウザは、<code>https</code> コネクションが要求されていて、
- HTTP 上でのプロキシによるトンネリングができるときに、
- このメソッドを使います。</p>
+<div class="section">
+<h2><a name="forwardreverse" id="forwardreverse">フォワードプロキシとリバースプロキシ/ゲートウェイ</a></h2>
+ <p>Apache は <dfn>フォワード</dfn> プロキシとしても、
+ <dfn>リバース</dfn> プロキシ (別名 <dfn>ゲートウェイ</dfn>) としても設定できます。</p>
- <p>デフォルトの設定では、https のデフォルトポート (<code>443</code>) と
- デフォルトの snews ポート (<code>563</code>) が有効になっています。
- このデフォルトを上書きして、リストに記載したポートにのみ接続を許可したい場合、
- <code class="directive">AllowCONNECT</code> ディレクティブを使用します。</p>
+ <p>通常の <dfn>フォワードプロキシ</dfn> はクライアントと
+ <em>オリジンサーバ</em> <span class="transnote">(<em>訳注:</em> コンテンツ生成元のサーバ)</span>
+ の間に位置する中間サーバです。
+ オリジンサーバからコンテンツを取得するために、クライアントは
+ 行き先をオリジンサーバに指定したリクエストをプロキシに送ります。
+ プロキシはオリジンサーバからコンテンツを受け取り、
+ 取得したコンテンツをクライアントに返します。
+ クライアントがフォワードプロキシ経由で他のサイトにアクセスするには、
+ 特別にそのための設定をしなければなりません。</p>
- <p><code>CONNECT</code> を使用するには、<code class="module"><a href="../mod/mod_proxy_connect.html">mod_proxy_connect</a></code>
- がサーバに組み込まれていなければならないことに注意してください。</p>
+ <p>フォワードプロキシの一般的な使用方法は、ファイアウォールによって
+ 制限されている内部のクライアントに、インターネットへのアクセスを
+ 提供するものです。フォワードプロキシはネットワークの使用量を
+ 減らすために (<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> で提供されている)
+ キャッシュ機能を用いることもできます。</p>
-</div>
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="BalancerMember" id="BalancerMember">BalancerMember</a> <a name="balancermember" id="balancermember">ディレクティブ</a></h2>
-<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>ロードバランサのグループにメンバーを追加</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>BalancerMember [<var>balancerurl</var>] <var>url</var> [<var>key=value [key=value ...]]</var></code></td></tr>
-<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>ディレクトリ</td></tr>
-<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
-<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
-<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>BalancerMember は Apache 2.2 以降でのみ使用可能</td></tr>
-</table>
- <p>このディレクティブでロードバランサのグループにメンバを追加します。
- <code><Proxy <var>balancer://</var>...></code> ディレクティブのコンテナ
- 内で使われることが多く、<code class="directive"><a href="#proxypass">ProxyPass</a></code>
- ディレクティブと共通のキーバリューペアのパラメータを取ります。</p>
- <p><code><Proxy <var>balancer://</var>...></code> ディレクティブの
- コンテナ内に書かない場合のみ、 balancerurl 引数が必要です。 これは
- <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブで
- バランサを定義した時の URL と同じ働きをします。</p>
+ <p>フォワードプロキシは <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> ディレクティブで
+ 有効になります。フォワードプロキシを使うと、クライアントは本当の身元を
+ 隠して任意のサイトにアクセスできるようになります。このため、フォワードプロキシを
+ 有効にする前に、承認されたクライアントのみがプロキシにアクセスできるように
+ <a href="#access">サーバを安全にする</a>ことが重要です。</p>
-</div>
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="NoProxy" id="NoProxy">NoProxy</a> <a name="noproxy" id="noproxy">ディレクティブ</a></h2>
-<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>直接接続する ホスト、ドメイン、ネットワーク</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>NoProxy <var>host</var> [<var>host</var>] ...</code></td></tr>
-<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
-<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
-<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
-</table>
- <p>このディレクティブはイントラネット中の Apache プロキシサーバにのみ
- 有用です。<code class="directive">NoProxy</code> ディレクティブは空白区切りで、
- サブネット、IP アドレス、ホスト、ドメインのリストを指定します。
- これらのどれかにマッチするホストへのリクエストは <code class="directive"><a href="#proxyremote">ProxyRemote</a></code> で設定されたプロキシサーバに
- フォワードされず、直接処理されます。</p>
+ <p>一方 <dfn>リバースプロキシ</dfn> (<dfn>ゲートウェイ</dfn>) は、
+ クライアントから普通のウェブサーバのように見えます。
+ クライアント側に特別な設定は必要ありません。
+ クライアントはリバースプロキシの名前空間内のコンテンツに対して通常どおりの
+ リクエストを行ないます。リバースプロキシはリクエストをどこに送れば良いかを判定し、
+ あたかも自分自身がオリジンサーバであったかのようにクライアントに
+ コンテンツを返します。</p>
- <div class="example"><h3>例</h3><p><code>
- ProxyRemote * http://firewall.example.com:81<br />
- NoProxy .example.com 192.168.112.0/21
- </code></p></div>
+ <p>リバースプロキシのよくある利用方法は、インターネットユーザに
+ ファイアウォールの中にあるサーバにアクセスさせる場合です。
+ リバースプロキシは複数のバックエンドサーバへ負荷分散をするために
+ 使ったり、遅いバックエンドエンドサーバのためにキャッシュ機能を提供したり
+ するためにも使えます。また、リバースプロキシは複数のサーバを
+ 同じ URL 空間にまとめるために使うこともできます。</p>
- <p><code class="directive">NoProxy</code> ディレクティブの <var>host</var> 引数は
- 以下の種類のどれかです:</p>
+ <p>リバースプロキシは <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブや
+ <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> ディレクティブの
+ <code>[P]</code> フラグを使うことで有効になります。リバースプロキシの
+ 設定のために <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> を設定する必要は
+ <em>ありません</em>。</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="examples" id="examples">基本の例</a></h2>
- <dl>
-
- <dt><var><a name="domain" id="domain">Domain</a></var></dt>
- <dd>
- <p><dfn>Domain</dfn> は先頭にピリオドを書いた部分 DNS ドメイン名です。
- 同一 DNS ドメイン及びゾーン (<em>すなわち</em>、ホスト名の末尾がすべて
- <var>Domain</var> で終わっているということ) に属するホストのリストを
- 表します)。</p>
+ <p>以下の例は手始めの簡単な例です。個々のディレクティブの意味は
+ それぞれの説明をお読みください。</p>
- <div class="example"><h3>例</h3><p><code>
- .com .apache.org.
+ <p>またキャッシュ機能を有効にしたい場合は、<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>
+ の説明を読んでください。</p>
+
+ <div class="example"><h3>リバースプロキシ</h3><p><code>
+ ProxyPass /foo http://foo.example.com/bar<br />
+ ProxyPassReverse /foo http://foo.example.com/bar
</code></p></div>
- <p><var>Domain</var> を <a href="#hostname">Hostname</a> と区別するために (意味的にも構文的にも。DNS ドメインも
- DNS の A レコードを持つことができるのです!)、<var>Domain</var> は
- 常にピリオドで始まります。</p>
+ <div class="example"><h3>フォワードプロキシ</h3><p><code>
+ ProxyRequests On<br />
+ ProxyVia On<br />
+ <br />
+ <Proxy *><br />
+ <span class="indent">
+ Order deny,allow<br />
+ Deny from all<br />
+ Allow from internal.example.com<br />
+ </span>
+ </Proxy>
+ </code></p></div>
- <div class="note"><h3>注</h3>
- <p>ドメイン名の比較は大文字小文字を区別せずに行なわれ、<var>Domain</var>
- は常に DNS ツリーのルートから始まるものとみなされます。ですから、
- 次の二つのドメイン <code>.ExAmple.com</code> と
- <code>.example.com.</code> (最後のピリオドに注目) は同一であると
- みなされます。ドメインの比較は DNS ルックアップなしで行なわれるため、
- サブネットの比較よりもずっと効率的です。</p>
- </div></dd>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="workers" id="workers">ワーカー</a></h2>
+ <p>プロキシは <dfn>ワーカー</dfn> と呼ばれるオブジェクトで
+ オリジンサーバとの通信パラメータの設定を管理します。
+ ふたつの組み込みワーカーが存在します。デフォルトのフォワードプロキシワーカーと
+ デフォルトのリバースプロキシワーカーです。
+ 追加のワーカーを明示的に設定可能です。</p>
-
- <dt><var><a name="subnet" id="subnet">SubNet</a></var></dt>
- <dd>
- <p><dfn>SubNet</dfn> は数値形式 (ドットで区切られた四つの数字) の
- 部分インターネットアドレスです。後にスラッシュと <var>Subnet</var>
- の意味のあるビット数を指定するネットマスクとを続けることができます。
- 共通のネットワークインタフェースを使って到達することのできるサブネットを
- 表すために使われます。明示的にネットマスクを指定しない場合は
- 最後の省略された (もしくは値が 0 の) 数字がマスクを指定します。
- (この場合は、ネットマスクは 8 ビット単位でしか指定できません。)
- 例:</p>
+ <p>ふたつのデフォルトワーカーは固定の設定を持ちます。
+ リクエストが他のワーカーにマッチしない場合に使われます。
+ これらは HTTP のキープアライブもコネクションプーリングも使いません。
+ オリジンサーバへの TCP 接続はリクエストのたびに接続と切断をします。</p>
- <dl>
- <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>サブネット<code>192.168.112.0/21</code> と 21 ビット有効な
- ネットマスク (<code>255.255.248.0</code> という形式で使われることも
- あります)</dd>
- </dl>
+ <p>明示的に設定するワーカーは、URL で識別されます。
+ 通常、<code class="directive"><a href="#proxypass">ProxyPass</a></code>
+ または <code class="directive"><a href="#proxypassmatch">ProxyPassMatch</a></code>
+ をリバースプロキシ設定に使うことで、これらのワーカーを生成および設定します:</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>
+ <div class="example"><p><code>
+ ProxyPass /example http://backend.example.com connectiontimeout=5 timeout=30
+ </code></p></div>
-
- <dt><var><a name="ipaddr" id="ipaddr">IPAddr</a></var></dt>
- <dd>
- <p><dfn>IPAddr</dfn> は数値形式 (ドットで区切られた四つの数字) の
- 完全インターネットアドレスです。通常はこのアドレスはホストを
- 表しますが、必ずしもアドレスに対応する DNS ドメイン名があるわけでは
- ありません。</p>
+ <p>上記はオリジンサーバの <code>http://backend.example.com</code>
+ の URL に関連するワーカーを生成します。ワーカーは指定したタイムアウト値を持ちます。
+ フォワードプロキシで使われる時、ワーカーは一般に
+ <code class="directive"><a href="#proxyset">ProxySet</a></code> ディレクティブで
+ 定義します:</p>
- <div class="example"><h3>例</h3><p><code>
- 192.168.123.7
- </code></p></div>
+ <div class="example"><p><code>
+ ProxySet http://backend.example.com connectiontimeout=5 timeout=30
+ </code></p></div>
- <div class="note"><h3>注</h3>
- <p><var>IPAddr</var> は DNS システムにより解決される必要がないので、
- apache の性能が向上するかもしれません。</p>
- </div></dd>
+ <p>または、別の方法として <code class="directive"><a href="#proxy">Proxy</a></code>
+ と <code class="directive"><a href="#proxyset">ProxySet</a></code>でも定義できます:</p>
-
- <dt><var><a name="hostname" id="hostname">Hostname</a></var></dt>
- <dd>
- <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>
+ <div class="example"><p><code>
+ <Proxy http://backend.example.com><br />
+ <span class="indent">
+ ProxySet connectiontimeout=5 timeout=30
+ </span>
+ </Proxy>
+ </code></p></div>
- <div class="example"><h3>例</h3><p><code>
- prep.ai.example.com<br />
- www.apache.org
- </code></p></div>
-
- <div class="note"><h3>注</h3>
- <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.ExAmple.com</code> と
- <code>www.example.com.</code> (最後のピリオドに注目) は同一であると
- みなされます。</p>
- </div></dd>
- </dl>
+ <p>フォワードモードで明示的に設定したワーカーを使うのは、あまり一般的ではありません。
+ なぜなら、通常フォワードプロキシは多くの異なるオリジンサーバと通信するからです。
+ もし一部のオリジンサーバを頻繁に利用するなら、それらに対して
+ 明示的にワーカーを生成するのは有用です。明示的に設定したワーカーは、
+ それ自体はフォワードプロキシかリバースプロキシかのコンセプトを持ちません。
+ それらはオリジンサーバと通信する共通のコンセプトを抱えています。
+ リバースプロキシで使うために <code class="directive"><a href="#proxypass">ProxyPass</a></code>
+ で生成したワーカーは、オリジンサーバへの URL がワーカーの URL にマッチすれば
+ いつでもフォワードプロキシとして使えます。これは、逆も成り立ちます。</p>
-<h3>参照</h3>
-<ul>
-<li><a href="../dns-caveats.html">DNS に関する問題</a></li>
-</ul>
-</div>
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="Proxy" id="Proxy"><Proxy></a> <a name="proxy" id="proxy">ディレクティブ</a></h2>
-<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされるリソースに適用されるコンテナ</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code><Proxy <var>wildcard-url</var>> ...</Proxy></code></td></tr>
-<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
-<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
-<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
-</table>
- <p><code class="directive"><Proxy></code> セクション中の
- ディレクティブはマッチするプロキシされるコンテンツにのみ適用されます。
- シェル形式のワイルドカードが使えます。</p>
+ <p>ワーカーを識別する URL はそのオリジンサーバの URL です。
+ URL は指定したパス部分も含みます:</p>
- <p>例えば、次の設定は <code>yournetwork.example.com</code> の
- ホストにのみプロキシサーバを経由したアクセスを許可します:</p>
+ <div class="example"><p><code>
+ ProxyPass /examples http://backend.example.com/examples<br />
+ ProxyPass /docs http://backend.example.com/docs
+ </code></p></div>
- <div class="example"><p><code>
- <Proxy *><br />
- <span class="indent">
- Order Deny,Allow<br />
- Deny from all<br />
- Allow from yournetwork.example.com<br />
- </span>
- </Proxy>
- </code></p></div>
+ <p>この例はふたつの異なるワーカーを定義しています。
+ それぞれ別のコネクションプールと設定を使います。</p>
- <p>次の例は <code>example.com</code> の <code>foo</code> ディレクトリの
- すべてのファイルに対して、プロキシサーバを通して送られたときには
- <code>INCLUDES</code> フィルタを通して送るように設定します:</p>
+ <div class="warning"><h3>ワーカーの共有</h3>
+ <p>もしワーカーの URL に重なりがあれば、ワーカーの共有が起きます。
+ 重なりとは、ワーカーの URL が、設定ファイル内で後から定義した
+ 別のワーカーの URL の先頭文字列と部分一致することです。
+ 次の例で</p>
- <div class="example"><p><code>
- <Proxy http://example.com/foo/*><br />
- <span class="indent">
- SetOutputFilter INCLUDES<br />
- </span>
- </Proxy>
- </code></p></div>
+ <div class="example"><p><code>
+ ProxyPass /apps http://backend.example.com/ timeout=60<br />
+ ProxyPass /examples http://backend.example.com/examples timeout=10
+ </code></p></div>
+ <p>ふたつめのワーカーは実際には生成されません。
+ その代わり、ひとつめのワーカーを使います。この利点は、ただひとつの
+ コネクションプールで済む点です。このため、コネクションをより頻繁に再利用できます。
+ 後ろのワーカーに明示的に書いた設定のすべてのパラメータと一部の設定のデフォルト値は、
+ 最初のワーカーに書いた設定を上書きするのを注意してください。
+ これは警告としてログに残ります。上記の例で言えば、<code>/apps</code>
+ の URL に対するタイムアウト値は、結果として <code>60</code> ではなく
+ <code>10</code>になるのです。</p>
-<h3>参照</h3>
-<ul>
-<li><code class="directive"><a href="#proxymatch"><ProxyMatch></a></code></li>
-</ul>
-</div>
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="ProxyBadHeader" id="ProxyBadHeader">ProxyBadHeader</a> <a name="proxybadheader" id="proxybadheader">ディレクティブ</a></h2>
-<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>応答におかしなヘッダがある場合の扱い方を決める</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyBadHeader IsError|Ignore|StartBody</code></td></tr>
-<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyBadHeader IsError</code></td></tr>
-<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
-<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
-<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
-<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.0.44 以降で使用可能</td></tr>
-</table>
- <p><code class="directive">ProxyBadHeader</code> ディレクティブは構文的に
- 間違ったレスポンスヘッダ (<em>つまり</em> コロンを含まないもの) を受け取ったときに
- <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> がどう振る舞うかを決めます。以下の引数を
- 取ることができます:</p>
+ <p>もしワーカーの共有を避けたければ、ワーカーの定義を URL の長さでソートしてください。
+ そして、長い URL から並べてください。もしワーカーの共有を最大限にしたいなら、
+ 逆順に並べます。<code class="directive"><a href="#proxypass">ProxyPass</a></code>
+ ディレクティブの並びについて、関連する警告も見てください。</p>
- <dl>
- <dt><code>IsError</code></dt>
- <dd>リクエストを中止して 502 (Bad Gateway) 応答を返す。
- これがデフォルトの動作です。</dd>
+ </div>
- <dt><code>Ignore</code></dt>
- <dd>間違ったヘッダ行をそもそも存在しなかったものとして扱う。</dd>
+ <p>明示的に設定するワーカーにはふたつの種類があります:
+ <dfn>直接のワーカー</dfn> と <dfn>バランサー (負荷分散) ワーカー</dfn> です。
+ これらは後ほど <code class="directive"><a href="#proxypass">ProxyPass</a></code>
+ ディレクティブの中で説明する重要な設定パラメータを数多くサポートします。
+ 同じパラメータは <code class="directive"><a href="#proxyset">ProxySet</a></code>
+ を使っても設定可能です。</p>
- <dt><code>StartBody</code></dt>
- <dd>間違ったヘッダ行を受け取ったら、ヘッダの読み込みを終了して、
- それ以降の残りをボディとして扱う。これはヘッダとボディの間に空行を入れ忘れて
- しまっているような、きちんと動作していないバックエンドサーバがあるときに、
- 問題を回避するのに役に立ちます。</dd>
- </dl>
+ <p>直接のワーカーで利用できるパラメータはプロトコルに依存します。
+ プロトコルはオリジンサーバの URL で指定されます。
+ 利用可能なプロトコルは <code>ajp</code>,
+ <code>ftp</code>, <code>http</code>, <code>scgi</code> です。</p>
-</div>
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="ProxyBlock" id="ProxyBlock">ProxyBlock</a> <a name="proxyblock" id="proxyblock">ディレクティブ</a></h2>
-<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシ接続を禁止する語句、ホスト名、ドメインを指定する</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyBlock *|<var>word</var>|<var>host</var>|<var>domain</var>
-[<var>word</var>|<var>host</var>|<var>domain</var>] ...</code></td></tr>
-<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
-<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
-<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
-</table>
- <p><code class="directive">ProxyBlock</code> ディレクティブは空白で区切られた
- 語句、ホスト名、ドメインのリストを指定します。サイト名にその語句、ホスト名、
- ドメインを含むサイトへの HTTP、HTTPS、FTP によるドキュメントのリクエストは
- プロキシサーバにより <em>ブロックされます</em>。プロキシモジュールは
- 起動時にホスト名と思しき項目の IP アドレスを調べ、後のテストのために
- キャッシュします。これにより、サーバの起動が少し遅くなるかもしれません。</p>
+ <p>バランサーワーカーは仮想ワーカーです。直接のワーカーを
+ リクエストを実際に処理するメンバーとして使います。
+ それぞれのバランサーは複数のメンバーを持ちえます。
+ リクエストを処理する時、設定した負荷分散のアルゴリズムにもとづき
+ メンバーのひとつを選択します。</p>
- <div class="example"><h3>Example</h3><p><code>
- ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
- </code></p></div>
+ <p>ワーカーの URL のプロトコルスキームに <code>balancer</code>
+ を使うと、バランサワーカーが生成されます。
+ バランサーの URL が、バランサワーカーを一意に識別します。
+ <code class="directive"><a href="#balancermember">BalancerMember</a></code>
+ を使って、バランサーにメンバーを追加します。</p>
- <p><code>rocky.wotsamattau.edu</code> が IP アドレスで参照されたときでも
- マッチします。</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="access" id="access">プロキシへのアクセス制御</a></h2>
+ <p>プロキシへのアクセスは以下のように <code class="directive"><a href="#proxy"><Proxy></a></code> コンテナの中に
+ ディレクティブを書くことで制御できます:</p>
- <p><code>wotsamattau.edu</code> のマッチには <code>wotsamattau</code>
- だけでも十分です。</p>
+ <div class="example"><p><code>
+ <Proxy *><br />
+ <span class="indent">
+ Order Deny,Allow<br />
+ Deny from all<br />
+ Allow from 192.168.0<br />
+ </span>
+ </Proxy>
+ </code></p></div>
- <div class="example"><p><code>
- ProxyBlock *
- </code></p></div>
+ <p>アクセス制御のためのディレクティブのより詳しい情報は
+ <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> をお読みください。</p>
- <p>はすべてのサイトへの接続をブロックすることに注意してください。</p>
+ <p>(<code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> ディレクティブを
+ 使って) フォワードプロキシを設定している場合は、厳しくアクセス
+ 制限を行なうことが非常に大切です。そうしないと、任意のクライアントが
+ 身元を明かすことなく任意のホストにアクセスするためにプロキシサーバを使うことが
+ できてしまいます。これはあなた自身のネットワークにとっても、インターネット
+ 全体にとっても危険なことです。(<code>ProxyRequests Off</code> にして
+ <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブを使って)
+ リバースプロキシを使っている場合には、クライアントはあなたが明示的に
+ 設定したホストにしかアクセスできないため、フォワードプロキシのとき
+ ほどアクセス制御に力を注がなくても大丈夫です。</p>
-</div>
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="ProxyDomain" id="ProxyDomain">ProxyDomain</a> <a name="proxydomain" id="proxydomain">ディレクティブ</a></h2>
-<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされたリクエストのデフォルトのドメイン名</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyDomain <var>Domain</var></code></td></tr>
-<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
-<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
-<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
-</table>
- <p>このディレクティブはイントラネット内の Apache プロキシサーバにのみ
- 有用です。<code class="directive">ProxyDomain</code> ディレクティブは
- apache プロキシサーバが属するデフォルトのドメインを指定します。
- ドメイン名の無いリクエストを受けた場合、設定された <var>Domain</var>
- が追加された同じホストへのリダイレクト応答が返されます。</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="startup" id="startup">遅い起動</a></h2>
+ <p><code class="directive"><a href="#proxyblock">ProxyBlock</a></code> ディレクティブを使っている場合、
+ 後に行うマッチ判定のため、起動時にホストの名前解決をして
+ IP アドレスをキャッシュします。ホスト名の名前解決の
+ 速さによっては、数秒 (かそれ以上) かかるかもしれません。</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="intranet" id="intranet">イントラネットプロキシ</a></h2>
+ <p>イントラネットにある Apache プロキシサーバは外部へのリクエストを
+ 会社のファイアウォールを通して送らなければなりません。(このためには
+ 個々の <var>scheme</var> についてそれぞれ、ファイアウォールの
+ プロキシにフォワードされるように
+ <code class="directive"><a href="#proxyremote">ProxyRemote</a></code> ディレクティブを
+ 設定してください)。しかしイントラネット内のリソースにアクセスするときは、
+ ファイアウォールを通さないでもアクセスできます。
+ どのホストがイントラネットに属し、直接アクセスすべきかを指定するには、
+ <code class="directive"><a href="#noproxy">NoProxy</a></code> ディレクティブが
+ 役に立ちます。</p>
- <div class="example"><h3>例</h3><p><code>
- ProxyRemote * http://firewall.example.com:81<br />
- NoProxy .example.com 192.168.112.0/21<br />
- ProxyDomain .example.com
- </code></p></div>
+ <p>イントラネット内のユーザは WWW のリクエストでローカルドメインを
+ 省略することがよくあります。<code>http://somehost.example.com/</code>
+ というリクエストの代わりに "http://somehost/" をリクエストしたりします。
+ このようなリクエストを受け付け、サーバに設定されているローカルドメインが
+ 暗黙のうちに使われていると解釈して、単純にリクエストを処理するものも
+ 商用プロキシサーバの中にはあります。
+ サーバが <a href="#proxyrequests">プロキシのサービス用に設定されていて</a>
+ <code class="directive"><a href="#proxydomain">ProxyDomain</a></code> ディレクティブが
+ 使用された場合には、Apache はクライアントにリダイレクト応答を送って、
+ 正しい、完全な <span class="transnote">(<em>訳注:</em> fully qualified)</span>
+ サーバのアドレスに送ることができます。このように
+ リダイレクトすると、ユーザのブックマークが正しい完全なホスト名を含む
+ ことにもなるため、より好ましい方法と言えるでしょう。</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="envsettings" id="envsettings">プロトコルの調整</a></h2>
+ <p>Keepalive や HTTP/1.1 を適切に実装していないオリジンサーバに対して
+ <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> がリクエストを送信する場合、
+ HTTP/1.0 を使って keepalive を無しにしてリクエストを送るようにする <a href="../env.html">環境変数</a>が二つあります。これらは <code class="directive"><a href="../mod/mod_env.html#setenv">SetEnv</a></code> ディレクティブで設定します。</p>
-</div>
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="ProxyErrorOverride" id="ProxyErrorOverride">ProxyErrorOverride</a> <a name="proxyerroroverride" id="proxyerroroverride">ディレクティブ</a></h2>
-<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされたコンテンツのエラーページを上書きする</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyErrorOverride On|Off</code></td></tr>
-<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyErrorOverride Off</code></td></tr>
-<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
-<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
-<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
-<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.0 以降で使用可能</td></tr>
-</table>
- <p>このディレクティブはリバースプロキシを使用していて、
- エンドユーザに送られるエラーページの外見を共通のものにしたいときに
- 有用です。このディレクティブは (<code class="module"><a href="../mod/mod_include.html">mod_include</a></code> の SSI によって)
- インクルードされたファイルがエラーコードを取得して、正しく動作を
- するようにもします (デフォルトの動作は、プロキシされたサーバの
- エラーページの表示で、このディレクティブを有効にすると SSI のエラー
- メッセージを表示します)。</p>
+ <p><code>force-proxy-request-1.0</code> と <code>proxy-nokeepalive</code>
+ がその環境変数です。</p>
- <p>このディレクティブは informational (1xx), 成功 (2xx),
- リダイレクト (3xx) ステータスのレスポンス処理には影響しません。</p>
+ <div class="example"><p><code>
+ <Location /buggyappserver/><br />
+ <span class="indent">
+ ProxyPass http://buggyappserver:7001/foo/<br />
+ SetEnv force-proxy-request-1.0 1<br />
+ SetEnv proxy-nokeepalive 1<br />
+ </span>
+ </Location>
+ </code></p></div>
-</div>
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="ProxyFtpDirCharset" id="ProxyFtpDirCharset">ProxyFtpDirCharset</a> <a name="proxyftpdircharset" id="proxyftpdircharset">ディレクティブ</a></h2>
-<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされた FTP (の一覧表示) のキャラクタセットを定義</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyFtpDirCharset <var>character set</var></code></td></tr>
-<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyFtpDirCharset ISO-8859-1</code></td></tr>
-<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ</td></tr>
-<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
-<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
-<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.2.7 以降で使用可能</td></tr>
-</table>
- <p><code class="directive">ProxyFtpDirCharset</code> ディレクティブは、
- <code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code> が HTML 形式で生成する FTP のディレクトリ一覧
- 画面のキャラクタセットを定義します。</p>
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="request-bodies" id="request-bodies">リクエストボディ</a></h2>
-</div>
+ <p>POST メソッドなどのリクエストには、リクエストボディがあります。
+ HTTP プロトコル仕様によると、ボディのあるリクエストは chunked
+ 転送を使うか、<code>Content-Length</code>
+ ヘッダを送信しなければなりません。
+ このようなリクエストをオリジンサーバに送信する場合、
+ <code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code> は常に <code>Content-Length</code>
+ を送ろうと試みます。しかし、ボディが大きく、オリジナルのリクエストで
+ chunked 転送が使われている場合、上流へのリクエストに
+ chunked 転送も使われます。
+ この挙動は <a href="../env.html">環境変数</a>で制御できます。
+ <code>proxy-sendcl</code> を設定すると、
+ 常に <code>Content-Length</code> を送り、最大限の互換性を確保します。
+ 逆に <code>proxy-sendchunked</code> を設定すると、
+ chunked エンコードを使ってリソース消費を抑えます。</p>
+
+ </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="x-headers" id="x-headers">リバースプロキシのリクエストヘッダ</a></h2>
+
+ <p>リバースプロキシとして振る舞う時 (例えば、<code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブを使う時) 、
+ <code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code> は、オリジンサーバに情報を渡すために
+ いくつかのリクエストヘッダを追加します。これらのヘッダは以下になります。</p>
+
+ <dl>
+ <dt><code>X-Forwarded-For</code></dt>
+ <dd>クライアントの IP アドレス。</dd>
+ <dt><code>X-Forwarded-Host</code></dt>
+ <dd>オリジナルのホスト名。クライアントが <code>Host</code>
+ リクエストヘッダで渡す。</dd>
+ <dt><code>X-Forwarded-Server</code></dt>
+ <dd>プロキシサーバのホスト名。</dd>
+ </dl>
+
+ <p>オリジンサーバ上でこれらのヘッダを扱う時は注意してください。
+ と言うのも、オリジナルのリクエストが既に同じヘッダを持っていると、
+ ヘッダが一つ以上の値 (コンマで区切られます) を持つ可能性があるからです。
+ 例えば、 オリジンサーバ上でオリジナルのクライアントのIPアドレスをログに
+ 記録するため、ログフォーマットに <code>%{X-Forwarded-For}i</code> を
+ 指定したとします。この時、リクエストが複数のプロキシを経由していると、
+ 複数のアドレスがログに載る可能性があります。</p>
+
+ <p><code class="directive"><a href="#proxypreservehost">ProxyPreserveHost</a></code> と
+ <code class="directive"><a href="#proxyvia">ProxyVia</a></code> ディレクティブ
+ も参照してください。これらは他のリクエストヘッダに影響を与えます。</p>
+
+ </div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="ProxyIOBufferSize" id="ProxyIOBufferSize">ProxyIOBufferSize</a> <a name="proxyiobuffersize" id="proxyiobuffersize">ディレクティブ</a></h2>
+<div class="directive-section"><h2><a name="AllowCONNECT" id="AllowCONNECT">AllowCONNECT</a> <a name="allowconnect" id="allowconnect">ディレクティブ</a></h2>
<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>内部データスループットバッファのサイズを決定する</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyIOBufferSize <var>bytes</var></code></td></tr>
-<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyIOBufferSize 8192</code></td></tr>
+<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシを経由して、どのポートに <code>CONNECT</code>
+できるかを指定する</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>AllowCONNECT <var>port</var> [<var>port</var>] ...</code></td></tr>
+<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>AllowCONNECT 443 563</code></td></tr>
<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
</table>
- <p><code class="directive">ProxyIOBufferSize</code> ディレクティブは入力と
- 出力用の一時メモリとして使われる内部バッファのサイズを調整します。
- サイズは <code>8192</code> 以下でなければなりません。</p>
+ <p><code class="directive">AllowCONNECT</code> はプロキシの <code>CONNECT</code>
+ メソッドが接続を許可するポート番号のリストを指定します。
+ 今日のブラウザは、<code>https</code> コネクションが要求されていて、
+ HTTP 上でのプロキシによるトンネリングができるときに、
+ このメソッドを使います。</p>
- <p>ほとんどすべての場合、この値を変更する理由はありません。</p>
+ <p>デフォルトの設定では、https のデフォルトポート (<code>443</code>) と
+ デフォルトの snews ポート (<code>563</code>) が有効になっています。
+ このデフォルトを上書きして、リストに記載したポートにのみ接続を許可したい場合、
+ <code class="directive">AllowCONNECT</code> ディレクティブを使用します。</p>
+
+ <p><code>CONNECT</code> を使用するには、<code class="module"><a href="../mod/mod_proxy_connect.html">mod_proxy_connect</a></code>
+ がサーバに組み込まれていなければならないことに注意してください。</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="ProxyMatch" id="ProxyMatch"><ProxyMatch></a> <a name="proxymatch" id="proxymatch">ディレクティブ</a></h2>
+<div class="directive-section"><h2><a name="BalancerMember" id="BalancerMember">BalancerMember</a> <a name="balancermember" id="balancermember">ディレクティブ</a></h2>
<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>正規表現でのマッチによるプロキシリソース用のディレクティブコンテナ</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code><ProxyMatch <var>regex</var>> ...</ProxyMatch></code></td></tr>
-<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
+<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>ロードバランサのグループにメンバーを追加</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>BalancerMember [<var>balancerurl</var>] <var>url</var> [<var>key=value [key=value ...]]</var></code></td></tr>
+<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>ディレクトリ</td></tr>
<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
+<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>BalancerMember は Apache 2.2 以降でのみ使用可能</td></tr>
</table>
- <p><code class="directive"><ProxyMatch></code> は URL のマッチに
- <a class="glossarylink" href="../glossary.html#regex" title="用語集を参照">正規表現</a> を用いることを除けば
- <code class="directive"><Proxy></code> ディレクティブと同じです。</p>
+ <p>このディレクティブでロードバランサのグループにメンバを追加します。
+ <code><Proxy <var>balancer://</var>...></code> ディレクティブのコンテナ
+ 内で使われることが多く、<code class="directive"><a href="#proxypass">ProxyPass</a></code>
+ ディレクティブと共通のキーバリューペアのパラメータを取ります。</p>
+ <p><code><Proxy <var>balancer://</var>...></code> ディレクティブの
+ コンテナ内に書かない場合のみ、 balancerurl 引数が必要です。 これは
+ <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブで
+ バランサを定義した時の URL と同じ働きをします。</p>
-<h3>参照</h3>
-<ul>
-<li><code class="directive"><a href="#proxy"><Proxy></a></code></li>
-</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="ProxyMaxForwards" id="ProxyMaxForwards">ProxyMaxForwards</a> <a name="proxymaxforwards" id="proxymaxforwards">ディレクティブ</a></h2>
+<div class="directive-section"><h2><a name="NoProxy" id="NoProxy">NoProxy</a> <a name="noproxy" id="noproxy">ディレクティブ</a></h2>
<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リクエストがフォワードされるプロキシの最大数</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyMaxForwards <var>number</var></code></td></tr>
-<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyMaxForwards -1</code></td></tr>
+<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>直接接続する ホスト、ドメイン、ネットワーク</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>NoProxy <var>host</var> [<var>host</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
-<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.0 以降で使用可能; Apache 2.2.7でデフォルト動作が変わりました</td></tr>
</table>
- <p><code class="directive">ProxyMaxForwards</code> ディレクティブは
- リクエストに <code>Max-Forwards</code> ヘッダが指定されていない場合に
- リクエストが通過可能なプロキシの最大数を設定します。これは
- プロキシの無限ループや DoS 攻撃を防ぐために設定されるかもしれません。</p>
+ <p>このディレクティブはイントラネット中の Apache プロキシサーバにのみ
+ 有用です。<code class="directive">NoProxy</code> ディレクティブは空白区切りで、
+ サブネット、IP アドレス、ホスト、ドメインのリストを指定します。
+ これらのどれかにマッチするホストへのリクエストは <code class="directive"><a href="#proxyremote">ProxyRemote</a></code> で設定されたプロキシサーバに
+ フォワードされず、直接処理されます。</p>
<div class="example"><h3>例</h3><p><code>
- ProxyMaxForwards 15
+ ProxyRemote * http://firewall.example.com:81<br />
+ NoProxy .example.com 192.168.112.0/21
</code></p></div>
- <p><code class="directive">ProxyMaxForwards</code> の設定は、HTTP/1.1 (RFC2616)
- に違反します。と言うのも、RFC2616 は、クライアントが <code>Max-Forwards</code>
- ヘッダをセットしない時、プロキシが <code>Max-Forwards</code> ヘッダを
- セットすることを禁じているからです。
- Apache の初期バージョンは常にセットする可能性がありました。
- <code class="directive">ProxyMaxForwards</code> に負数 (デフォルト値の -1 も含む)
- を指定すると、HTTP/1.1 準拠の動作になります。しかし、これは無限ループの危険性を残します。</p>
-
-</div>
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="ProxyPass" id="ProxyPass">ProxyPass</a> <a name="proxypass" id="proxypass">ディレクティブ</a></h2>
-<table class="directive">
-<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リモートサーバをローカルサーバの URL 空間にマップする</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPass [<var>path</var>] !|<var>url</var> [<var>key=value</var>
-<var>key=value</var> ...]] [nocanon] [interpolate]</code></td></tr>
-<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ</td></tr>
-<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
-<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
-</table>
- <p>このディレクティブはリモートサーバをローカルサーバの名前空間に
- マップできるようにします。ローカルサーバは通常の意味でのプロキシと
- しては動作せず、リモートサーバのミラーとして振る舞います。
- ローカルサーバはしばしば <dfn>リバースプロキシ</dfn> や <dfn>ゲートウェイ</dfn>
- と呼ばれます。
- <var>path</var> はローカルの仮想パスの名前です。<var>url</var> は
- リモートサーバの部分 URL になり、クエリー文字列を含むことはできません。</p>
-
- <div class="warning"><code class="directive">ProxyPass</code> ディレクティブを
- 使っているときは <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> ディレクティブは通常は
- <strong>off</strong> に設定されているべきです。</div>
+ <p><code class="directive">NoProxy</code> ディレクティブの <var>host</var> 引数は
+ 以下の種類のどれかです:</p>
- <p>ローカルサーバのアドレスが <code>http://example.com/</code> であると
- します。すると、</p>
+ <dl>
+
+ <dt><var><a name="domain" id="domain">Domain</a></var></dt>
+ <dd>
+ <p><dfn>Domain</dfn> は先頭にピリオドを書いた部分 DNS ドメイン名です。
+ 同一 DNS ドメイン及びゾーン (<em>すなわち</em>、ホスト名の末尾がすべて
+ <var>Domain</var> で終わっているということ) に属するホストのリストを
+ 表します)。</p>
- <div class="example"><p><code>
- ProxyPass /mirror/foo/ http://backend.example.com/
+ <div class="example"><h3>例</h3><p><code>
+ .com .apache.org.
</code></p></div>
- <p>と設定すると <code>http://example.com/mirror/foo/bar</code> への
- リクエストが内部的に <code>http://backend.example.com/bar</code> への
- プロキシリクエストに変換されることになります。</p>
-
- <div class="warning">
- <p>もし第一引数が <strong>/</strong> で終端するならば、第二引数も
- <strong>/</strong> で終端すべきです。逆もまた然りで、第一引数が終端しないならば、
- 第二引数も終端すべきではありません。
- これに反すると、バックエンドサーバ向けに変換されたリクエストは
- 必要なスラッシュを欠く可能性があり、バックエンドサーバは期待する結果を返しません。
- </p>
- </div>
-
- <p>サブディレクトリをリバースプロキシしたくないときに <code>!</code> は
- 役に立ちます。<em>例えば</em>、</p>
+ <p><var>Domain</var> を <a href="#hostname">Hostname</a> と区別するために (意味的にも構文的にも。DNS ドメインも
+ DNS の A レコードを持つことができるのです!)、<var>Domain</var> は
+ 常にピリオドで始まります。</p>
- <div class="example"><p><code>
- ProxyPass /mirror/foo/i !<br />
- ProxyPass /mirror/foo http://backend.example.com
- </code></p></div>
+ <div class="note"><h3>注</h3>
+ <p>ドメイン名の比較は大文字小文字を区別せずに行なわれ、<var>Domain</var>
+ は常に DNS ツリーのルートから始まるものとみなされます。ですから、
+ 次の二つのドメイン <code>.ExAmple.com</code> と
+ <code>.example.com.</code> (最後のピリオドに注目) は同一であると
+ みなされます。ドメインの比較は DNS ルックアップなしで行なわれるため、
+ サブネットの比較よりもずっと効率的です。</p>
+ </div></dd>
- <p>は <code>/mirror/foo/i</code> を <em>除く</em>
- <code>/mirror/foo</code> へのすべてのリクエストを
- <code>backend.example.com</code> にプロキシします。</p>
+
+ <dt><var><a name="subnet" id="subnet">SubNet</a></var></dt>
+ <dd>
+ <p><dfn>SubNet</dfn> は数値形式 (ドットで区切られた四つの数字) の
+ 部分インターネットアドレスです。後にスラッシュと <var>Subnet</var>
+ の意味のあるビット数を指定するネットマスクとを続けることができます。
+ 共通のネットワークインタフェースを使って到達することのできるサブネットを
+ 表すために使われます。明示的にネットマスクを指定しない場合は
+ 最後の省略された (もしくは値が 0 の) 数字がマスクを指定します。
+ (この場合は、ネットマスクは 8 ビット単位でしか指定できません。)
+ 例:</p>
- <div class="warning"><h3>ProxyPass ディレクティブの順序</h3>
- <p><code class="directive"><a href="#proxypass">ProxyPass</a></code> と
- <code class="directive"><a href="#proxypassmatch">ProxyPassMatch</a></code> のルールの
- 設定は設定ファイル中の順序どおりにチェックされます。
- 最初にマッチしたルールが勝ちます。このため通常は、
- マッチが重なる <code class="directive"><a href="#proxypass">ProxyPass</a></code>
- ルールは、長い URL が先になるように並べるべきです。
- そうしないと、後に書かれた長い URL にマッチするルールが、
- 先に書かれた短い URL の先頭の部分にマッチしたルールで隠される可能性があります。
- ワーカーの共有とも多少の関係があることにも注意してください。</p>
+ <dl>
+ <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>サブネット<code>192.168.112.0/21</code> と 21 ビット有効な
+ ネットマスク (<code>255.255.248.0</code> という形式で使われることも
+ あります)</dd>
+ </dl>
- <p>同じ理由で、否定処理も一般的な <code class="directive">ProxyPass</code>
- ディレクティブの <em>前に</em> 書くべきです。</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>
- </div>
+
+ <dt><var><a name="ipaddr" id="ipaddr">IPAddr</a></var></dt>
+ <dd>
+ <p><dfn>IPAddr</dfn> は数値形式 (ドットで区切られた四つの数字) の
+ 完全インターネットアドレスです。通常はこのアドレスはホストを
+ 表しますが、必ずしもアドレスに対応する DNS ドメイン名があるわけでは
+ ありません。</p>
- <p>Apache HTTP サーバ 2.1 以降、バックエンドサーバとの接続に
- プールされたコネクションを使えるようになりました。
- 要求に応じて生成されたコネクションは将来の使用のためにプール内に維持されます。
- プールサイズとその他の設定の制限は <code class="directive">ProxyPass</code>
- ディレクティブに <code>key=value</code> パラメータで設定します。
- パラメータは後述する表に示します。</p>
+ <div class="example"><h3>例</h3><p><code>
+ 192.168.123.7
+ </code></p></div>
- <p>デフォルトで、mod_proxy は Web サーバの子プロセスが同時に使いうる
- 最大数のコネクションを許し維持するようにします。
- この数をデフォルトから減らすには <code>max</code> パラメータを使ってください。
- 生存期間を設定するには <code>ttl</code> パラメータを使ってください。
- <code>ttl</code> 秒を越えて使われていないコネクションは切断されます。
- バックエンドサーバのキープアライブがタイムアウトして、切断されようとしている
- コネクションが使われることを防ぐために <code>ttl</code> を使えます。</p>
+ <div class="note"><h3>注</h3>
+ <p><var>IPAddr</var> は DNS システムにより解決される必要がないので、
+ apache の性能が向上するかもしれません。</p>
+ </div></dd>
- <p>コネクションプールは Web サーバの子プロセスごとに維持されます。
- <code>max</code> やその他の設定は、すべての子プロセスの間で調整はされません。
- ただし、設定により、ただひとつの子プロセスに設定を委ねた場合や
- MPM 設計によってはこの限りではありません。</p>
+
+ <dt><var><a name="hostname" id="hostname">Hostname</a></var></dt>
+ <dd>
+ <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>
<div class="example"><h3>例</h3><p><code>
- ProxyPass /example http://backend.example.com max=20 ttl=120 retry=300
+ prep.ai.example.com<br />
+ www.apache.org
</code></p></div>
- <table>
- <tr><th>パラメータ</th>
- <th>デフォルト値</th>
- <th>説明</th></tr>
- <tr><td>min</td>
- <td>0</td>
- <td>コネクションプール内で実際の接続に関連していないエントリの最小数です。
- デフォルト値から変更する必要があるのは、バックエンドとの接続に必要な
- ヒープメモリを事前に割り当てるか維持しなければいけない特別な状況のみです。</td></tr>
- <tr><td>max</td>
- <td>1...n</td>
- <td>バックエンドサーバとの接続数の最大値です。
- デフォルト値は、使用している MPM のプロセスあたりのスレッド数になっています。
- Prefork MPM では常に 1 で、他の MPM では <code class="directive">ThreadsPerChild</code>
- ディレクティブで調節できます。</td></tr>
- <tr><td>smax</td>
- <td>max</td>
- <td>もしコネクションプール内の接続中エントリが <code>ttl</code> パラメータ
- で設定した生存期間より長く未使用のままであれば、
- この指定値を越える分のエントリを解放します。
- もしエントリが関連するコネクションを持てば、接続を閉じます。
- デフォルト値から変更する必要があるとすれば、
- コネクションが生存期間を越えてしまった時に、
- コネクションプール内の該当エントリの解放とコネクションの切断を
- より積極的に必要とする特別な場合のみです。</td></tr>
- <tr><td>acquire</td>
- <td>-</td>
- <td>設定すると、コネクションプールからフリーのコネクションを取得するために
- 待機する待ち時間 (ミリ秒単位) の最大値になります。フリーのコネクションがプールになかった場合は、
- <code>SERVER_BUSY</code> ステータスをクライアントに返します。
- </td></tr>
- <tr><td>connectiontimeout</td>
- <td>timeout</td>
- <td>接続タイムアウトを秒で指定します。
- バックエンドに接続を完了するまでの Apache の待ち時間です。
- 値の最後に ms を書くと、タイムアウトの単位をミリ秒にできます。
- </td></tr>
- <tr><td>disablereuse</td>
- <td>Off</td>
- <td>使用後すぐに mod_proxy がバックエンドとの接続を切断してほしい時は、
- このパラメータを有効にすべきです。そうすることで、バックエンドとの
- 永続的な接続とプーリングを無効にできます。
- これはいくつかの状況下で役に立ちます。例えば、Apache とバックエンドサーバ
- の間にファイアウォールが存在し (プロトコルは問わないとします)、黙って
- 接続を切られる場合や、あるいは、バックエンドサーバ自体が DNS で
- ラウンドロビンされている場合などです。コネクションプーリングによる再利用を
- 無効にするには、このパラメータ値を <code>On</code> にしてください。
- </td></tr>
- <tr><td>flushpackets</td>
- <td>off</td>
- <td>プロキシモジュールが "chunk" ごとに出力データを自動的に強制送信(フラッシュ)
- するかを指定します。 'off' は必要な時だけ強制送信します。
- 'on' はそれぞれの "chunk" データごとに強制送信します。 'auto' は、一定時間待機し、
- 'flushwait' で指定したミリ秒の間、入力データが無ければ強制送信します。
- 現在、このパラメータは AJP でのみ意味があります。
- </td></tr>
- <tr><td>flushwait</td>
- <td>10</td>
- <td>'flushpackets' パラメータの値が 'auto' の場合、出力データを強制送信する前に、
- 次の入力をどのぐらい待つかをミリ秒単位で指定します。
- </td></tr>
- <tr><td>keepalive</td>
- <td>Off</td>
- <td><p>バックエンドサーバと Apache の間にファイアーウォールがある場合には、
- このパラメータを使ってください。ファイアウォールは往々にして、
- 非活動状態のコネクションを落とそうとします。
- このフラグは OS に指示して、<code>KEEP_ALIVE</code> メッセージを非活動状態の
- コネクションでも送るようにします。これによってファイアウォールによってコネクションが
- 落とされることを防げます。keepalive を有効にするには、このプロパティを
- <code>On</code> にしてください。</p>
- <p>初期およびその後の TCP キープアライブの間隔は OS のグローバル設定に依存しますが、
- 2 時間以上にしたほうがよいでしょう。有効性を考えると、
- OS で設定した間隔はファイアウォールで使われる閾値より小さくあるべきです。</p>
- </td></tr>
- <tr><td>lbset</td>
- <td>0</td>
- <td>ワーカーが属するロードバランサのクラスタセットを設定します。
- ロードバランサは、より小さい lbset 値を持つメンバーから使おうとします。
- </td></tr>
- <tr><td>ping</td>
- <td>0</td>
- <td>この設定により、Web サーバは ajp13 通信でリクエストを送信する前に
- <code>CPING</code> を送るようになります。
- パラメータ値は、<code>CPONG</code> リプライを待つ時間を秒単位で指定します。
- この機能は、ハングしたり高負荷状態の Tomcat に起因する問題を回避するために
- 追加されました。 また、ajp13 側に ping/pong 機能のサポートが必要です。
- Tomcat は 3.3.2 以降, 4.1.28 以降, 5.0.13 以降が ping/pong 機能を実装しています。
- この機能は、通常利用でのネットワークトラフィックを増やす可能性があり、
- 問題になるかもしれません。しかし、クラスタを形成するノードの一部が
- ダウンしたり高負荷になった時にはトラフィックを抑制できる可能性があります。
- 現在、この設定は AJP でのみ意味があります。
- 値の最後に ms を書くと、単位をミリ秒にできます。
- </td></tr>
- <tr><td>loadfactor</td>
- <td>1</td>
- <td>ワーカーあたりの負荷係数です。BalancerMember で使います。
- 1 から 100 までの数字でそのワーカーに対する正規化された負荷率を指定します。
- </td></tr>
- <tr><td>redirect</td>
- <td>-</td>
- <td>ワーカーのリダイレクション経路です。この値は通常は、
- クラスタから安全にノードを取り除けるように動的にセットされます。
- もし設定すると、セッション ID 無しの全てのリクエストは、
- この値と同じルーティングパラメータを持つ
- BalancerMember にリダイレクトされます。
- </td></tr>
- <tr><td>retry</td>
- <td>60</td>
- <td>コネクションをプーリングするための、リトライのタイムアウトを秒で
- 指定します。バックエンドサーバへのコネクションプーリングが失敗した場合は、
- タイムアウトの期間が過ぎるまで、そのサーバにリクエストをフォワードしません。
- この機能を使うと、バックエンドサーバをメンテナンスのためにシャットダウンし、
- 後でオンラインに復帰させるといったことができます。
- 0 を指定すると、失敗したワーカーへ、タイムアウト無しで常にリトライします。
- </td></tr>
- <tr><td>route</td>
- <td>-</td>
- <td>ロードバランサで使われた場合のワーカーのルート値。
- ルート値はセッション ID に付加される値です。
- </td></tr>
- <tr><td>status</td>
- <td>-</td>
- <td>一文字でワーカーの初期状態を定義します: 'D' は無効 (disabled)、
- 'S' は停止 (stopped)、 'I' はエラー無視 (ignore-errors)、
- 'H' はホットスタンバイ (hot-standby)、 'E' はエラー状態 (error) です。
- '+' を文字の前に書いて有効にするか (これがデフォルト動作です)、 あるいは
- '-' を書いて無効にできます。つまり、 'S-E' の指定は、ワーカーを停止状態
- かつ、エラー状態フラグのクリアを意味します。
- </td></tr>
- <tr><td>timeout</td>
- <td><code class="directive"><a href="#proxytimeout">ProxyTimeout</a></code></td>
- <td>コネクションタイムアウトを秒で指定します。
- バックエンドからのデータ受信およびバックエンドへのデータ送信の
- Apache の待ち時間です。
- </td></tr>
- <tr><td>ttl</td>
- <td>-</td>
- <td>非活動状態のコネクションと、関連するコネクションプール内のエントリの
- 生存時間を秒で指定します。いったんこの制限に達すると、
- コネクションはふたたび使われることはありません。
- つまり、コネクションは一定時間後に閉じられます。
- </td></tr>
-
- </table>
+ <div class="note"><h3>注</h3>
+ <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.ExAmple.com</code> と
+ <code>www.example.com.</code> (最後のピリオドに注目) は同一であると
+ みなされます。</p>
+ </div></dd>
+ </dl>
- <p>もし <code class="directive">ProxyPass</code> ディレクティブのスキームが
- <code>balancer://</code> で始まる場合 (例えば <code>balancer://cluster/</code>、
- パス情報は無視されます)、バックエンドのサーバと実際には通信しない
- 仮想ワーカーが生成されます。通信しない代わりに、このワーカーは幾つかの
- "本物の" ワーカーの管理をつかさどります。
- この場合、いくつかの特殊パラメータを、この仮想ワーカーに対して設定できます。
- ロードバランス動作のより詳しい情報は、<code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>
- を参照してください。
- </p>
- <table>
- <tr><th>パラメータ</th>
- <th>デフォルト値</th>
- <th>説明</th></tr>
- <tr><td>lbmethod</td>
- <td>byrequests</td>
- <td>Balancer のロードバランス方法。使用するロードバランスの
- スケジューリング方法を選びます。処理したリクエストの数で重み付けする
- <code>byrequests</code> か、転送量のバイト数で重み付けする
- <code>bytraffic</code> か、待機中のリクエスト数で振り分ける
- <code>bybusyness</code> を設定できます (Apache HTTP サーバ 2.2.10 以降)。
- デフォルトは<code>byrequests</code> です。
- </td></tr>
- <tr><td>maxattempts</td>
- <td>ワーカーの数よりひとつ少ない数。あるいはワーカーがひとつであれば1</td>
- <td>フェイルオーバーを試みる最大の回数を指定します。
- </td></tr>
- <tr><td>nofailover</td>
- <td>Off</td>
- <td><code>On</code> になっていると、ワーカーがエラーを起こしたり
- 無効になっている場合にセッションが切れます。
- バックエンドサーバがセッションレプリケーションをサポートしていない場合は、
- On にしてください。
- </td></tr>
- <tr><td>stickysession</td>
- <td>-</td>
- <td>バランサーのスティッキーセッション名です。通常はこの値は <code>JSESSIONID</code>
- や <code>PHPSESSIONID</code> といったものになりますが、この値は
- セッションをサポートするバックエンドのアプリケーションサーバに依存します。
- バックエンドのアプリケーションサーバが、クッキーやURLエンコードID
- に異なるセッション名を使う場合(サーブレットコンテナのように)、
- | 文字でふたつの名前を区切ってください。
- 最初の名前がクッキー用で、二番目がURLパス用です。
- </td></tr>
- <tr><td>scolonpathdelim</td>
- <td>Off</td>
- <td><code>On</code> にセットすると、セミコロン文字 ';' をスティッキーセッション
- の別の区切り文字として使えるようになります。
- これは主に mod_jk の動作に合わせるために使います。例えば、
- <code>JSESSIONID=6736bcf34;foo=aabfa</code> のような指定です。
- </td></tr>
- <tr><td>timeout</td>
- <td>0</td>
- <td>バランサーのタイムアウトを秒で指定します。
- この値を設定すると、フリーのワーカーを取得するまでの最大待機時間になります。
- デフォルトでは待機しません。
- </td></tr>
- <tr><td>failonstatus</td>
- <td>-</td>
- <td>ひとつ、あるいはコンマ区切りの複数の HTTP ステータスコードです。
- この値を設定すると、列挙したステータスコードのどれかをバックエンドが返した時、
- そのワーカーをエラー状態にします。ワーカーのエラーからの回復は
- 他のワーカーエラーと同じように動作します。
- Apache HTTP サーバ 2.2.17 以降で使用可能です。
- </td></tr>
+<h3>参照</h3>
+<ul>
+<li><a href="../dns-caveats.html">DNS に関する問題</a></li>
+</ul>
+</div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="directive-section"><h2><a name="Proxy" id="Proxy"><Proxy></a> <a name="proxy" id="proxy">ディレクティブ</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされるリソースに適用されるコンテナ</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code><Proxy <var>wildcard-url</var>> ...</Proxy></code></td></tr>
+<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
+<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
+<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
+</table>
+ <p><code class="directive"><Proxy></code> セクション中の
+ ディレクティブはマッチするプロキシされるコンテンツにのみ適用されます。
+ シェル形式のワイルドカードが使えます。</p>
+
+ <p>例えば、次の設定は <code>yournetwork.example.com</code> の
+ ホストにのみプロキシサーバを経由したアクセスを許可します:</p>
- </table>
- <p>バランサーの設定例</p>
<div class="example"><p><code>
- ProxyPass /special-area http://special.example.com smax=5 max=10<br />
- ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid nofailover=On<br />
- <Proxy balancer://mycluster><br />
+ <Proxy *><br />
<span class="indent">
- BalancerMember ajp://1.2.3.4:8009<br />
- BalancerMember ajp://1.2.3.5:8009 loadfactor=20<br />
- # Less powerful server, don't send as many requests there,<br />
- BalancerMember ajp://1.2.3.6:8009 loadfactor=5<br />
+ Order Deny,Allow<br />
+ Deny from all<br />
+ Allow from yournetwork.example.com<br />
</span>
</Proxy>
</code></p></div>
- <p>ホットスタンバイの設定例です。他のメンバーが利用できない場合のみ
- 使われます。</p>
+ <p>次の例は <code>example.com</code> の <code>foo</code> ディレクトリの
+ すべてのファイルに対して、プロキシサーバを通して送られたときには
+ <code>INCLUDES</code> フィルタを通して送るように設定します:</p>
+
<div class="example"><p><code>
- ProxyPass / balancer://hotcluster/ <br />
- <Proxy balancer://hotcluster><br />
+ <Proxy http://example.com/foo/*><br />
<span class="indent">
- BalancerMember ajp://1.2.3.4:8009 loadfactor=1<br />
- BalancerMember ajp://1.2.3.5:8009 loadfactor=2<br />
- # The below is the hot standby<br />
- BalancerMember ajp://1.2.3.6:8009 status=+H<br />
- ProxySet lbmethod=bytraffic
+ SetOutputFilter INCLUDES<br />
</span>
</Proxy>
</code></p></div>
- <p>通常、mod_proxy は ProxyPass した URL を正規化します。
- しかし、これによりバックエンドの互換性に問題が生じることがあります。
- 特に、<var>PATH_INFO</var> を使っている場合に起きがちです。
- <var>nocanon</var> オプションは正規化を抑制し、URL のパスをそのまま ("raw")
- バックエンドに伝えます。これがバックエンドのセキュリティに影響を与える可能性に
- 注意してください。と言うのも、プロキシによって提供されていた、
- URL ベースの攻撃への通常の一定の防御を無くすことになるからです。</p>
-
- <p>オプショナルな <var>interpolate</var> キーワード (httpd 2.2.9 以降で利用可能)
- を <code class="directive">ProxyPassInterpolateEnv</code> ディレクティブと
- 一緒に使うと、<var>${VARNAME}</var> 形式で、 ProxyPass 設定に環境変数を
- 使えるようになります。この時、標準的な CGI 由来の環境変数の多くは
- 置換に使えないことに注意してください。そのため、複雑なルールの記述のためには、
- <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> に頼ることになるでしょう。</p>
-
- <p><code class="directive"><a href="../mod/core.html#location"><Location></a></code> セクションの中で使われた場合、最初の引数は
- 省略され、ローカルディレクトリは <code class="directive"><a href="../mod/core.html#location"><Location></a></code> から取得されます。
- 同じことは <code class="directive"><a href="../mod/core.html#locationmatch"><LocationMatch></a></code>
- セクション内でも起きます。しかし、ProxyPass は正規表現を解釈しないので、
[... 1650 lines stripped ...]