diff options
Diffstat (limited to 'docs/manual/mod/mod_proxy.html.ja.utf8')
-rw-r--r-- | docs/manual/mod/mod_proxy.html.ja.utf8 | 950 |
1 files changed, 706 insertions, 244 deletions
diff --git a/docs/manual/mod/mod_proxy.html.ja.utf8 b/docs/manual/mod/mod_proxy.html.ja.utf8 index b38060c2..a1051bc4 100644 --- a/docs/manual/mod/mod_proxy.html.ja.utf8 +++ b/docs/manual/mod/mod_proxy.html.ja.utf8 @@ -21,12 +21,10 @@ <div id="page-content"> <div id="preamble"><h1>Apache モジュール mod_proxy</h1> <div class="toplang"> -<p><span>Available Languages: </span><a href="../en/mod/mod_proxy.html" hreflang="en" rel="alternate" title="English"> en </a> | +<p><span>翻訳済み言語: </span><a href="../en/mod/mod_proxy.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../fr/mod/mod_proxy.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | <a href="../ja/mod/mod_proxy.html" title="Japanese"> ja </a></p> </div> -<div class="outofdate">This translation may be out of date. Check the - English version for recent changes.</div> <table class="module"><tr><th><a href="module-dict.html#Description">説明:</a></th><td>HTTP/1.1 プロキシ/ゲートウェイサーバ</td></tr> <tr><th><a href="module-dict.html#Status">ステータス:</a></th><td>Extension</td></tr> <tr><th><a href="module-dict.html#ModuleIdentifier">モジュール識別子:</a></th><td>proxy_module</td></tr> @@ -49,11 +47,11 @@ <p>Apache のプロキシ機能は <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> の他に、 いくつかのモジュールに分割されています: <code class="module"><a href="../mod/mod_proxy_http.html">mod_proxy_http</a></code>, <code class="module"><a href="../mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code>, - <code class="module"><a href="../mod/mod_proxy_ajp.html">mod_proxy_ajp</a></code>, <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>, + <code class="module"><a href="../mod/mod_proxy_ajp.html">mod_proxy_ajp</a></code>, <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>, <code class="module"><a href="../mod/mod_proxy_connect.html">mod_proxy_connect</a></code> です。ですから、 特定のプロキシの機能を使いたい場合は、<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> <em>と</em> 該当するモジュールをサーバに (コンパイル時に静的に行なうか - <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> で動的に読み込むかして) + <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> で動的に読み込むかして) 組み込む必要があります。</p> <p>これに加えて、他のモジュールによって拡張機能が提供されています。 @@ -95,13 +93,15 @@ </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="#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> <ul class="seealso"> <li><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code></li> @@ -113,44 +113,45 @@ </ul></div> <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> -<h2><a name="forwardreverse" id="forwardreverse">フォワードプロキシとリバースプロキシ</a></h2> - <p>Apache は<dfn>フォワード</dfn>プロキシとしても、 - <dfn>リバース</dfn>プロキシとしても設定することができます。</p> +<h2><a name="forwardreverse" id="forwardreverse">フォワードプロキシとリバースプロキシ/ゲートウェイ</a></h2> + <p>Apache は <dfn>フォワード</dfn> プロキシとしても、 + <dfn>リバース</dfn> プロキシ (別名 <dfn>ゲートウェイ</dfn>) としても設定できます。</p> - <p>通常の<dfn>フォワードプロキシ</dfn>はクライアントと + <p>通常の <dfn>フォワードプロキシ</dfn> はクライアントと <em>オリジンサーバ</em> <span class="transnote">(<em>訳注:</em> コンテンツ生成元のサーバ)</span> の間に位置する中間サーバです。 - オリジンサーバからコンテンツを取得する過程では、クライアントは - 行き先としてオリジンサーバを指定しつつプロキシにリクエストを送り、 - プロキシはオリジンサーバからコンテンツ取得のリクエストを送り、 - コンテンツが取得できればそれをクライアントに返します。 - クライアントが他のサイトにフォワードプロクシ経由でアクセスするには、 - 特別にそれ用の設定をしなければなりません。</p> + オリジンサーバからコンテンツを取得するために、クライアントは + 行き先をオリジンサーバに指定したリクエストをプロキシに送ります。 + プロキシはオリジンサーバからコンテンツを受け取り、 + 取得したコンテンツをクライアントに返します。 + クライアントがフォワードプロキシ経由で他のサイトにアクセスするには、 + 特別にそのための設定をしなければなりません。</p> <p>フォワードプロキシの一般的な使用方法は、ファイアウォールによって - 制限されている内部のクライアントにインターネットへのアクセスを + 制限されている内部のクライアントに、インターネットへのアクセスを 提供するものです。フォワードプロキシはネットワークの使用量を - 減らすために (<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> で提供されている) + 減らすために (<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> で提供されている) キャッシュ機能を用いることもできます。</p> <p>フォワードプロキシは <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> ディレクティブで - 有効になります。フォワードプロキシでは、クライアントは本当の身元を - 隠して任意のサイトにアクセスできるようになるため、フォワードプロキシを + 有効になります。フォワードプロキシを使うと、クライアントは本当の身元を + 隠して任意のサイトにアクセスできるようになります。このため、フォワードプロキシを 有効にする前に、承認されたクライアントのみがプロキシにアクセスできるように <a href="#access">サーバを安全にする</a>ことが重要です。</p> - <p>一方<dfn>リバースプロキシ</dfn>は、クライアントには普通の - ウェブサーバのように見えます。クライアント側に特別な設定は必要ありません。 - クライアントはリバースプロキシの名前空間に対して通常のコンテンツへの - リクエストを行ないます。プロキシはリクエストをどこに送れば良いかを判定し、 + <p>一方 <dfn>リバースプロキシ</dfn> (<dfn>ゲートウェイ</dfn>) は、 + クライアントから普通のウェブサーバのように見えます。 + クライアント側に特別な設定は必要ありません。 + クライアントはリバースプロキシの名前空間内のコンテンツに対して通常どおりの + リクエストを行ないます。リバースプロキシはリクエストをどこに送れば良いかを判定し、 あたかも自分自身がオリジンサーバであったかのようにクライアントに コンテンツを返します。</p> <p>リバースプロキシのよくある利用方法は、インターネットユーザに - ファイアウォールの中にあるサーバにアクセスを与えるというものです。 + ファイアウォールの中にあるサーバにアクセスさせる場合です。 リバースプロキシは複数のバックエンドサーバへ負荷分散をするために 使ったり、遅いバックエンドエンドサーバのためにキャッシュ機能を提供したり - するために使えます。また、リバースプロキシは複数のサーバを + するためにも使えます。また、リバースプロキシは複数のサーバを 同じ URL 空間にまとめるために使うこともできます。</p> <p>リバースプロキシは <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブや @@ -165,9 +166,14 @@ <p>以下の例は手始めの簡単な例です。個々のディレクティブの意味は それぞれの説明をお読みください。</p> - <p>またキャッシュ機能を有効にしたい場合は、<code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> + <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> + <div class="example"><h3>フォワードプロキシ</h3><p><code> ProxyRequests On<br /> ProxyVia On<br /> @@ -181,23 +187,126 @@ </Proxy> </code></p></div> - <div class="example"><h3>リバースプロキシ</h3><p><code> - ProxyRequests Off<br /> - <br /> - <Proxy *><br /> - <span class="indent"> - Order deny,allow<br /> - Allow from all<br /> - </span> - </Proxy><br /> - <br /> - ProxyPass /foo http://foo.example.com/bar<br /> - ProxyPassReverse /foo http://foo.example.com/bar - </code></p></div> + </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> + + <p>ふたつのデフォルトワーカーは固定の設定を持ちます。 + リクエストが他のワーカーにマッチしない場合に使われます。 + これらは HTTP のキープアライブもコネクションプーリングも使いません。 + オリジンサーバへの TCP 接続はリクエストのたびに接続と切断をします。</p> + + <p>明示的に設定するワーカーは、URL で識別されます。 + 通常、<code class="directive"><a href="#proxypass">ProxyPass</a></code> + または <code class="directive"><a href="#proxypassmatch">ProxyPassMatch</a></code> + をリバースプロキシ設定に使うことで、これらのワーカーを生成および設定します:</p> + + <div class="example"><p><code> + ProxyPass /example http://backend.example.com connectiontimeout=5 timeout=30 + </code></p></div> + + <p>上記はオリジンサーバの <code>http://backend.example.com</code> + の URL に関連するワーカーを生成します。ワーカーは指定したタイムアウト値を持ちます。 + フォワードプロキシで使われる時、ワーカーは一般に + <code class="directive"><a href="#proxyset">ProxySet</a></code> ディレクティブで + 定義します:</p> + + <div class="example"><p><code> + ProxySet http://backend.example.com connectiontimeout=5 timeout=30 + </code></p></div> + + <p>または、別の方法として <code class="directive"><a href="#proxy">Proxy</a></code> + と <code class="directive"><a href="#proxyset">ProxySet</a></code>でも定義できます:</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> + + <p>フォワードモードで明示的に設定したワーカーを使うのは、あまり一般的ではありません。 + なぜなら、通常フォワードプロキシは多くの異なるオリジンサーバと通信するからです。 + もし一部のオリジンサーバを頻繁に利用するなら、それらに対して + 明示的にワーカーを生成するのは有用です。明示的に設定したワーカーは、 + それ自体はフォワードプロキシかリバースプロキシかのコンセプトを持ちません。 + それらはオリジンサーバと通信する共通のコンセプトを抱えています。 + リバースプロキシで使うために <code class="directive"><a href="#proxypass">ProxyPass</a></code> + で生成したワーカーは、オリジンサーバへの URL がワーカーの URL にマッチすれば + いつでもフォワードプロキシとして使えます。これは、逆も成り立ちます。</p> + + <p>ワーカーを識別する URL はそのオリジンサーバの URL です。 + URL は指定したパス部分も含みます:</p> + + <div class="example"><p><code> + ProxyPass /examples http://backend.example.com/examples<br /> + ProxyPass /docs http://backend.example.com/docs + </code></p></div> + + <p>この例はふたつの異なるワーカーを定義しています。 + それぞれ別のコネクションプールと設定を使います。</p> + + <div class="warning"><h3>ワーカーの共有</h3> + <p>もしワーカーの URL に重なりがあれば、ワーカーの共有が起きます。 + 重なりとは、ワーカーの URL が、設定ファイル内で後から定義した + 別のワーカーの URL の先頭文字列と部分一致することです。 + 次の例で</p> + + <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> + + <p>もしワーカーの共有を避けたければ、ワーカーの定義を URL の長さでソートしてください。 + そして、長い URL から並べてください。もしワーカーの共有を最大限にしたいなら、 + 逆順に並べます。<code class="directive"><a href="#proxypass">ProxyPass</a></code> + ディレクティブの並びについて、関連する警告も見てください。</p> + + </div> + + <p>明示的に設定するワーカーにはふたつの種類があります: + <dfn>直接のワーカー</dfn> と <dfn>バランサー (負荷分散) ワーカー</dfn> です。 + これらは後ほど <code class="directive"><a href="#proxypass">ProxyPass</a></code> + ディレクティブの中で説明する重要な設定パラメータを数多くサポートします。 + 同じパラメータは <code class="directive"><a href="#proxyset">ProxySet</a></code> + を使っても設定可能です。</p> + + <p>直接のワーカーで利用できるパラメータはプロトコルに依存します。 + プロトコルはオリジンサーバの URL で指定されます。 + 利用可能なプロトコルは <code>ajp</code>, + <code>ftp</code>, <code>http</code>, <code>scgi</code> です。</p> + + <p>バランサーワーカーは仮想ワーカーです。直接のワーカーを + リクエストを実際に処理するメンバーとして使います。 + それぞれのバランサーは複数のメンバーを持ちえます。 + リクエストを処理する時、設定した負荷分散のアルゴリズムにもとづき + メンバーのひとつを選択します。</p> + + <p>ワーカーの URL のプロトコルスキームに <code>balancer</code> + を使うと、バランサワーカーが生成されます。 + バランサーの URL が、バランサワーカーを一意に識別します。 + <code class="directive"><a href="#balancermember">BalancerMember</a></code> + を使って、バランサーにメンバーを追加します。</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>プロキシへのアクセスは以下のように <code class="directive"><a href="#proxy"><Proxy></a></code> コンテナの中に ディレクティブを書くことで制御できます:</p> <div class="example"><p><code> @@ -216,7 +325,7 @@ <p>(<code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> ディレクティブを 使って) フォワードプロキシを設定している場合は、厳しくアクセス 制限を行なうことが非常に大切です。そうしないと、任意のクライアントが - 身元を明かすことなく任意のホストにアクセスするためにサーバを使うことが + 身元を明かすことなく任意のホストにアクセスするためにプロキシサーバを使うことが できてしまいます。これはあなた自身のネットワークにとっても、インターネット 全体にとっても危険なことです。(<code>ProxyRequests Off</code> にして <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブを使って) @@ -228,8 +337,8 @@ <div class="section"> <h2><a name="startup" id="startup">遅い起動</a></h2> <p><code class="directive"><a href="#proxyblock">ProxyBlock</a></code> ディレクティブを使っている場合、 - 後のテストのために起動時にホストの - IP アドレスが調べられてキャッシュされます。ホスト名のルックアップの + 後に行うマッチ判定のため、起動時にホストの名前解決をして + IP アドレスをキャッシュします。ホスト名の名前解決の 速さによっては、数秒 (かそれ以上) かかるかもしれません。</p> </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="section"> @@ -246,7 +355,7 @@ 役に立ちます。</p> <p>イントラネット内のユーザは WWW のリクエストでローカルドメインを - 省略することがよくあります。<code>http://somehost.example.com/</code> + 省略することがよくあります。<code>http://somehost.example.com/</code> というリクエストの代わりに "http://somehost/" をリクエストしたりします。 このようなリクエストを受け付け、サーバに設定されているローカルドメインが 暗黙のうちに使われていると解釈して、単純にリクエストを処理するものも @@ -254,17 +363,16 @@ サーバが <a href="#proxyrequests">プロキシのサービス用に設定されていて</a> <code class="directive"><a href="#proxydomain">ProxyDomain</a></code> ディレクティブが 使用された場合には、Apache はクライアントにリダイレクト応答を送って、 - 正しい、完全な (<span class="transnote">(<em>訳注:</em> fully qualified)</span>) + 正しい、完全な <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 を適切に実装していないアプリケーションサーバに対して + <p>Keepalive や HTTP/1.1 を適切に実装していないオリジンサーバに対して <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> がリクエストを送信する場合、 - HTTP/1.0 を使って keepalive を無しにしてリクエストを送るようにする - 環境変数が二つあります。これらは <code class="directive"><a href="../mod/mod_env.html#setenv">SetEnv</a></code> ディレクティブで設定します。</p> + HTTP/1.0 を使って keepalive を無しにしてリクエストを送るようにする <a href="../env.html">環境変数</a>が二つあります。これらは <code class="directive"><a href="../mod/mod_env.html#setenv">SetEnv</a></code> ディレクティブで設定します。</p> <p><code>force-proxy-request-1.0</code> と <code>proxy-nokeepalive</code> がその環境変数です。</p> @@ -284,22 +392,51 @@ <h2><a name="request-bodies" id="request-bodies">リクエストボディ</a></h2> <p>POST メソッドなどのリクエストには、リクエストボディがあります。 - HTTP プロトコル仕様によると、ボディのあるリクエストは chunked + 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> を設定すると、リソース消費を抑え、 - chnked エンコードを使って送信するようになります。</p> + <code>proxy-sendcl</code> を設定すると、 + 常に <code>Content-Length</code> を送り、最大限の互換性を確保します。 + 逆に <code>proxy-sendchunked</code> を設定すると、 + chunked エンコードを使ってリソース消費を抑えます。</p> - </div> + </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="AllowCONNECT" id="AllowCONNECT">AllowCONNECT</a> <a name="allowconnect" id="allowconnect">ディレクティブ</a></h2> <table class="directive"> @@ -322,23 +459,30 @@ このデフォルトを上書きして、リストに記載したポートにのみ接続を許可したい場合、 <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><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="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>Add a member to a load balancing group</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 is only available in Apache 2.2 - and later.</td></tr> -</table><p>The documentation for this directive has - not been translated yet. Please have a look at the English - version.</p></div> +<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> + +</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"> @@ -355,8 +499,8 @@ フォワードされず、直接処理されます。</p> <div class="example"><h3>例</h3><p><code> - ProxyRemote * http://firewall.mycompany.com:81<br /> - NoProxy .mycompany.com 192.168.112.0/21 + ProxyRemote * http://firewall.example.com:81<br /> + NoProxy .example.com 192.168.112.0/21 </code></p></div> <p><code class="directive">NoProxy</code> ディレクティブの <var>host</var> 引数は @@ -366,7 +510,7 @@ <dt><var><a name="domain" id="domain">Domain</a></var></dt> <dd> - <p><dfn>Domain</dfn> は先頭にピリオドの着いた部分 DNS ドメイン名です。 + <p><dfn>Domain</dfn> は先頭にピリオドを書いた部分 DNS ドメイン名です。 同一 DNS ドメイン及びゾーン (<em>すなわち</em>、ホスト名の末尾がすべて <var>Domain</var> で終わっているということ) に属するホストのリストを 表します)。</p> @@ -378,12 +522,12 @@ <p><var>Domain</var> を <a href="#hostname">Hostname</a> と区別するために (意味的にも構文的にも。DNS ドメインも DNS の A レコードを持つことができるのです!)、<var>Domain</var> は 常にピリオドで始まります。</p> - + <div class="note"><h3>注</h3> <p>ドメイン名の比較は大文字小文字を区別せずに行なわれ、<var>Domain</var> は常に DNS ツリーのルートから始まるものとみなされます。ですから、 - 次の二つのドメイン <code>.MyDomain.com</code> と - <code>.mydomain.com.</code> (最後のピリオドに注目) は同一であると + 次の二つのドメイン <code>.ExAmple.com</code> と + <code>.example.com.</code> (最後のピリオドに注目) は同一であると みなされます。ドメインの比較は DNS ルックアップなしで行なわれるため、 サブネットの比較よりもずっと効率的です。</p> </div></dd> @@ -428,7 +572,7 @@ <div class="example"><h3>例</h3><p><code> 192.168.123.7 </code></p></div> - + <div class="note"><h3>注</h3> <p><var>IPAddr</var> は DNS システムにより解決される必要がないので、 apache の性能が向上するかもしれません。</p> @@ -446,7 +590,7 @@ されなければなりません)。</p> <div class="example"><h3>例</h3><p><code> - prep.ai.mit.edu<br /> + prep.ai.example.com<br /> www.apache.org </code></p></div> @@ -457,8 +601,8 @@ ことがあります。</p> <p><var>Hostname</var> の比較は大文字小文字を区別せずに行なわれ、 <var>Hostname</var> は常に DNS ツリーのルートから始まるものとみなされます。 - ですから、二つのドメイン <code>WWW.MyDomain.com</code> と - <code>www.mydomain.com.</code> (最後のピリオドに注目) は同一であると + ですから、二つのドメイン <code>WWW.ExAmple.com</code> と + <code>www.example.com.</code> (最後のピリオドに注目) は同一であると みなされます。</p> </div></dd> </dl> @@ -506,8 +650,11 @@ </Proxy> </code></p></div> - +<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> @@ -518,10 +665,10 @@ <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>2.0.44 以降</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> コロンを含まないもの) を受け取ったときに + 間違ったレスポンスヘッダ (<em>つまり</em> コロンを含まないもの) を受け取ったときに <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> がどう振る舞うかを決めます。以下の引数を 取ることができます:</p> @@ -554,7 +701,7 @@ <p><code class="directive">ProxyBlock</code> ディレクティブは空白で区切られた 語句、ホスト名、ドメインのリストを指定します。サイト名にその語句、ホスト名、 ドメインを含むサイトへの HTTP、HTTPS、FTP によるドキュメントのリクエストは - プロキシサーバにより<em>ブロックされます</em>。プロキシモジュールは + プロキシサーバにより <em>ブロックされます</em>。プロキシモジュールは 起動時にホスト名と思しき項目の IP アドレスを調べ、後のテストのために キャッシュします。これにより、サーバの起動が少し遅くなるかもしれません。</p> @@ -591,9 +738,9 @@ が追加された同じホストへのリダイレクト応答が返されます。</p> <div class="example"><h3>例</h3><p><code> - ProxyRemote * http://firewall.mycompany.com:81<br /> - NoProxy .mycompany.com 192.168.112.0/21<br /> - ProxyDomain .mycompany.com + ProxyRemote * http://firewall.example.com:81<br /> + NoProxy .example.com 192.168.112.0/21<br /> + ProxyDomain .example.com </code></p></div> </div> @@ -606,7 +753,7 @@ <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>バージョン 2.0 以降で使用可能</td></tr> +<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.0 以降で使用可能</td></tr> </table> <p>このディレクティブはリバースプロキシを使用していて、 エンドユーザに送られるエラーページの外見を共通のものにしたいときに @@ -616,20 +763,26 @@ エラーページの表示で、このディレクティブを有効にすると SSI のエラー メッセージを表示します)。</p> + <p>このディレクティブは informational (1xx), 成功 (2xx), + リダイレクト (3xx) ステータスのレスポンス処理には影響しません。</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="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>Define the character set for proxied FTP listings</td></tr> +<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>Available in Apache 2.2.7 and later</td></tr> -</table><p>The documentation for this directive has - not been translated yet. Please have a look at the English - version.</p></div> +<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="directive-section"><h2><a name="ProxyIOBufferSize" id="ProxyIOBufferSize">ProxyIOBufferSize</a> <a name="proxyiobuffersize" id="proxyiobuffersize">ディレクティブ</a></h2> <table class="directive"> @@ -657,36 +810,49 @@ <tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr> </table> <p><code class="directive"><ProxyMatch></code> は URL のマッチに - <a class="glossarylink" href="../glossary.html#regex" title="用語集を参照">正規表現</a> を用いることを除いて + <a class="glossarylink" href="../glossary.html#regex" title="用語集を参照">正規表現</a> を用いることを除けば <code class="directive"><Proxy></code> ディレクティブと同じです。</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> <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 10</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#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> +<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> + プロキシの無限ループや DoS 攻撃を防ぐために設定されるかもしれません。</p> <div class="example"><h3>例</h3><p><code> ProxyMaxForwards 15 </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> ...]]</code></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> @@ -694,6 +860,8 @@ <p>このディレクティブはリモートサーバをローカルサーバの名前空間に マップできるようにします。ローカルサーバは通常の意味でのプロキシと しては動作せず、リモートサーバのミラーとして振る舞います。 + ローカルサーバはしばしば <dfn>リバースプロキシ</dfn> や <dfn>ゲートウェイ</dfn> + と呼ばれます。 <var>path</var> はローカルの仮想パスの名前です。<var>url</var> は リモートサーバの部分 URL になり、クエリー文字列を含むことはできません。</p> @@ -712,6 +880,15 @@ リクエストが内部的に <code>http://backend.example.com/bar</code> への プロキシリクエストに変換されることになります。</p> + <div class="warning"> + <p>もし第一引数が <strong>/</strong> で終端するならば、第二引数も + <strong>/</strong> で終端すべきです。逆もまた然りで、第一引数が終端しないならば、 + 第二引数も終端すべきではありません。 + これに反すると、バックエンドサーバ向けに変換されたリクエストは + 必要なスラッシュを欠く可能性があり、バックエンドサーバは期待する結果を返しません。 + </p> + </div> + <p>サブディレクトリをリバースプロキシしたくないときに <code>!</code> は 役に立ちます。<em>例えば</em>、</p> @@ -720,32 +897,48 @@ ProxyPass /mirror/foo http://backend.example.com </code></p></div> - <p>は <code>/mirror/foo/i</code> を<em>除く</em> + <p>は <code>/mirror/foo/i</code> を <em>除く</em> <code>/mirror/foo</code> へのすべてのリクエストを <code>backend.example.com</code> にプロキシします。</p> - <div class="note"><h3>注</h3> - <p>順番は重要です。一般的な <code class="directive">ProxyPass</code> - ディレクティブの<em>前に</em> - 除外ディレクティブを置く必要があります。</p> - </div> - - <p>2.1 の機能で、バックエンドサーバとの接続にプールされたコネクションを - 使えるようになりました。<code>key=value</code> 形式のパラメータで - このコネクションプーリングの調整ができます。<code>Hard Maximum</code> - のデフォルト値は、有効になっている MPM でのプロセス当たりのスレッド数と - 同じ数のコネクション数です。prefork MPM では通常は 1 で、worker MPM では - <code class="directive">ThreadsPerChild</code> で調整されます。</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> + + <p>同じ理由で、否定処理も一般的な <code class="directive">ProxyPass</code> + ディレクティブの <em>前に</em> 書くべきです。</p> + + </div> + + <p>Apache HTTP サーバ 2.1 以降、バックエンドサーバとの接続に + プールされたコネクションを使えるようになりました。 + 要求に応じて生成されたコネクションは将来の使用のためにプール内に維持されます。 + プールサイズとその他の設定の制限は <code class="directive">ProxyPass</code> + ディレクティブに <code>key=value</code> パラメータで設定します。 + パラメータは後述する表に示します。</p> + + <p>デフォルトで、mod_proxy は Web サーバの子プロセスが同時に使いうる + 最大数のコネクションを許し維持するようにします。 + この数をデフォルトから減らすには <code>max</code> パラメータを使ってください。 + 生存期間を設定するには <code>ttl</code> パラメータを使ってください。 + <code>ttl</code> 秒を越えて使われていないコネクションは切断されます。 + バックエンドサーバのキープアライブがタイムアウトして、切断されようとしている + コネクションが使われることを防ぐために <code>ttl</code> を使えます。</p> + + <p>コネクションプールは Web サーバの子プロセスごとに維持されます。 + <code>max</code> やその他の設定は、すべての子プロセスの間で調整はされません。 + ただし、設定により、ただひとつの子プロセスに設定を委ねた場合や + MPM 設計によってはこの限りではありません。</p> - <p><code>min</code> の設定で、バックエンドサーバとの間に何本のコネクションを - 常時開くかが決まります。Soft Maximum <code>smax</code> の数に - 達するまで必要に応じてコネクションは生成されます。<code>smax</code> - を超えた数のコネクションは、生存時間 <code>ttl</code> で切断されます。 - バックエンドサーバと Hard Maximum <code>max</code> の数以上のコネクションを - 生成することはありません。</p> - - <div class="example"><p><code> - ProxyPass /example http://backend.example.com smax=5 max=20 ttl=120 retry=300 + <div class="example"><h3>例</h3><p><code> + ProxyPass /example http://backend.example.com max=20 ttl=120 retry=300 </code></p></div> <table> @@ -754,52 +947,105 @@ <th>説明</th></tr> <tr><td>min</td> <td>0</td> - <td>バックエンドサーバとの接続で - 常に開いているコネクション数の最小値</td></tr> + <td>コネクションプール内で実際の接続に関連していないエントリの最小数です。 + デフォルト値から変更する必要があるのは、バックエンドとの接続に必要な + ヒープメモリを事前に割り当てるか維持しなければいけない特別な状況のみです。</td></tr> <tr><td>max</td> <td>1...n</td> - <td>バックエンドサーバとの接続数の Hard Maximum - <span class="transnote">(<em>訳注:</em> ハードリミット)</span>。 + <td>バックエンドサーバとの接続数の最大値です。 デフォルト値は、使用している MPM のプロセスあたりのスレッド数になっています。 - Prefork MPM では常に 1 で、Worker MPM では <code class="directive">ThreadsPerChild</code> - で調節できます。Hard Maximum 以上にバックエンドサーバとのコネクションを - 生成することはありません。</td></tr> + Prefork MPM では常に 1 で、他の MPM では <code class="directive">ThreadsPerChild</code> + ディレクティブで調節できます。</td></tr> <tr><td>smax</td> <td>max</td> - <td>接続数の Soft Maximum <span class="transnote">(<em>訳注:</em> ソフトリミット)</span>まで、 - コネクションは必要に応じて生成されます。 - <code>smax</code> を超えた数のコネクションは生存時間 <code>ttl</code> - で切断されます。 - </td></tr> - <tr><td>ttl</td> - <td>-</td> - <td><code>smax</code> 数を超えた非活動状態のコネクションの生存時間を、 - 秒で指定します。この期間内に使用されなかったコネクションは、 - 全て閉じられます。 - </td></tr> - <tr><td>timeout</td> - <td><code class="directive">Timeout</code></td> - <td>コネクションタイムアウトを秒で指定します。特に指定されなければ、 - フリーなコネクションを取得できるまで待ちます。このディレクティブは - <code>max</code> パラメータと合わせて使うことで、バックエンドサーバとの - 接続数を制御するのに使います。 - </td></tr> + <td>もしコネクションプール内の接続中エントリが <code>ttl</code> パラメータ + で設定した生存期間より長く未使用のままであれば、 + この指定値を越える分のエントリを解放します。 + もしエントリが関連するコネクションを持てば、接続を閉じます。 + デフォルト値から変更する必要があるとすれば、 + コネクションが生存期間を越えてしまった時に、 + コネクションプール内の該当エントリの解放とコネクションの切断を + より積極的に必要とする特別な場合のみです。</td></tr> <tr><td>acquire</td> <td>-</td> <td>設定すると、コネクションプールからフリーのコネクションを取得するために - 待機する待ち時間の最大値になります。フリーのコネクションがプールになかった場合は、 - <code>SERVER_BUSY</code> ステータスがクライアントに返されます。 + 待機する待ち時間 (ミリ秒単位) の最大値になります。フリーのコネクションがプールになかった場合は、 + <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>バックエンドサーバと Apache の間にファイアーウォールがある場合には、 + <td><p>バックエンドサーバと Apache の間にファイアーウォールがある場合には、 このパラメータを使ってください。ファイアウォールは往々にして、 非活動状態のコネクションを落とそうとします。 このフラグは OS に指示して、<code>KEEP_ALIVE</code> メッセージを非活動状態の - コネクションでも送るようにします (間隔は OS のグローバル設定に依存し、 - 通常は 120ms 間隔) 。これによってファイアウォールによってコネクションが + コネクションでも送るようにします。これによってファイアウォールによってコネクションが 落とされることを防げます。keepalive を有効にするには、このプロパティを - <code>On</code> にしてください。 + <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> @@ -808,50 +1054,63 @@ タイムアウトの期間が過ぎるまで、そのサーバにリクエストをフォワードしません。 この機能を使うと、バックエンドサーバをメンテナンスのためにシャットダウンし、 後でオンラインに復帰させるといったことができます。 - </td></tr> - <tr><td>loadfactor</td> - <td>1</td> - <td>ワーカーあたりの負荷係数です。BalancerMember で使います。 - 1 から 100 までの数字でそのワーカーに対する正規化された負荷率を指定します。 + 0 を指定すると、失敗したワーカーへ、タイムアウト無しで常にリトライします。 </td></tr> <tr><td>route</td> <td>-</td> - <td>ロードバランサで使った場合、ワーカーのルーティングをします。 - ルートはセッション ID に付加された値になります。 + <td>ロードバランサで使われた場合のワーカーのルート値。 + ルート値はセッション ID に付加される値です。 </td></tr> - <tr><td>redirect</td> + <tr><td>status</td> <td>-</td> - <td>ワーカーのリダイレクション経路です。この値は通常は、 - 安全にクラスタからノードを取り去る設定を動的に入れるために使います。 - セッション ID の無いリクエスト全てを指定した場合は、 - この値と同じルーティングパラメータを持つ - BalancerMember にリダイレクトされます。 + <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> - <p>Proxy ディレクティブのスキームが <code>balancer://</code> になっている場合は、 - バックエンドサーバと実際には通信しない仮想ワーカーが生成されます。 - このワーカーは幾つかの "本物の" ワーカーの管理をつかさどります。 - この場合パラメータは、この仮想ワーカーに対して設定されます。 + <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>-</td> + <td>byrequests</td> <td>Balancer のロードバランス方法。使用するロードバランスの スケジューリング方法を選びます。処理したリクエストの数で重み付けする <code>byrequests</code> か、転送量のバイト数で重み付けする - <code>bytraffic</code> を設定できます。デフォルトは - <code>byrequests</code> です。 + <code>bytraffic</code> か、待機中のリクエスト数で振り分ける + <code>bybusyness</code> を設定できます (Apache HTTP サーバ 2.2.10 以降)。 + デフォルトは<code>byrequests</code> です。 </td></tr> - <tr><td>stickysession</td> - <td>-</td> - <td>バランサーのスティッキーセッション名です。通常はこの値は <code>JSESSIONID</code> - や <code>PHPSESSIONID</code> といったものになりますが、この値は - バックエンドアプリケーションのサポートするセッションに依存します。 + <tr><td>maxattempts</td> + <td>ワーカーの数よりひとつ少ない数。あるいはワーカーがひとつであれば1</td> + <td>フェイルオーバーを試みる最大の回数を指定します。 </td></tr> <tr><td>nofailover</td> <td>Off</td> @@ -860,86 +1119,210 @@ バックエンドサーバがセッションレプリケーションをサポートしていない場合は、 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>maxattempts</td> - <td>1</td> - <td>フェイルオーバーを試みる最大の回数を指定します。 + <tr><td>failonstatus</td> + <td>-</td> + <td>ひとつ、あるいはコンマ区切りの複数の HTTP ステータスコードです。 + この値を設定すると、列挙したステータスコードのどれかをバックエンドが返した時、 + そのワーカーをエラー状態にします。ワーカーのエラーからの回復は + 他のワーカーエラーと同じように動作します。 + Apache HTTP サーバ 2.2.17 以降で使用可能です。 </td></tr> - + </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 nofailover=On<br /> + 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 /> <span class="indent"> - BalancerMember http://1.2.3.4:8009<br /> - BalancerMember http://1.2.3.5:8009 smax=10<br /> - # Less powerful server, don't send as many requests there<br /> - BalancerMember http://1.2.3.6:8009 smax=1 loadfactor=20<br /> + 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 /> </span> </Proxy> </code></p></div> + <p>ホットスタンバイの設定例です。他のメンバーが利用できない場合のみ + 使われます。</p> + <div class="example"><p><code> + ProxyPass / balancer://hotcluster/ <br /> + <Proxy balancer://hotcluster><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 + </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> から取得されます。</p> + 省略され、ローカルディレクトリは <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 は正規表現を解釈しないので、 + この状況では代わりに <code class="directive">ProxyPassMatch</code> を使う必要があります。</p> + + <p>このディレクティブは <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> や <code class="directive"><a href="../mod/core.html#files"><Files></a></code> セクション内では使えません。</p> <p>より柔軟なリバースプロキシの設定が必要な場合は、<code>[P]</code> フラグ付きの <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</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="ProxyPassInterpolateEnv" id="ProxyPassInterpolateEnv">ProxyPassInterpolateEnv</a> <a name="proxypassinterpolateenv" id="proxypassinterpolateenv">ディレクティブ</a></h2> <table class="directive"> -<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>Enable Environment Variable interpolation in Reverse Proxy configurations</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>ProxyPassInterpolateEnv On|Off</code></td></tr> <tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyPassInterpolateEnv 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>Available in httpd 2.2.9 and later</td></tr> -</table><p>The documentation for this directive has - not been translated yet. Please have a look at the English - version.</p></div> +<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.2.9 以降で使用可能</td></tr> +</table> + <p><code class="directive">ProxyPass</code>, <code class="directive">ProxyPassReverse</code>, + <code class="directive">ProxyPassReverseCookieDomain</code>, + <code class="directive">ProxyPassReverseCookiePath</code> の + <var>interpolate</var> 引数と一緒にこのディレクティブを使うと、 + 環境変数を使ってリバースプロキシを動的に設定できます。 + <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> など他のモジュールで環境変数を設定する想定です。 + <code class="directive">ProxyPass</code> ディレクティブ, + <code class="directive">ProxyPassReverse</code> ディレクティブ, + <code class="directive">ProxyPassReverseCookieDomain</code> ディレクティブ, + <code class="directive">ProxyPassReverseCookiePath</code> ディレクティブ + の動作に影響を与え、これらの設定ディレクティブ内の <code>${varname}</code> の文字列を + 環境変数 <code>varname</code> の値で置き換えます。 + (<var>interpolate</var> オプションがセットされていれば)</p> + <p>必要にならない限り、このディレクティブは無効にしてください。 + (サーバのパフォーマンスのため) </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="ProxyPassMatch" id="ProxyPassMatch">ProxyPassMatch</a> <a name="proxypassmatch" id="proxypassmatch">ディレクティブ</a></h2> <table class="directive"> -<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>Maps remote servers into the local server URL-space using regular expressions</td></tr> +<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>ProxyPassMatch [<var>regex</var>] !|<var>url</var> [<var>key=value</var> <var>[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>available in Apache 2.2.5 and later</td></tr> -</table><p>The documentation for this directive has - not been translated yet. Please have a look at the English - version.</p></div> +<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.2.5 以降で使用可能</td></tr> +</table> + <p>単純な文字列前方一致ではなく正規表現を用いることを除いて、このディレクティブは + <code class="directive"><a href="#proxypass">ProxyPass</a></code> と同じです。 + 指定した正規表現で <var>url</var> に対してマッチを試みます。 + マッチすると、サーバはマッチした丸括弧部分を前方参照の置換に使い、新しい <var>url</var> + にします。</p> + + <p>ローカルサーバのアドレスが <code>http://example.com/</code> だとします; + すると</p> + + <div class="example"><p><code> + ProxyPassMatch ^(/.*\.gif)$ http://backend.example.com$1 + </code></p></div> + + <p>は、ローカルの <code>http://example.com/foo/bar.gif</code> へのリクエストを + 内部的に <code>http://backend.example.com/foo/bar.gif</code> へのプロキシリクエスト + に変換します。</p> + <div class="note"><h3>注意</h3> + <p>URL 引数は正規表現による置換の <em>前</em> でも (当然、置換後でも)、 + URL として解釈できなければいけません。これは使えるマッチに制約をもたらします。 + 例えば、上記の例で</p> + <div class="example"><p><code> + ProxyPassMatch ^(/.*\.gif)$ http://backend.example.com:8000$1 + </code></p></div> + <p>と書いたとします。これはサーバ起動時にシンタックスエラーを起こすでしょう。 + これはバグです (ASF bugzilla の PR 46665)。 + 回避策としてマッチ判定を書き換える必要があります:</p> + <div class="example"><p><code> + ProxyPassMatch ^/(.*\.gif)$ http://backend.example.com:8000/$1 + </code></p></div> + </div> + + <p>サブディレクトリをリバースプロキシしたくないときに <code>!</code> は + 役に立ちます。</p> + + <p><code class="directive"><a href="../mod/core.html#locationmatch"><LocationMatch></a></code> セクションの中で使われた場合は、 + 最初の引数は省略され、正規表現は <code class="directive"><a href="../mod/core.html#locationmatch"><LocationMatch></a></code> から取得されます。</p> + + <p>より柔軟なリバースプロキシの設定が必要な場合は、<code>[P]</code> + フラグ付きの <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> + ディレクティブを参照してください。</p> + + <div class="warning"> + <h3>セキュリティの警告</h3> + <p>ルールの対象 URL の生成には注意してください。あなたのサーバがプロキシ + として振る舞う可能性のある URL に対して、クライアントへの影響があります。 + これによるセキュリティインパクトを考慮してください。URL のうち、スキームとホスト名 + の部分をそれぞれ確実に固定してください。そうでないと、クライアントに不当な影響を + 与えかねません。</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="ProxyPassReverse" id="ProxyPassReverse">ProxyPassReverse</a> <a name="proxypassreverse" id="proxypassreverse">ディレクティブ</a></h2> <table class="directive"> -<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リバースプロキシされたサーバから送られた HTTP 応答ヘッダの +<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リバースプロキシされたサーバから送られた HTTP レスポンスヘッダの URL を調整する</td></tr> -<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPassReverse [<var>path</var>] <var>url</var></code></td></tr> +<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPassReverse [<var>path</var>] <var>url</var> +[<var>interpolate</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 に HTTP リダイレクト応答の <code>Location</code>, <code>Content-Location</code>, <code>URI</code> - ヘッダの調整をさせます。これは、Apache がリバースプロキシとして使われている - ときに、リバースプロキシを通さないでアクセスすることを防ぐために - 重要です。これによりバックエンドサーバの HTTP リダイレクトが - リバースプロキシとバックエンドの間で扱われるようになります。</p> + ヘッダの調整をさせます。これは、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> があります。</p> + <p>上記の特別なリダイレクト用の HTTP レスポンスヘッダのみが書き換えられます。 + Apache は他のレスポンスヘッダを書き換えたり、HTML ページの中の URL 参照を + 書き換えたりすることはありません。つまり、リバースプロキシされた HTML ページ内に + 絶対 URL 参照が存在すると、プロキシを通さずにアクセスする可能性があります。 + HTML の中を見て、URL 参照を書き換えるモジュールに Nick Kew さんの <a href="http://apache.webthing.com/mod_proxy_html/">mod_proxy_html</a> があります。</p> <p><var>path</var> はローカル仮想パスの名前です。<var>url</var> は リモートサーバの部分 URL です。これらは <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブと同様です。</p> @@ -956,22 +1339,34 @@ URL を調整する</td></tr> <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/bar</code> が <code>http://backend.example.com/quux</code> にリダイレクトされたとき、 - Apache は HTTP リダイレクト応答をクライアントに送る前に、 + Apache は HTTP リダイレクト応答をクライアントに送る前に、リダイレクト先を <code>http://example.com/mirror/foo/quux</code> に変更します。 URL を構成するのに使われるホスト名は <code class="directive"><a href="../mod/core.html#usecanonicalname">UseCanonicalName</a></code> の設定に応じて選択されることに 注意してください。</p> <p><code class="directive">ProxyPassReverse</code> ディレクティブは - 対応する <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブには依存しないため、 + 対応する <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブと独立して利用できるので、 <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> のプロキシ通過機能 - (<code>RewriteRule ... [P]</code>) と併せて使用することができます。</p> + (<code>RewriteRule ... [P]</code>) と併せて使用することもできます。</p> + + <p>オプショナルな <var>interpolate</var> キーワード (httpd 2.2.9 以降で利用可能) + を <code class="directive">ProxyPassInterpolateEnv</code> ディレクティブと + 一緒に使うと、<var>${VARNAME}</var> 形式で、 ProxyPassReverse 設定に環境変数を + 使えるようになります。</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> から取得されます。</p> + 最初の引数は省略され、ローカルディレクトリは <code class="directive"><a href="../mod/core.html#location"><Location></a></code> から取得されます。 + 同じことは <code class="directive"><a href="../mod/core.html#locationmatch"><LocationMatch></a></code> セクション内でも起きますが、 + おそらく意図どおりに動きません。と言うのも、ProxyPassReverse + が正規表現をそのまま文字列でパスとして解釈しようとするからです。 + もしこのような状況で必要なら、セクションの外で ProxyPassReverse + を指定するか、あるいは別の <code class="directive"><a href="../mod/core.html#location"><Location></a></code> セクション内で指定してください。</p> + + <p>このディレクティブは <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> や <code class="directive"><a href="../mod/core.html#files"><Files></a></code> セクション内では使えません。</p> </div> <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> @@ -979,31 +1374,46 @@ URL を調整する</td></tr> <table class="directive"> <tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リバースプロキシサーバからの Set-Cookie ヘッダの Domain 文字列を 調整する</td></tr> -<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPassReverseCookieDomain <var>internal-domain</var> <var>public-domain</var></code></td></tr> +<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPassReverseCookieDomain <var>internal-domain</var> +<var>public-domain</var> [<var>interpolate</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"><a href="#proxypassreverse">ProxyPassReverse</a></code> と同じですが、 -ヘッダの URL の代わりに <code>Set-Cookie</code> ヘッダの +ヘッダの URL の代わりに <code>Set-Cookie</code> ヘッダ内の <code>domain</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="ProxyPassReverseCookiePath" id="ProxyPassReverseCookiePath">ProxyPassReverseCookiePath</a> <a name="proxypassreversecookiepath" id="proxypassreversecookiepath">ディレクティブ</a></h2> <table class="directive"> -<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>Reverse プロキシサーバからの Set-Cookie ヘッダの Path 文字列を +<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リバースプロキシサーバからの Set-Cookie ヘッダの Path 文字列を 調整する</td></tr> -<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPassReverseCookiePath <var>internal-path</var> <var>public-path</var></code></td></tr> +<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPassReverseCookiePath <var>internal-path</var> +<var>public-path</var> [<var>interpolate</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"><a href="#proxypassreverse">ProxyPassReverse</a></code> と同じですが、 -ヘッダの URL の代わりに <code>Set-Cookie</code> ヘッダの -<code>path</code> 文字列を書き換えます。</p> +<p> +バックエンドの URL パスがリバースプロキシ上の公開パスにマップされる状況で、 +<code class="directive"><a href="#proxypassreverse">ProxyPassReverse</a></code> といっしょに +役立ちます。このディレクティブは <code>Set-Cookie</code> ヘッダ内の +<code>path</code> 文字列を書き換えます。もしクッキーのパスが +<var>internal-path</var> に先頭マッチすれば、クッキーのパスは +<var>public-path</var> に置換されます。 +</p><p> +<code class="directive"><a href="#proxypassreverse">ProxyPassReverse</a></code> +での例を使うと、ディレクティブ: + <div class="example"><p><code> + ProxyPassReverseCookiePath / /mirror/foo/ + </code></p></div> +は、バックエンドのパスが <code>/</code> (あるいは <code>/example</code> +あるいは実際のところなんでも) のクッキーを <code>/mirror/foo/</code> +に書き換えます。 +</p> </div> <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> @@ -1057,10 +1467,10 @@ URL を調整する</td></tr> <tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr> </table> <p>このディレクティブはこのプロキシに対するリモートプロキシを定義します。 - <var>match</var> はリモートサーバがサポートする URL スキーム、 - リモートサーバが使うはずの URL の一部分、サーバがすべての - リクエストに使われることを示す <code>*</code> のどれかになります。 - <var>remote-server</var> はリモートサーバの部分 URL です。構文:</p> + <var>match</var> はリモートプロキシがサポートする URL スキーム、 + あるいはリモートプロキシを使うべき URL の一部分、あるいはすべての + リクエストにリモートプロキシが使われることを示す <code>*</code> のどれかになります。 + <var>remote-server</var> はリモートプロキシの部分 URL です。構文:</p> <div class="example"><p><code> <dfn>remote-server</dfn> = @@ -1068,20 +1478,22 @@ URL を調整する</td></tr> </code></p></div> <p><var>scheme</var> は実際上リモートサーバとの通信に使われるプロトコルを - 決定します。このモジュールでは <code>http</code> だけがサポートされて - います。</p> + 決定します。このモジュールでは <code>http</code> と <code>https</code> + だけがサポートされています。 + <code>https</code> が使われると、HTTP CONNECT メソッドを使って + リクエストはリモートプロキシに転送されます。</p> <div class="example"><h3>例</h3><p><code> - ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000<br /> - ProxyRemote * http://cleversite.com<br /> - ProxyRemote ftp http://ftpproxy.mydomain.com:8080 + ProxyRemote http://goodguys.example.com/ http://mirrorguys.example.com:8000<br /> + ProxyRemote * http://cleverproxy.localdomain<br /> + ProxyRemote ftp http://ftpproxy.mydomain:8080 </code></p></div> - <p>この例では、プロキシは FTP リクエストを別の HTTP リクエストで包んで + <p>最後の例では、プロキシは FTP リクエストを別の HTTP リクエストで包んで そのようなリクエストを扱える別のプロキシに転送します。</p> <p>このオプションはリバースプロキシの設定もサポートします。 - サーバが別のフォワードプロキシの後ろに隠されている場合でも + バックエンドウェブサーバが別のフォワードプロキシの後ろに隠されている場合でも バックエンドウェブサーバをバーチャルホストの URL 空間に入れることが できます。</p> @@ -1111,10 +1523,10 @@ URL を調整する</td></tr> </table> <p>これは Apache のフォワードプロキシサーバとしての動作を 有効もしくは無効にします。(ProxyRequests を <code>Off</code> に - 設定しても、<code class="directive"><a href="#proxypass">ProxyPass</a></code> + 設定しても、<code class="directive"><a href="#proxypass">ProxyPass</a></code> の設定は無効になりません。)</p> - <p>通常のリバースプロキシの設定では、このオプションは <code>Off</code> + <p>通常のリバースプロキシ/ゲートウェイの設定では、このオプションは <code>Off</code> に設定してください。</p> <p>HTTP や FTP サイトへのプロキシの機能を有効にしたい場合は、 @@ -1127,46 +1539,96 @@ URL を調整する</td></tr> インターネット全体にとっても危険です。</p> </div> +<h3>参照</h3> +<ul> +<li><a href="#forwardreverse">フォワードプロキシとリバースプロキシ/ゲートウェイ</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="ProxySet" id="ProxySet">ProxySet</a> <a name="proxyset" id="proxyset">ディレクティブ</a></h2> <table class="directive"> -<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>Set various Proxy balancer or member parameters</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>ProxySet <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>ProxySet is only available in Apache 2.2 - and later.</td></tr> -</table><p>The documentation for this directive has - not been translated yet. Please have a look at the English - version.</p></div> +<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>ProxySet は Apache 2.2 以降でのみ使用可能</td></tr> +</table> + <p>このディレクティブは、通常は <code class="directive"><a href="#proxypass">ProxyPass</a></code> + ディレクティブで行うプロキシのバランサやワーカーに対するパラメータを + 別の方法で設定できるようにします。 + <code><Proxy <var>balancer url|worker url</var>></code> + ディレクティブのコンテナ内で使う場合、<var>url</var> 引数は必要ありません。 + 副次的に、それぞれのバランサやワーカーが生成されます。 + <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブではなく、 + <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> でリバースプロキシ + 設定をする時にこのディレクティブは有用です。</p> + + <div class="example"><p><code> + <Proxy balancer://hotcluster><br /> + <span class="indent"> + BalancerMember http://www2.example.com:8009 loadfactor=1<br /> + BalancerMember http://www3.example.com:8009 loadfactor=2<br /> + ProxySet lbmethod=bytraffic<br /> + </span> + </Proxy> + </code></p></div> + + <div class="example"><p><code> + <Proxy http://backend><br /> + <span class="indent"> + ProxySet keepalive=On<br /> + </span> + </Proxy> + </code></p></div> + + <div class="example"><p><code> + ProxySet balancer://foo lbmethod=bytraffic timeout=15 + </code></p></div> + + <div class="example"><p><code> + ProxySet ajp://backend:7001 timeout=15 + </code></p></div> + + <div class="warning"><h3>警告</h3> + <p>設定対象がバランサかワーカーかで、パラメータ名が同じでも意味が異なる可能性 + に注意してください。例えば、タイムアウトに関連する上記ふたつの例がそうです。</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="ProxyStatus" id="ProxyStatus">ProxyStatus</a> <a name="proxystatus" id="proxystatus">ディレクティブ</a></h2> <table class="directive"> -<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>Show Proxy LoadBalancer status in mod_status</td></tr> +<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>mod_status でプロキシのロードバランサの状態を表示</td></tr> <tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyStatus Off|On|Full</code></td></tr> <tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyStatus 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>Available in version 2.2 and later</td></tr> -</table><p>The documentation for this directive has - not been translated yet. Please have a look at the English - version.</p></div> +<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.2 以降で使用可能</td></tr> +</table> + <p>このディレクティブは <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> によるサーバステータスのページ + にプロキシのロードバランサの状態を表示するか否かを決めます。</p> + <div class="note"><h3>注意</h3> + <p><strong>Full</strong> は <strong>On</strong> の別名です。</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="ProxyTimeout" id="ProxyTimeout">ProxyTimeout</a> <a name="proxytimeout" id="proxytimeout">ディレクティブ</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>ProxyTimeout <var>seconds</var></code></td></tr> -<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyTimeout 300</code></td></tr> +<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code><code class="directive"><a href="../mod/core.html#timeout">Timeout</a></code> の値</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.31 以降で使用可能</td></tr> </table> <p>このディレクティブはユーザがプロキシリクエストのタイムアウトを - 指定できるようにします。これはハングしてしまう遅い、もしくは挙動の + 指定できるようにします。これはハングしてしまうほど遅い、もしくは挙動の 怪しいサーバがあり、サーバがデータを返すまでひたすら待ち続けるよりも タイムアウトを返してより緩やかに<span class="transnote">(<em>訳注:</em> graceful に)</span> 失敗させたい場合に役に立ちます。</p> @@ -1175,7 +1637,7 @@ URL を調整する</td></tr> <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> <div class="directive-section"><h2><a name="ProxyVia" id="ProxyVia">ProxyVia</a> <a name="proxyvia" id="proxyvia">ディレクティブ</a></h2> <table class="directive"> -<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされたリクエストの <code>Via</code> HTTP 応答ヘッダ +<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされたリクエストの <code>Via</code> HTTP レスポンスヘッダ により提供される情報</td></tr> <tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyVia On|Off|Full|Block</code></td></tr> <tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyVia Off</code></td></tr> @@ -1208,10 +1670,10 @@ URL を調整する</td></tr> </div> </div> <div class="bottomlang"> -<p><span>Available Languages: </span><a href="../en/mod/mod_proxy.html" hreflang="en" rel="alternate" title="English"> en </a> | +<p><span>翻訳済み言語: </span><a href="../en/mod/mod_proxy.html" hreflang="en" rel="alternate" title="English"> en </a> | <a href="../fr/mod/mod_proxy.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | <a href="../ja/mod/mod_proxy.html" title="Japanese"> ja </a></p> </div><div id="footer"> -<p class="apache">Copyright 2011 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> +<p class="apache">Copyright 2012 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p> <p class="menu"><a href="../mod/">モジュール</a> | <a href="../mod/directives.html">ディレクティブ</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">用語</a> | <a href="../sitemap.html">サイトマップ</a></p></div> </body></html>
\ No newline at end of file |