1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"><head><!--
4        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5              This file is generated from xml source: DO NOT EDIT
6        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7      -->
8<title>mod_proxy - Apache HTTP サーバ</title>
9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11<link href="/style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="/style/css/prettify.css" />
12<script src="/style/scripts/prettify.js" type="text/javascript">
13</script>
14
15<link href="/images/favicon.ico" rel="shortcut icon" /></head>
16<body>
17<div id="page-header">
18<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p>
19<p class="apache">Apache HTTP サーバ バージョン 2.2</p>
20<img alt="" src="/images/feather.gif" /></div>
21<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div>
22<div id="path">
23<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP サーバ</a> &gt; <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> &gt; <a href="../">バージョン 2.2</a> &gt; <a href="./">モジュール</a></div>
24<div id="page-content">
25<div id="preamble"><h1>Apache モジュール mod_proxy</h1>
26<div class="toplang">
27<p><span>翻訳済み言語: </span><a href="/en/mod/mod_proxy.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
28<a href="/fr/mod/mod_proxy.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
29<a href="/ja/mod/mod_proxy.html" title="Japanese">&nbsp;ja&nbsp;</a></p>
30</div>
31<div class="outofdate">この日本語訳はすでに古くなっている
32            可能性があります。
33            最近更新された内容を見るには英語版をご覧下さい。
34        </div>
35<table class="module"><tr><th><a href="module-dict.html#Description">説明:</a></th><td>HTTP/1.1 プロキシ/ゲートウェイサーバ</td></tr>
36<tr><th><a href="module-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
37<tr><th><a href="module-dict.html#ModuleIdentifier">モジュール識別子:</a></th><td>proxy_module</td></tr>
38<tr><th><a href="module-dict.html#SourceFile">ソースファイル:</a></th><td>mod_proxy.c</td></tr></table>
39<h3>概要</h3>
40
41    <div class="warning"><h3>警告</h3>
42      <p><a href="#access">サーバを安全にする</a>まで <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> は有効にしないでください。
43      オープンプロキシサーバはあなた自身のネットワークにとっても、
44      インターネット全体にとっても危険です。</p>
45    </div>
46
47    <p>このモジュールは Apache のプロキシ/ゲートウェイ機能を実装しています。
48    <code>AJP13</code> (Apache JServe Protocol version 1.3),
49    <code>FTP</code>, <code>CONNECT</code> (SSL 用),
50    <code>HTTP/0.9</code>, <code>HTTP/1.0</code>, <code>HTTP/1.1</code>
51    のプロキシ機能を実装しています。これらのプロトコルやその他のプロトコル用の
52    プロキシ機能を持った、他のモジュールに接続するようにも設定できます。</p>
53
54    <p>Apache のプロキシ機能は <code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code> の他に、
55    いくつかのモジュールに分割されています:
56    <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>,
57    <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>,
58    <code class="module"><a href="/mod/mod_proxy_connect.html">mod_proxy_connect</a></code> です。ですから、
59    特定のプロキシの機能を使いたい場合は、<code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code> <em>と</em>
60    該当するモジュールをサーバに (コンパイル時に静的に行なうか
61    <code class="directive"><a href="/mod/mod_so.html#loadmodule">LoadModule</a></code> で動的に読み込むかして)
62    組み込む必要があります。</p>
63
64    <p>これに加えて、他のモジュールによって拡張機能が提供されています。
65    キャッシュは <code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> と関連モジュールで
66    提供されています。SSL/TLS で遠隔サーバに接続する機能は
67    <code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code> の <code>SSLProxy*</code> ディレクティブで
68    提供されています。これらの機能を利用するためには、該当するモジュールを
69    組み込んで設定しなければなりません。</p>
70</div>
71<div id="quickview"><h3 class="directives">ディレクティブ</h3>
72<ul id="toc">
73<li><img alt="" src="/images/down.gif" /> <a href="#allowconnect">AllowCONNECT</a></li>
74<li><img alt="" src="/images/down.gif" /> <a href="#balancermember">BalancerMember</a></li>
75<li><img alt="" src="/images/down.gif" /> <a href="#noproxy">NoProxy</a></li>
76<li><img alt="" src="/images/down.gif" /> <a href="#proxy">&lt;Proxy&gt;</a></li>
77<li><img alt="" src="/images/down.gif" /> <a href="#proxybadheader">ProxyBadHeader</a></li>
78<li><img alt="" src="/images/down.gif" /> <a href="#proxyblock">ProxyBlock</a></li>
79<li><img alt="" src="/images/down.gif" /> <a href="#proxydomain">ProxyDomain</a></li>
80<li><img alt="" src="/images/down.gif" /> <a href="#proxyerroroverride">ProxyErrorOverride</a></li>
81<li><img alt="" src="/images/down.gif" /> <a href="#proxyftpdircharset">ProxyFtpDirCharset</a></li>
82<li><img alt="" src="/images/down.gif" /> <a href="#proxyiobuffersize">ProxyIOBufferSize</a></li>
83<li><img alt="" src="/images/down.gif" /> <a href="#proxymatch">&lt;ProxyMatch&gt;</a></li>
84<li><img alt="" src="/images/down.gif" /> <a href="#proxymaxforwards">ProxyMaxForwards</a></li>
85<li><img alt="" src="/images/down.gif" /> <a href="#proxypass">ProxyPass</a></li>
86<li><img alt="" src="/images/down.gif" /> <a href="#proxypassinterpolateenv">ProxyPassInterpolateEnv</a></li>
87<li><img alt="" src="/images/down.gif" /> <a href="#proxypassmatch">ProxyPassMatch</a></li>
88<li><img alt="" src="/images/down.gif" /> <a href="#proxypassreverse">ProxyPassReverse</a></li>
89<li><img alt="" src="/images/down.gif" /> <a href="#proxypassreversecookiedomain">ProxyPassReverseCookieDomain</a></li>
90<li><img alt="" src="/images/down.gif" /> <a href="#proxypassreversecookiepath">ProxyPassReverseCookiePath</a></li>
91<li><img alt="" src="/images/down.gif" /> <a href="#proxypreservehost">ProxyPreserveHost</a></li>
92<li><img alt="" src="/images/down.gif" /> <a href="#proxyreceivebuffersize">ProxyReceiveBufferSize</a></li>
93<li><img alt="" src="/images/down.gif" /> <a href="#proxyremote">ProxyRemote</a></li>
94<li><img alt="" src="/images/down.gif" /> <a href="#proxyremotematch">ProxyRemoteMatch</a></li>
95<li><img alt="" src="/images/down.gif" /> <a href="#proxyrequests">ProxyRequests</a></li>
96<li><img alt="" src="/images/down.gif" /> <a href="#proxyset">ProxySet</a></li>
97<li><img alt="" src="/images/down.gif" /> <a href="#proxystatus">ProxyStatus</a></li>
98<li><img alt="" src="/images/down.gif" /> <a href="#proxytimeout">ProxyTimeout</a></li>
99<li><img alt="" src="/images/down.gif" /> <a href="#proxyvia">ProxyVia</a></li>
100</ul>
101<h3>トピック</h3>
102<ul id="topics">
103<li><img alt="" src="/images/down.gif" /> <a href="#forwardreverse">フォワードプロキシとリバースプロキシ/ゲートウェイ</a></li>
104<li><img alt="" src="/images/down.gif" /> <a href="#examples">基本の例</a></li>
105<li><img alt="" src="/images/down.gif" /> <a href="#workers">ワーカー</a></li>
106<li><img alt="" src="/images/down.gif" /> <a href="#access">プロキシへのアクセス制御</a></li>
107<li><img alt="" src="/images/down.gif" /> <a href="#startup">遅い起動</a></li>
108<li><img alt="" src="/images/down.gif" /> <a href="#intranet">イントラネットプロキシ</a></li>
109<li><img alt="" src="/images/down.gif" /> <a href="#envsettings">プロトコルの調整</a></li>
110<li><img alt="" src="/images/down.gif" /> <a href="#request-bodies">リクエストボディ</a></li>
111<li><img alt="" src="/images/down.gif" /> <a href="#x-headers">リバースプロキシのリクエストヘッダ</a></li>
112</ul><h3>参照</h3>
113<ul class="seealso">
114<li><code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code></li>
115<li><code class="module"><a href="/mod/mod_proxy_http.html">mod_proxy_http</a></code></li>
116<li><code class="module"><a href="/mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code></li>
117<li><code class="module"><a href="/mod/mod_proxy_connect.html">mod_proxy_connect</a></code></li>
118<li><code class="module"><a href="/mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code></li>
119<li><code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code></li>
120</ul><ul class="seealso"><li><a href="#comments_section">コメント</a></li></ul></div>
121<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
122<div class="section">
123<h2><a name="forwardreverse" id="forwardreverse">フォワードプロキシとリバースプロキシ/ゲートウェイ</a></h2>
124      <p>Apache は <dfn>フォワード</dfn> プロキシとしても、
125      <dfn>リバース</dfn> プロキシ (別名 <dfn>ゲートウェイ</dfn>) としても設定できます。</p>
126
127      <p>通常の <dfn>フォワードプロキシ</dfn> はクライアントと
128      <em>オリジンサーバ</em> <span class="transnote">(<em>訳注:</em> コンテンツ生成元のサーバ)</span>
129      の間に位置する中間サーバです。
130      オリジンサーバからコンテンツを取得するために、クライアントは
131      行き先をオリジンサーバに指定したリクエストをプロキシに送ります。
132      プロキシはオリジンサーバからコンテンツを受け取り、
133      取得したコンテンツをクライアントに返します。
134      クライアントがフォワードプロキシ経由で他のサイトにアクセスするには、
135      特別にそのための設定をしなければなりません。</p>
136
137      <p>フォワードプロキシの一般的な使用方法は、ファイアウォールによって
138      制限されている内部のクライアントに、インターネットへのアクセスを
139      提供するものです。フォワードプロキシはネットワークの使用量を
140      減らすために (<code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code> で提供されている)
141      キャッシュ機能を用いることもできます。</p>
142
143      <p>フォワードプロキシは <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> ディレクティブで
144      有効になります。フォワードプロキシを使うと、クライアントは本当の身元を
145      隠して任意のサイトにアクセスできるようになります。このため、フォワードプロキシを
146      有効にする前に、承認されたクライアントのみがプロキシにアクセスできるように
147      <a href="#access">サーバを安全にする</a>ことが重要です。</p>
148
149      <p>一方 <dfn>リバースプロキシ</dfn> (<dfn>ゲートウェイ</dfn>) は、
150      クライアントから普通のウェブサーバのように見えます。
151      クライアント側に特別な設定は必要ありません。
152      クライアントはリバースプロキシの名前空間内のコンテンツに対して通常どおりの
153      リクエストを行ないます。リバースプロキシはリクエストをどこに送れば良いかを判定し、
154      あたかも自分自身がオリジンサーバであったかのようにクライアントに
155      コンテンツを返します。</p>
156
157      <p>リバースプロキシのよくある利用方法は、インターネットユーザに
158      ファイアウォールの中にあるサーバにアクセスさせる場合です。
159      リバースプロキシは複数のバックエンドサーバへ負荷分散をするために
160      使ったり、遅いバックエンドエンドサーバのためにキャッシュ機能を提供したり
161      するためにも使えます。また、リバースプロキシは複数のサーバを
162      同じ URL 空間にまとめるために使うこともできます。</p>
163
164      <p>リバースプロキシは <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブや
165      <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> ディレクティブの
166      <code>[P]</code> フラグを使うことで有効になります。リバースプロキシの
167      設定のために <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> を設定する必要は
168      <em>ありません</em>。</p>
169    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
170<div class="section">
171<h2><a name="examples" id="examples">基本の例</a></h2>
172
173    <p>以下の例は手始めの簡単な例です。個々のディレクティブの意味は
174    それぞれの説明をお読みください。</p>
175
176    <p>またキャッシュ機能を有効にしたい場合は、<code class="module"><a href="/mod/mod_cache.html">mod_cache</a></code>
177    の説明を読んでください。</p>
178
179    <div class="example"><h3>リバースプロキシ</h3><p><code>
180    ProxyPass /foo http://foo.example.com/bar<br />
181    ProxyPassReverse /foo http://foo.example.com/bar
182    </code></p></div>
183
184    <div class="example"><h3>フォワードプロキシ</h3><p><code>
185    ProxyRequests On<br />
186    ProxyVia On<br />
187    <br />
188    &lt;Proxy *&gt;<br />
189    <span class="indent">
190      Order deny,allow<br />
191      Deny from all<br />
192      Allow from internal.example.com<br />
193    </span>
194    &lt;/Proxy&gt;
195    </code></p></div>
196
197    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
198<div class="section">
199<h2><a name="workers" id="workers">ワーカー</a></h2>
200      <p>プロキシは <dfn>ワーカー</dfn> と呼ばれるオブジェクトで
201      オリジンサーバとの通信パラメータの設定を管理します。
202      ふたつの組み込みワーカーが存在します。デフォルトのフォワードプロキシワーカーと
203      デフォルトのリバースプロキシワーカーです。
204      追加のワーカーを明示的に設定可能です。</p>
205
206      <p>ふたつのデフォルトワーカーは固定の設定を持ちます。
207      リクエストが他のワーカーにマッチしない場合に使われます。
208      これらは HTTP のキープアライブもコネクションプーリングも使いません。
209      オリジンサーバへの TCP 接続はリクエストのたびに接続と切断をします。</p>
210
211      <p>明示的に設定するワーカーは、URL で識別されます。
212      通常、<code class="directive"><a href="#proxypass">ProxyPass</a></code>
213      または <code class="directive"><a href="#proxypassmatch">ProxyPassMatch</a></code>
214      をリバースプロキシ設定に使うことで、これらのワーカーを生成および設定します:</p>
215
216      <div class="example"><p><code>
217          ProxyPass /example http://backend.example.com connectiontimeout=5 timeout=30
218      </code></p></div>
219
220      <p>上記はオリジンサーバの <code>http://backend.example.com</code>
221      の URL に関連するワーカーを生成します。ワーカーは指定したタイムアウト値を持ちます。
222      フォワードプロキシで使われる時、ワーカーは一般に
223      <code class="directive"><a href="#proxyset">ProxySet</a></code> ディレクティブで
224      定義します:</p>
225
226      <div class="example"><p><code>
227          ProxySet http://backend.example.com connectiontimeout=5 timeout=30
228      </code></p></div>
229
230      <p>または、別の方法として <code class="directive"><a href="#proxy">Proxy</a></code>
231      と <code class="directive"><a href="#proxyset">ProxySet</a></code>でも定義できます:</p>
232
233      <div class="example"><p><code>
234        &lt;Proxy http://backend.example.com>;<br />
235        <span class="indent">
236          ProxySet connectiontimeout=5 timeout=30
237        </span>
238        &lt;/Proxy&gt;
239      </code></p></div>
240
241      <p>フォワードモードで明示的に設定したワーカーを使うのは、あまり一般的ではありません。
242      なぜなら、通常フォワードプロキシは多くの異なるオリジンサーバと通信するからです。
243      もし一部のオリジンサーバを頻繁に利用するなら、それらに対して
244      明示的にワーカーを生成するのは有用です。明示的に設定したワーカーは、
245      それ自体はフォワードプロキシかリバースプロキシかのコンセプトを持ちません。
246      それらはオリジンサーバと通信する共通のコンセプトを抱えています。
247      リバースプロキシで使うために <code class="directive"><a href="#proxypass">ProxyPass</a></code>
248      で生成したワーカーは、オリジンサーバへの URL がワーカーの URL にマッチすれば
249      いつでもフォワードプロキシとして使えます。これは、逆も成り立ちます。</p>
250
251      <p>ワーカーを識別する URL はそのオリジンサーバの URL です。
252      URL は指定したパス部分も含みます:</p>
253
254      <div class="example"><p><code>
255          ProxyPass /examples http://backend.example.com/examples<br />
256          ProxyPass /docs http://backend.example.com/docs
257      </code></p></div>
258
259      <p>この例はふたつの異なるワーカーを定義しています。
260      それぞれ別のコネクションプールと設定を使います。</p>
261
262      <div class="warning"><h3>ワーカーの共有</h3>
263        <p>もしワーカーの URL に重なりがあれば、ワーカーの共有が起きます。
264        重なりとは、ワーカーの URL が、設定ファイル内で後から定義した
265        別のワーカーの URL の先頭文字列と部分一致することです。
266        次の例で</p>
267
268        <div class="example"><p><code>
269            ProxyPass /apps http://backend.example.com/ timeout=60<br />
270            ProxyPass /examples http://backend.example.com/examples timeout=10
271        </code></p></div>
272
273        <p>ふたつめのワーカーは実際には生成されません。
274        その代わり、ひとつめのワーカーを使います。この利点は、ただひとつの
275        コネクションプールで済む点です。このため、コネクションをより頻繁に再利用できます。
276        後ろのワーカーに明示的に書いた設定のすべてのパラメータと一部の設定のデフォルト値は、
277        最初のワーカーに書いた設定を上書きするのを注意してください。
278        これは警告としてログに残ります。上記の例で言えば、<code>/apps</code>
279        の URL に対するタイムアウト値は、結果として <code>60</code> ではなく
280        <code>10</code>になるのです。</p>
281
282        <p>もしワーカーの共有を避けたければ、ワーカーの定義を URL の長さでソートしてください。
283        そして、長い URL から並べてください。もしワーカーの共有を最大限にしたいなら、
284        逆順に並べます。<code class="directive"><a href="#proxypass">ProxyPass</a></code>
285        ディレクティブの並びについて、関連する警告も見てください。</p>
286
287      </div> 
288
289      <p>明示的に設定するワーカーにはふたつの種類があります:
290      <dfn>直接のワーカー</dfn> と <dfn>バランサー (負荷分散) ワーカー</dfn> です。
291      これらは後ほど <code class="directive"><a href="#proxypass">ProxyPass</a></code>
292      ディレクティブの中で説明する重要な設定パラメータを数多くサポートします。
293      同じパラメータは <code class="directive"><a href="#proxyset">ProxySet</a></code>
294      を使っても設定可能です。</p>
295
296      <p>直接のワーカーで利用できるパラメータはプロトコルに依存します。
297      プロトコルはオリジンサーバの URL で指定されます。
298      利用可能なプロトコルは <code>ajp</code>,
299      <code>ftp</code>, <code>http</code>, <code>scgi</code> です。</p>
300
301      <p>バランサーワーカーは仮想ワーカーです。直接のワーカーを
302      リクエストを実際に処理するメンバーとして使います。
303      それぞれのバランサーは複数のメンバーを持ちえます。
304      リクエストを処理する時、設定した負荷分散のアルゴリズムにもとづき
305      メンバーのひとつを選択します。</p>
306
307      <p>ワーカーの URL のプロトコルスキームに <code>balancer</code>
308      を使うと、バランサワーカーが生成されます。
309      バランサーの URL が、バランサワーカーを一意に識別します。
310      <code class="directive"><a href="#balancermember">BalancerMember</a></code>
311      を使って、バランサーにメンバーを追加します。</p>
312
313    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
314<div class="section">
315<h2><a name="access" id="access">プロキシへのアクセス制御</a></h2>
316      <p>プロキシへのアクセスは以下のように <code class="directive"><a href="#proxy">&lt;Proxy&gt;</a></code> コンテナの中に
317      ディレクティブを書くことで制御できます:</p>
318
319      <div class="example"><p><code>
320        &lt;Proxy *&gt;<br />
321        <span class="indent">
322          Order Deny,Allow<br />
323          Deny from all<br />
324          Allow from 192.168.0<br />
325        </span>
326        &lt;/Proxy&gt;
327      </code></p></div>
328
329      <p>アクセス制御のためのディレクティブのより詳しい情報は
330      <code class="module"><a href="/mod/mod_authz_host.html">mod_authz_host</a></code> をお読みください。</p>
331
332      <p>(<code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> ディレクティブを
333      使って) フォワードプロキシを設定している場合は、厳しくアクセス
334      制限を行なうことが非常に大切です。そうしないと、任意のクライアントが
335      身元を明かすことなく任意のホストにアクセスするためにプロキシサーバを使うことが
336      できてしまいます。これはあなた自身のネットワークにとっても、インターネット
337      全体にとっても危険なことです。(<code>ProxyRequests Off</code> にして
338      <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブを使って)
339      リバースプロキシを使っている場合には、クライアントはあなたが明示的に
340      設定したホストにしかアクセスできないため、フォワードプロキシのとき
341      ほどアクセス制御に力を注がなくても大丈夫です。</p>
342
343    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
344<div class="section">
345<h2><a name="startup" id="startup">遅い起動</a></h2>
346      <p><code class="directive"><a href="#proxyblock">ProxyBlock</a></code> ディレクティブを使っている場合、
347      後に行うマッチ判定のため、起動時にホストの名前解決をして
348      IP アドレスをキャッシュします。ホスト名の名前解決の
349      速さによっては、数秒 (かそれ以上) かかるかもしれません。</p>
350    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
351<div class="section">
352<h2><a name="intranet" id="intranet">イントラネットプロキシ</a></h2>
353      <p>イントラネットにある Apache プロキシサーバは外部へのリクエストを
354      会社のファイアウォールを通して送らなければなりません。(このためには
355      個々の <var>scheme</var> についてそれぞれ、ファイアウォールの
356      プロキシにフォワードされるように
357      <code class="directive"><a href="#proxyremote">ProxyRemote</a></code> ディレクティブを
358      設定してください)。しかしイントラネット内のリソースにアクセスするときは、
359      ファイアウォールを通さないでもアクセスできます。
360      どのホストがイントラネットに属し、直接アクセスすべきかを指定するには、
361      <code class="directive"><a href="#noproxy">NoProxy</a></code> ディレクティブが
362      役に立ちます。</p>
363
364      <p>イントラネット内のユーザは WWW のリクエストでローカルドメインを
365      省略することがよくあります。<code>http://somehost.example.com/</code>
366      というリクエストの代わりに "http://somehost/" をリクエストしたりします。
367      このようなリクエストを受け付け、サーバに設定されているローカルドメインが
368      暗黙のうちに使われていると解釈して、単純にリクエストを処理するものも
369      商用プロキシサーバの中にはあります。
370      サーバが <a href="#proxyrequests">プロキシのサービス用に設定されていて</a>
371      <code class="directive"><a href="#proxydomain">ProxyDomain</a></code> ディレクティブが
372      使用された場合には、Apache はクライアントにリダイレクト応答を送って、
373      正しい、完全な <span class="transnote">(<em>訳注:</em> fully qualified)</span>
374      サーバのアドレスに送ることができます。このように
375      リダイレクトすると、ユーザのブックマークが正しい完全なホスト名を含む
376      ことにもなるため、より好ましい方法と言えるでしょう。</p>
377    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
378<div class="section">
379<h2><a name="envsettings" id="envsettings">プロトコルの調整</a></h2>
380      <p>Keepalive や HTTP/1.1 を適切に実装していないオリジンサーバに対して
381      <code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code> がリクエストを送信する場合、
382      HTTP/1.0 を使って keepalive を無しにしてリクエストを送るようにする <a href="/env.html">環境変数</a>が二つあります。これらは <code class="directive"><a href="/mod/mod_env.html#setenv">SetEnv</a></code> ディレクティブで設定します。</p>
383
384      <p><code>force-proxy-request-1.0</code> と <code>proxy-nokeepalive</code>
385      がその環境変数です。</p>
386
387      <div class="example"><p><code>
388        &lt;Location /buggyappserver/&gt;<br />
389        <span class="indent">
390          ProxyPass http://buggyappserver:7001/foo/<br />
391          SetEnv force-proxy-request-1.0 1<br />
392          SetEnv proxy-nokeepalive 1<br />
393        </span>
394        &lt;/Location&gt;
395      </code></p></div>
396
397    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
398<div class="section">
399<h2><a name="request-bodies" id="request-bodies">リクエストボディ</a></h2>
400
401    <p>POST メソッドなどのリクエストには、リクエストボディがあります。
402    HTTP プロトコル仕様によると、ボディのあるリクエストは chunked
403    転送を使うか、<code>Content-Length</code>
404    ヘッダを送信しなければなりません。
405    このようなリクエストをオリジンサーバに送信する場合、
406    <code class="module"><a href="/mod/mod_proxy_http.html">mod_proxy_http</a></code> は常に <code>Content-Length</code>
407    を送ろうと試みます。しかし、ボディが大きく、オリジナルのリクエストで
408    chunked 転送が使われている場合、上流へのリクエストに
409    chunked 転送も使われます。
410    この挙動は <a href="/env.html">環境変数</a>で制御できます。
411    <code>proxy-sendcl</code> を設定すると、
412    常に <code>Content-Length</code> を送り、最大限の互換性を確保します。
413    逆に <code>proxy-sendchunked</code> を設定すると、
414    chunked エンコードを使ってリソース消費を抑えます。</p>
415
416    </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
417<div class="section">
418<h2><a name="x-headers" id="x-headers">リバースプロキシのリクエストヘッダ</a></h2>
419
420    <p>リバースプロキシとして振る舞う時 (例えば、<code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブを使う時) 、
421    <code class="module"><a href="/mod/mod_proxy_http.html">mod_proxy_http</a></code> は、オリジンサーバに情報を渡すために
422    いくつかのリクエストヘッダを追加します。これらのヘッダは以下になります。</p>
423
424    <dl>
425      <dt><code>X-Forwarded-For</code></dt>
426      <dd>クライアントの IP アドレス。</dd>
427      <dt><code>X-Forwarded-Host</code></dt>
428      <dd>オリジナルのホスト名。クライアントが <code>Host</code>
429      リクエストヘッダで渡す。</dd>
430      <dt><code>X-Forwarded-Server</code></dt>
431      <dd>プロキシサーバのホスト名。</dd>
432    </dl>
433
434    <p>オリジンサーバ上でこれらのヘッダを扱う時は注意してください。
435    と言うのも、オリジナルのリクエストが既に同じヘッダを持っていると、
436    ヘッダが一つ以上の値 (コンマで区切られます) を持つ可能性があるからです。
437    例えば、 オリジンサーバ上でオリジナルのクライアントのIPアドレスをログに
438    記録するため、ログフォーマットに <code>%{X-Forwarded-For}i</code> を
439    指定したとします。この時、リクエストが複数のプロキシを経由していると、
440    複数のアドレスがログに載る可能性があります。</p>
441
442    <p><code class="directive"><a href="#proxypreservehost">ProxyPreserveHost</a></code> と
443    <code class="directive"><a href="#proxyvia">ProxyVia</a></code> ディレクティブ
444    も参照してください。これらは他のリクエストヘッダに影響を与えます。</p>
445
446   </div>
447<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
448<div class="directive-section"><h2><a name="AllowCONNECT" id="AllowCONNECT">AllowCONNECT</a> <a name="allowconnect" id="allowconnect">ディレクティブ</a></h2>
449<table class="directive">
450<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシを経由して、どのポートに <code>CONNECT</code>
451できるかを指定する</td></tr>
452<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>AllowCONNECT <var>port</var> [<var>port</var>] ...</code></td></tr>
453<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>AllowCONNECT 443 563</code></td></tr>
454<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
455<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
456<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
457</table>
458    <p><code class="directive">AllowCONNECT</code> はプロキシの <code>CONNECT</code>
459    メソッドが接続を許可するポート番号のリストを指定します。
460    今日のブラウザは、<code>https</code> コネクションが要求されていて、
461    HTTP 上でのプロキシによるトンネリングができるときに、
462    このメソッドを使います。</p>
463
464    <p>デフォルトの設定では、https のデフォルトポート (<code>443</code>) と
465    デフォルトの snews ポート (<code>563</code>) が有効になっています。
466    このデフォルトを上書きして、リストに記載したポートにのみ接続を許可したい場合、
467    <code class="directive">AllowCONNECT</code> ディレクティブを使用します。</p>
468
469    <p><code>CONNECT</code> を使用するには、<code class="module"><a href="/mod/mod_proxy_connect.html">mod_proxy_connect</a></code>
470    がサーバに組み込まれていなければならないことに注意してください。</p>
471
472</div>
473<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
474<div class="directive-section"><h2><a name="BalancerMember" id="BalancerMember">BalancerMember</a> <a name="balancermember" id="balancermember">ディレクティブ</a></h2>
475<table class="directive">
476<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>ロードバランサのグループにメンバーを追加</td></tr>
477<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>
478<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>ディレクトリ</td></tr>
479<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
480<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
481<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>BalancerMember は Apache 2.2 以降でのみ使用可能</td></tr>
482</table>
483    <p>このディレクティブでロードバランサのグループにメンバを追加します。
484    <code>&lt;Proxy <var>balancer://</var>...&gt;</code> ディレクティブのコンテナ
485    内で使われることが多く、<code class="directive"><a href="#proxypass">ProxyPass</a></code>
486    ディレクティブと共通のキーバリューペアのパラメータを取ります。</p>
487    <p><code>&lt;Proxy <var>balancer://</var>...&gt;</code> ディレクティブの
488    コンテナ内に書かない場合のみ、 balancerurl 引数が必要です。 これは
489    <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブで
490    バランサを定義した時の URL と同じ働きをします。</p>
491
492</div>
493<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
494<div class="directive-section"><h2><a name="NoProxy" id="NoProxy">NoProxy</a> <a name="noproxy" id="noproxy">ディレクティブ</a></h2>
495<table class="directive">
496<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>直接接続する ホスト、ドメイン、ネットワーク</td></tr>
497<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>NoProxy <var>host</var> [<var>host</var>] ...</code></td></tr>
498<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
499<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
500<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
501</table>
502    <p>このディレクティブはイントラネット中の Apache プロキシサーバにのみ
503    有用です。<code class="directive">NoProxy</code> ディレクティブは空白区切りで、
504    サブネット、IP アドレス、ホスト、ドメインのリストを指定します。
505    これらのどれかにマッチするホストへのリクエストは <code class="directive"><a href="#proxyremote">ProxyRemote</a></code> で設定されたプロキシサーバに
506    フォワードされず、直接処理されます。</p>
507
508    <div class="example"><h3>例</h3><p><code>
509      ProxyRemote  *  http://firewall.example.com:81<br />
510      NoProxy         .example.com 192.168.112.0/21
511    </code></p></div>
512
513    <p><code class="directive">NoProxy</code> ディレクティブの <var>host</var> 引数は
514    以下の種類のどれかです:</p>
515
516    <dl>
517    
518    <dt><var><a name="domain" id="domain">Domain</a></var></dt>
519    <dd>
520    <p><dfn>Domain</dfn> は先頭にピリオドを書いた部分 DNS ドメイン名です。
521    同一 DNS ドメイン及びゾーン (<em>すなわち</em>、ホスト名の末尾がすべて
522    <var>Domain</var> で終わっているということ) に属するホストのリストを
523    表します)。</p>
524
525    <div class="example"><h3>例</h3><p><code>
526      .com .apache.org.
527    </code></p></div>
528
529    <p><var>Domain</var> を <a href="#hostname">Hostname</a> と区別するために (意味的にも構文的にも。DNS ドメインも
530    DNS の A レコードを持つことができるのです!)、<var>Domain</var> は
531    常にピリオドで始まります。</p>
532
533    <div class="note"><h3>注</h3>
534      <p>ドメイン名の比較は大文字小文字を区別せずに行なわれ、<var>Domain</var>
535      は常に DNS ツリーのルートから始まるものとみなされます。ですから、
536      次の二つのドメイン <code>.ExAmple.com</code> と
537      <code>.example.com.</code> (最後のピリオドに注目) は同一であると
538      みなされます。ドメインの比較は DNS ルックアップなしで行なわれるため、
539      サブネットの比較よりもずっと効率的です。</p>
540    </div></dd>
541
542    
543    <dt><var><a name="subnet" id="subnet">SubNet</a></var></dt>
544    <dd>
545    <p><dfn>SubNet</dfn> は数値形式 (ドットで区切られた四つの数字) の
546    部分インターネットアドレスです。後にスラッシュと <var>Subnet</var>
547    の意味のあるビット数を指定するネットマスクとを続けることができます。
548    共通のネットワークインタフェースを使って到達することのできるサブネットを
549    表すために使われます。明示的にネットマスクを指定しない場合は
550    最後の省略された (もしくは値が 0 の) 数字がマスクを指定します。
551    (この場合は、ネットマスクは 8 ビット単位でしか指定できません。)
552    例:</p>
553
554    <dl>
555    <dt><code>192.168</code> もしくは <code>192.168.0.0</code></dt>
556    <dd>サブネット 192.168.0.0 と暗黙の 16 ビット有効なネットマスク
557    (<code>255.255.0.0</code> というネットマスクの形式で使われることも
558    あります)</dd>
559    <dt><code>192.168.112.0/21</code></dt>
560    <dd>サブネット<code>192.168.112.0/21</code> と 21 ビット有効な
561    ネットマスク (<code>255.255.248.0</code> という形式で使われることも
562    あります)</dd>
563    </dl>
564
565    <p>特別な場合に、32 ビット有効な <em>SubNet</em> は
566    <var><a href="#ipadr">IPAddr</a></var> と同等で、
567    0 ビット有効な <var>SubNet</var> (<em>例えば</em>、0.0.0.0/0) は
568    すべての IP アドレスにマッチする定数 <var>_Default_</var> と同じです。</p>
569    </dd>
570
571    
572    <dt><var><a name="ipaddr" id="ipaddr">IPAddr</a></var></dt>
573    <dd>
574    <p><dfn>IPAddr</dfn> は数値形式 (ドットで区切られた四つの数字) の
575    完全インターネットアドレスです。通常はこのアドレスはホストを
576    表しますが、必ずしもアドレスに対応する DNS ドメイン名があるわけでは
577    ありません。</p>
578
579    <div class="example"><h3>例</h3><p><code>
580      192.168.123.7
581    </code></p></div>
582
583    <div class="note"><h3>注</h3>
584      <p><var>IPAddr</var> は DNS システムにより解決される必要がないので、
585      apache の性能が向上するかもしれません。</p>
586    </div></dd>
587
588    
589    <dt><var><a name="hostname" id="hostname">Hostname</a></var></dt>
590    <dd>
591    <p><dfn>Hostname</dfn> は DNS ドメインサービスにより一つもしくは
592    複数の <var><a href="#ipaddr">IPAddr</a></var> に解決可能な
593    完全な DNS ドメイン名です。これは (<var><a href="#domain">Domain</a></var>
594    と違って、説明は上記を参照) 論理的なホストを表し、少くとも一つの
595    <var><a href="#ipaddr">IPAddr</a></var> (もしくは違う
596    <var><a href="#ipaddr">IPAddr</a></var> のホストのリスト) に解決
597    されなければなりません)。</p>
598
599    <div class="example"><h3>例</h3><p><code>
600      prep.ai.example.com<br />
601      www.apache.org
602    </code></p></div>
603
604    <div class="note"><h3>注</h3>
605      <p>多くの場合、<var>Hostname</var> の代わりに <var><a href="#ipaddr">IPAddr</a></var> を指定した方が、DNS ルックアップを
606      避けることができるため、効率が良くなります。Apache の名前解決は
607      ネームサーバへの接続が遅い PPP 上の場合などにかなり時間を取られる
608      ことがあります。</p>
609      <p><var>Hostname</var> の比較は大文字小文字を区別せずに行なわれ、
610      <var>Hostname</var> は常に DNS ツリーのルートから始まるものとみなされます。
611      ですから、二つのドメイン <code>WWW.ExAmple.com</code> と
612      <code>www.example.com.</code> (最後のピリオドに注目) は同一であると
613      みなされます。</p>
614     </div></dd>
615    </dl>
616
617<h3>参照</h3>
618<ul>
619<li><a href="/dns-caveats.html">DNS に関する問題</a></li>
620</ul>
621</div>
622<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
623<div class="directive-section"><h2><a name="Proxy" id="Proxy">&lt;Proxy&gt;</a> <a name="proxy" id="proxy">ディレクティブ</a></h2>
624<table class="directive">
625<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされるリソースに適用されるコンテナ</td></tr>
626<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>&lt;Proxy <var>wildcard-url</var>&gt; ...&lt;/Proxy&gt;</code></td></tr>
627<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
628<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
629<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
630</table>
631    <p><code class="directive">&lt;Proxy&gt;</code> セクション中の
632    ディレクティブはマッチするプロキシされるコンテンツにのみ適用されます。
633    シェル形式のワイルドカードが使えます。</p>
634
635    <p>例えば、次の設定は <code>yournetwork.example.com</code> の
636    ホストにのみプロキシサーバを経由したアクセスを許可します:</p>
637
638    <div class="example"><p><code>
639      &lt;Proxy *&gt;<br />
640      <span class="indent">
641        Order Deny,Allow<br />
642        Deny from all<br />
643        Allow from yournetwork.example.com<br />
644      </span>
645      &lt;/Proxy&gt;
646    </code></p></div>
647
648    <p>次の例は <code>example.com</code> の <code>foo</code> ディレクトリの
649    すべてのファイルに対して、プロキシサーバを通して送られたときには
650    <code>INCLUDES</code> フィルタを通して送るように設定します:</p>
651
652    <div class="example"><p><code>
653      &lt;Proxy http://example.com/foo/*>;<br />
654      <span class="indent">
655        SetOutputFilter INCLUDES<br />
656      </span>
657      &lt;/Proxy&gt;
658    </code></p></div>
659
660
661<h3>参照</h3>
662<ul>
663<li><code class="directive"><a href="#proxymatch">&lt;ProxyMatch&gt;</a></code></li>
664</ul>
665</div>
666<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
667<div class="directive-section"><h2><a name="ProxyBadHeader" id="ProxyBadHeader">ProxyBadHeader</a> <a name="proxybadheader" id="proxybadheader">ディレクティブ</a></h2>
668<table class="directive">
669<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>応答におかしなヘッダがある場合の扱い方を決める</td></tr>
670<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyBadHeader IsError|Ignore|StartBody</code></td></tr>
671<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyBadHeader IsError</code></td></tr>
672<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
673<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
674<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
675<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.0.44 以降で使用可能</td></tr>
676</table>
677    <p><code class="directive">ProxyBadHeader</code> ディレクティブは構文的に
678    間違ったレスポンスヘッダ (<em>つまり</em> コロンを含まないもの) を受け取ったときに
679    <code class="module"><a href="/mod/mod_proxy.html">mod_proxy</a></code> がどう振る舞うかを決めます。以下の引数を
680    取ることができます:</p>
681
682    <dl>
683    <dt><code>IsError</code></dt>
684    <dd>リクエストを中止して 502 (Bad Gateway) 応答を返す。
685    これがデフォルトの動作です。</dd>
686
687    <dt><code>Ignore</code></dt>
688    <dd>間違ったヘッダ行をそもそも存在しなかったものとして扱う。</dd>
689
690    <dt><code>StartBody</code></dt>
691    <dd>間違ったヘッダ行を受け取ったら、ヘッダの読み込みを終了して、
692    それ以降の残りをボディとして扱う。これはヘッダとボディの間に空行を入れ忘れて
693    しまっているような、きちんと動作していないバックエンドサーバがあるときに、
694    問題を回避するのに役に立ちます。</dd>
695    </dl>
696
697</div>
698<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
699<div class="directive-section"><h2><a name="ProxyBlock" id="ProxyBlock">ProxyBlock</a> <a name="proxyblock" id="proxyblock">ディレクティブ</a></h2>
700<table class="directive">
701<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシ接続を禁止する語句、ホスト名、ドメインを指定する</td></tr>
702<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyBlock *|<var>word</var>|<var>host</var>|<var>domain</var>
703[<var>word</var>|<var>host</var>|<var>domain</var>] ...</code></td></tr>
704<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
705<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
706<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
707</table>
708    <p><code class="directive">ProxyBlock</code> ディレクティブは空白で区切られた
709    語句、ホスト名、ドメインのリストを指定します。サイト名にその語句、ホスト名、
710    ドメインを含むサイトへの HTTP、HTTPS、FTP によるドキュメントのリクエストは
711    プロキシサーバにより <em>ブロックされます</em>。プロキシモジュールは
712    起動時にホスト名と思しき項目の IP アドレスを調べ、後のテストのために
713    キャッシュします。これにより、サーバの起動が少し遅くなるかもしれません。</p>
714
715    <div class="example"><h3>Example</h3><p><code>
716      ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
717    </code></p></div>
718
719    <p><code>rocky.wotsamattau.edu</code> が IP アドレスで参照されたときでも
720    マッチします。</p>
721
722    <p><code>wotsamattau.edu</code> のマッチには <code>wotsamattau</code>
723    だけでも十分です。</p>
724
725    <div class="example"><p><code>
726      ProxyBlock *
727    </code></p></div>
728
729    <p>はすべてのサイトへの接続をブロックすることに注意してください。</p>
730
731</div>
732<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
733<div class="directive-section"><h2><a name="ProxyDomain" id="ProxyDomain">ProxyDomain</a> <a name="proxydomain" id="proxydomain">ディレクティブ</a></h2>
734<table class="directive">
735<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされたリクエストのデフォルトのドメイン名</td></tr>
736<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyDomain <var>Domain</var></code></td></tr>
737<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
738<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
739<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
740</table>
741    <p>このディレクティブはイントラネット内の Apache プロキシサーバにのみ
742    有用です。<code class="directive">ProxyDomain</code> ディレクティブは
743    apache プロキシサーバが属するデフォルトのドメインを指定します。
744    ドメイン名の無いリクエストを受けた場合、設定された <var>Domain</var>
745    が追加された同じホストへのリダイレクト応答が返されます。</p>
746
747    <div class="example"><h3>例</h3><p><code>
748      ProxyRemote  *  http://firewall.example.com:81<br />
749      NoProxy         .example.com 192.168.112.0/21<br />
750      ProxyDomain     .example.com
751    </code></p></div>
752
753</div>
754<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
755<div class="directive-section"><h2><a name="ProxyErrorOverride" id="ProxyErrorOverride">ProxyErrorOverride</a> <a name="proxyerroroverride" id="proxyerroroverride">ディレクティブ</a></h2>
756<table class="directive">
757<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされたコンテンツのエラーページを上書きする</td></tr>
758<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyErrorOverride On|Off</code></td></tr>
759<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyErrorOverride Off</code></td></tr>
760<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
761<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
762<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
763<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.0 以降で使用可能</td></tr>
764</table>
765    <p>このディレクティブはリバースプロキシを使用していて、
766    エンドユーザに送られるエラーページの外見を共通のものにしたいときに
767    有用です。このディレクティブは (<code class="module"><a href="/mod/mod_include.html">mod_include</a></code> の SSI によって)
768    インクルードされたファイルがエラーコードを取得して、正しく動作を
769    するようにもします (デフォルトの動作は、プロキシされたサーバの
770    エラーページの表示で、このディレクティブを有効にすると SSI のエラー
771    メッセージを表示します)。</p>
772
773    <p>このディレクティブは informational (1xx), 成功 (2xx),
774    リダイレクト (3xx) ステータスのレスポンス処理には影響しません。</p>
775
776</div>
777<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
778<div class="directive-section"><h2><a name="ProxyFtpDirCharset" id="ProxyFtpDirCharset">ProxyFtpDirCharset</a> <a name="proxyftpdircharset" id="proxyftpdircharset">ディレクティブ</a></h2>
779<table class="directive">
780<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされた FTP (の一覧表示) のキャラクタセットを定義</td></tr>
781<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyFtpDirCharset <var>character set</var></code></td></tr>
782<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyFtpDirCharset ISO-8859-1</code></td></tr>
783<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ</td></tr>
784<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
785<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
786<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.2.7 以降で使用可能</td></tr>
787</table>
788    <p><code class="directive">ProxyFtpDirCharset</code> ディレクティブは、
789    <code class="module"><a href="/mod/mod_proxy_ftp.html">mod_proxy_ftp</a></code> が HTML 形式で生成する FTP のディレクトリ一覧
790    画面のキャラクタセットを定義します。</p>
791
792</div>
793<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
794<div class="directive-section"><h2><a name="ProxyIOBufferSize" id="ProxyIOBufferSize">ProxyIOBufferSize</a> <a name="proxyiobuffersize" id="proxyiobuffersize">ディレクティブ</a></h2>
795<table class="directive">
796<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>内部データスループットバッファのサイズを決定する</td></tr>
797<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyIOBufferSize <var>bytes</var></code></td></tr>
798<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyIOBufferSize 8192</code></td></tr>
799<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
800<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
801<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
802</table>
803    <p><code class="directive">ProxyIOBufferSize</code> ディレクティブは入力と
804    出力用の一時メモリとして使われる内部バッファのサイズを調整します。
805    サイズは <code>8192</code> 以下でなければなりません。</p>
806
807    <p>ほとんどすべての場合、この値を変更する理由はありません。</p>
808
809</div>
810<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
811<div class="directive-section"><h2><a name="ProxyMatch" id="ProxyMatch">&lt;ProxyMatch&gt;</a> <a name="proxymatch" id="proxymatch">ディレクティブ</a></h2>
812<table class="directive">
813<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>正規表現でのマッチによるプロキシリソース用のディレクティブコンテナ</td></tr>
814<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>&lt;ProxyMatch <var>regex</var>&gt; ...&lt;/ProxyMatch&gt;</code></td></tr>
815<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
816<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
817<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
818</table>
819    <p><code class="directive">&lt;ProxyMatch&gt;</code> は URL のマッチに
820    <a class="glossarylink" href="/glossary.html#regex" title="用語集を参照">正規表現</a> を用いることを除けば
821    <code class="directive">&lt;Proxy&gt;</code> ディレクティブと同じです。</p>
822
823<h3>参照</h3>
824<ul>
825<li><code class="directive"><a href="#proxy">&lt;Proxy&gt;</a></code></li>
826</ul>
827</div>
828<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
829<div class="directive-section"><h2><a name="ProxyMaxForwards" id="ProxyMaxForwards">ProxyMaxForwards</a> <a name="proxymaxforwards" id="proxymaxforwards">ディレクティブ</a></h2>
830<table class="directive">
831<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リクエストがフォワードされるプロキシの最大数</td></tr>
832<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyMaxForwards <var>number</var></code></td></tr>
833<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyMaxForwards -1</code></td></tr>
834<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
835<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
836<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
837<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.0 以降で使用可能; Apache 2.2.7でデフォルト動作が変わりました</td></tr>
838</table>
839    <p><code class="directive">ProxyMaxForwards</code> ディレクティブは
840    リクエストに <code>Max-Forwards</code> ヘッダが指定されていない場合に
841    リクエストが通過可能なプロキシの最大数を設定します。これは
842    プロキシの無限ループや DoS 攻撃を防ぐために設定されるかもしれません。</p>
843
844    <div class="example"><h3>例</h3><p><code>
845      ProxyMaxForwards 15
846    </code></p></div>
847
848    <p><code class="directive">ProxyMaxForwards</code> の設定は、HTTP/1.1 (RFC2616)
849    に違反します。と言うのも、RFC2616 は、クライアントが <code>Max-Forwards</code>
850    ヘッダをセットしない時、プロキシが <code>Max-Forwards</code> ヘッダを
851    セットすることを禁じているからです。
852    Apache の初期バージョンは常にセットする可能性がありました。
853    <code class="directive">ProxyMaxForwards</code> に負数 (デフォルト値の -1 も含む)
854    を指定すると、HTTP/1.1 準拠の動作になります。しかし、これは無限ループの危険性を残します。</p>
855
856</div>
857<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
858<div class="directive-section"><h2><a name="ProxyPass" id="ProxyPass">ProxyPass</a> <a name="proxypass" id="proxypass">ディレクティブ</a></h2>
859<table class="directive">
860<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リモートサーバをローカルサーバの URL 空間にマップする</td></tr>
861<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPass [<var>path</var>] !|<var>url</var> [<var>key=value</var>
862<var>key=value</var> ...]] [nocanon] [interpolate]</code></td></tr>
863<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ</td></tr>
864<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
865<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
866</table>
867    <p>このディレクティブはリモートサーバをローカルサーバの名前空間に
868    マップできるようにします。ローカルサーバは通常の意味でのプロキシと
869    しては動作せず、リモートサーバのミラーとして振る舞います。
870    ローカルサーバはしばしば <dfn>リバースプロキシ</dfn> や <dfn>ゲートウェイ</dfn>
871    と呼ばれます。
872    <var>path</var> はローカルの仮想パスの名前です。<var>url</var> は
873    リモートサーバの部分 URL になり、クエリー文字列を含むことはできません。</p>
874
875    <div class="warning"><code class="directive">ProxyPass</code> ディレクティブを
876    使っているときは <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> ディレクティブは通常は
877    <strong>off</strong> に設定されているべきです。</div>
878
879    <p>ローカルサーバのアドレスが <code>http://example.com/</code> であると
880    します。すると、</p>
881
882    <div class="example"><p><code>
883      ProxyPass /mirror/foo/ http://backend.example.com/
884    </code></p></div>
885
886    <p>と設定すると <code>http://example.com/mirror/foo/bar</code> への
887    リクエストが内部的に <code>http://backend.example.com/bar</code> への
888    プロキシリクエストに変換されることになります。</p>
889
890    <div class="warning">
891    <p>もし第一引数が <strong>/</strong> で終端するならば、第二引数も
892       <strong>/</strong> で終端すべきです。逆もまた然りで、第一引数が終端しないならば、
893       第二引数も終端すべきではありません。
894       これに反すると、バックエンドサーバ向けに変換されたリクエストは
895       必要なスラッシュを欠く可能性があり、バックエンドサーバは期待する結果を返しません。
896    </p>
897    </div>
898
899    <p>サブディレクトリをリバースプロキシしたくないときに <code>!</code> は
900    役に立ちます。<em>例えば</em>、</p>
901
902    <div class="example"><p><code>
903      ProxyPass /mirror/foo/i !<br />
904      ProxyPass /mirror/foo http://backend.example.com
905    </code></p></div>
906
907    <p>は <code>/mirror/foo/i</code> を <em>除く</em>
908    <code>/mirror/foo</code> へのすべてのリクエストを
909    <code>backend.example.com</code> にプロキシします。</p>
910
911    <div class="warning"><h3>ProxyPass ディレクティブの順序</h3>
912      <p><code class="directive"><a href="#proxypass">ProxyPass</a></code> と
913      <code class="directive"><a href="#proxypassmatch">ProxyPassMatch</a></code> のルールの
914      設定は設定ファイル中の順序どおりにチェックされます。
915      最初にマッチしたルールが勝ちます。このため通常は、
916      マッチが重なる <code class="directive"><a href="#proxypass">ProxyPass</a></code>
917      ルールは、長い URL が先になるように並べるべきです。
918      そうしないと、後に書かれた長い URL にマッチするルールが、
919      先に書かれた短い URL の先頭の部分にマッチしたルールで隠される可能性があります。
920      ワーカーの共有とも多少の関係があることにも注意してください。</p>
921
922      <p>同じ理由で、否定処理も一般的な <code class="directive">ProxyPass</code>
923      ディレクティブの <em>前に</em> 書くべきです。</p>
924
925    </div> 
926
927    <p>Apache HTTP サーバ 2.1 以降、バックエンドサーバとの接続に
928    プールされたコネクションを使えるようになりました。
929    要求に応じて生成されたコネクションは将来の使用のためにプール内に維持されます。
930    プールサイズとその他の設定の制限は <code class="directive">ProxyPass</code>
931    ディレクティブに <code>key=value</code> パラメータで設定します。
932    パラメータは後述する表に示します。</p>
933
934    <p>デフォルトで、mod_proxy は Web サーバの子プロセスが同時に使いうる
935    最大数のコネクションを許し維持するようにします。
936    この数をデフォルトから減らすには <code>max</code> パラメータを使ってください。
937    生存期間を設定するには <code>ttl</code> パラメータを使ってください。
938    <code>ttl</code> 秒を越えて使われていないコネクションは切断されます。
939    バックエンドサーバのキープアライブがタイムアウトして、切断されようとしている
940    コネクションが使われることを防ぐために <code>ttl</code> を使えます。</p>
941
942    <p>コネクションプールは Web サーバの子プロセスごとに維持されます。
943    <code>max</code> やその他の設定は、すべての子プロセスの間で調整はされません。
944    ただし、設定により、ただひとつの子プロセスに設定を委ねた場合や
945    MPM 設計によってはこの限りではありません。</p>
946
947    <div class="example"><h3>例</h3><p><code>
948        ProxyPass /example http://backend.example.com max=20 ttl=120 retry=300
949    </code></p></div>
950
951    <table>
952    <tr><th>パラメータ</th>
953        <th>デフォルト値</th>
954        <th>説明</th></tr>
955    <tr><td>min</td>
956        <td>0</td>
957        <td>コネクションプール内で実際の接続に関連していないエントリの最小数です。
958        デフォルト値から変更する必要があるのは、バックエンドとの接続に必要な
959        ヒープメモリを事前に割り当てるか維持しなければいけない特別な状況のみです。</td></tr>
960    <tr><td>max</td>
961        <td>1...n</td>
962        <td>バックエンドサーバとの接続数の最大値です。
963        デフォルト値は、使用している MPM のプロセスあたりのスレッド数になっています。
964        Prefork MPM では常に 1 で、他の MPM では <code class="directive">ThreadsPerChild</code>
965        ディレクティブで調節できます。</td></tr>
966    <tr><td>smax</td>
967        <td>max</td>
968        <td>もしコネクションプール内の接続中エントリが <code>ttl</code> パラメータ
969        で設定した生存期間より長く未使用のままであれば、
970        この指定値を越える分のエントリを解放します。
971        もしエントリが関連するコネクションを持てば、接続を閉じます。
972        デフォルト値から変更する必要があるとすれば、
973        コネクションが生存期間を越えてしまった時に、
974        コネクションプール内の該当エントリの解放とコネクションの切断を
975        より積極的に必要とする特別な場合のみです。</td></tr>
976    <tr><td>acquire</td>
977        <td>-</td>
978        <td>設定すると、コネクションプールからフリーのコネクションを取得するために
979        待機する待ち時間 (ミリ秒単位) の最大値になります。フリーのコネクションがプールになかった場合は、
980        <code>SERVER_BUSY</code> ステータスをクライアントに返します。
981    </td></tr>
982    <tr><td>connectiontimeout</td>
983        <td>timeout</td>
984        <td>接続タイムアウトを秒で指定します。
985        バックエンドに接続を完了するまでの Apache の待ち時間です。
986        値の最後に ms を書くと、タイムアウトの単位をミリ秒にできます。
987    </td></tr>
988    <tr><td>disablereuse</td>
989        <td>Off</td>
990        <td>使用後すぐに mod_proxy がバックエンドとの接続を切断してほしい時は、
991        このパラメータを有効にすべきです。そうすることで、バックエンドとの
992        永続的な接続とプーリングを無効にできます。
993        これはいくつかの状況下で役に立ちます。例えば、Apache とバックエンドサーバ
994        の間にファイアウォールが存在し (プロトコルは問わないとします)、黙って
995        接続を切られる場合や、あるいは、バックエンドサーバ自体が DNS で
996        ラウンドロビンされている場合などです。コネクションプーリングによる再利用を
997        無効にするには、このパラメータ値を <code>On</code> にしてください。
998    </td></tr>
999    <tr><td>flushpackets</td>
1000        <td>off</td>
1001        <td>プロキシモジュールが "chunk" ごとに出力データを自動的に強制送信(フラッシュ)
1002        するかを指定します。 'off' は必要な時だけ強制送信します。
1003        'on' はそれぞれの "chunk" データごとに強制送信します。 'auto' は、一定時間待機し、
1004        'flushwait' で指定したミリ秒の間、入力データが無ければ強制送信します。
1005        現在、このパラメータは AJP でのみ意味があります。
1006    </td></tr>
1007    <tr><td>flushwait</td>
1008        <td>10</td>
1009        <td>'flushpackets' パラメータの値が 'auto' の場合、出力データを強制送信する前に、
1010        次の入力をどのぐらい待つかをミリ秒単位で指定します。
1011    </td></tr>
1012    <tr><td>keepalive</td>
1013        <td>Off</td>
1014        <td><p>バックエンドサーバと Apache の間にファイアーウォールがある場合には、
1015        このパラメータを使ってください。ファイアウォールは往々にして、
1016        非活動状態のコネクションを落とそうとします。
1017        このフラグは OS に指示して、<code>KEEP_ALIVE</code> メッセージを非活動状態の
1018        コネクションでも送るようにします。これによってファイアウォールによってコネクションが
1019        落とされることを防げます。keepalive を有効にするには、このプロパティを
1020        <code>On</code> にしてください。</p>
1021    <p>初期およびその後の TCP キープアライブの間隔は OS のグローバル設定に依存しますが、
1022    2 時間以上にしたほうがよいでしょう。有効性を考えると、
1023    OS で設定した間隔はファイアウォールで使われる閾値より小さくあるべきです。</p>
1024    </td></tr>
1025    <tr><td>lbset</td>
1026        <td>0</td>
1027        <td>ワーカーが属するロードバランサのクラスタセットを設定します。
1028        ロードバランサは、より小さい lbset 値を持つメンバーから使おうとします。
1029    </td></tr>
1030    <tr><td>ping</td>
1031        <td>0</td>
1032        <td>この設定により、Web サーバは ajp13 通信でリクエストを送信する前に
1033        <code>CPING</code> を送るようになります。
1034        パラメータ値は、<code>CPONG</code> リプライを待つ時間を秒単位で指定します。
1035        この機能は、ハングしたり高負荷状態の Tomcat に起因する問題を回避するために
1036        追加されました。 また、ajp13 側に ping/pong 機能のサポートが必要です。
1037        Tomcat は 3.3.2 以降, 4.1.28 以降, 5.0.13 以降が ping/pong 機能を実装しています。
1038        この機能は、通常利用でのネットワークトラフィックを増やす可能性があり、
1039        問題になるかもしれません。しかし、クラスタを形成するノードの一部が
1040        ダウンしたり高負荷になった時にはトラフィックを抑制できる可能性があります。
1041        現在、この設定は AJP でのみ意味があります。
1042        値の最後に ms を書くと、単位をミリ秒にできます。
1043    </td></tr>
1044    <tr><td>loadfactor</td>
1045        <td>1</td>
1046        <td>ワーカーあたりの負荷係数です。BalancerMember で使います。
1047        1 から 100 までの数字でそのワーカーに対する正規化された負荷率を指定します。
1048    </td></tr>
1049    <tr><td>redirect</td>
1050        <td>-</td>
1051        <td>ワーカーのリダイレクション経路です。この値は通常は、
1052        クラスタから安全にノードを取り除けるように動的にセットされます。
1053        もし設定すると、セッション ID 無しの全てのリクエストは、
1054        この値と同じルーティングパラメータを持つ
1055        BalancerMember にリダイレクトされます。
1056    </td></tr>
1057    <tr><td>retry</td>
1058        <td>60</td>
1059        <td>コネクションをプーリングするための、リトライのタイムアウトを秒で
1060        指定します。バックエンドサーバへのコネクションプーリングが失敗した場合は、
1061        タイムアウトの期間が過ぎるまで、そのサーバにリクエストをフォワードしません。
1062        この機能を使うと、バックエンドサーバをメンテナンスのためにシャットダウンし、
1063        後でオンラインに復帰させるといったことができます。
1064        0 を指定すると、失敗したワーカーへ、タイムアウト無しで常にリトライします。
1065    </td></tr>
1066    <tr><td>route</td>
1067        <td>-</td>
1068        <td>ロードバランサで使われた場合のワーカーのルート値。
1069        ルート値はセッション ID に付加される値です。
1070    </td></tr>
1071    <tr><td>status</td>
1072        <td>-</td>
1073        <td>一文字でワーカーの初期状態を定義します: 'D' は無効 (disabled)、
1074        'S' は停止 (stopped)、 'I' はエラー無視 (ignore-errors)、
1075        'H' はホットスタンバイ (hot-standby)、 'E' はエラー状態 (error) です。
1076        '+' を文字の前に書いて有効にするか (これがデフォルト動作です)、 あるいは
1077        '-' を書いて無効にできます。つまり、 'S-E' の指定は、ワーカーを停止状態
1078        かつ、エラー状態フラグのクリアを意味します。
1079    </td></tr>
1080    <tr><td>timeout</td>
1081        <td><code class="directive"><a href="#proxytimeout">ProxyTimeout</a></code></td>
1082        <td>コネクションタイムアウトを秒で指定します。
1083        バックエンドからのデータ受信およびバックエンドへのデータ送信の
1084        Apache の待ち時間です。
1085    </td></tr>
1086    <tr><td>ttl</td>
1087        <td>-</td>
1088        <td>非活動状態のコネクションと、関連するコネクションプール内のエントリの
1089        生存時間を秒で指定します。いったんこの制限に達すると、
1090        コネクションはふたたび使われることはありません。
1091        つまり、コネクションは一定時間後に閉じられます。
1092    </td></tr>
1093
1094    </table>
1095
1096    <p>もし <code class="directive">ProxyPass</code> ディレクティブのスキームが
1097    <code>balancer://</code> で始まる場合 (例えば <code>balancer://cluster/</code>、
1098    パス情報は無視されます)、バックエンドのサーバと実際には通信しない
1099    仮想ワーカーが生成されます。通信しない代わりに、このワーカーは幾つかの
1100    "本物の" ワーカーの管理をつかさどります。
1101    この場合、いくつかの特殊パラメータを、この仮想ワーカーに対して設定できます。
1102    ロードバランス動作のより詳しい情報は、<code class="module"><a href="/mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>
1103    を参照してください。
1104    </p>
1105    <table>
1106    <tr><th>パラメータ</th>
1107        <th>デフォルト値</th>
1108        <th>説明</th></tr>
1109    <tr><td>lbmethod</td>
1110        <td>byrequests</td>
1111        <td>Balancer のロードバランス方法。使用するロードバランスの
1112        スケジューリング方法を選びます。処理したリクエストの数で重み付けする
1113        <code>byrequests</code> か、転送量のバイト数で重み付けする
1114        <code>bytraffic</code> か、待機中のリクエスト数で振り分ける
1115        <code>bybusyness</code> を設定できます (Apache HTTP サーバ 2.2.10 以降)。
1116        デフォルトは<code>byrequests</code> です。
1117    </td></tr>
1118    <tr><td>maxattempts</td>
1119        <td>ワーカーの数よりひとつ少ない数。あるいはワーカーがひとつであれば1</td>
1120        <td>フェイルオーバーを試みる最大の回数を指定します。
1121    </td></tr>
1122    <tr><td>nofailover</td>
1123        <td>Off</td>
1124        <td><code>On</code> になっていると、ワーカーがエラーを起こしたり
1125        無効になっている場合にセッションが切れます。
1126        バックエンドサーバがセッションレプリケーションをサポートしていない場合は、
1127        On にしてください。
1128    </td></tr>
1129    <tr><td>stickysession</td>
1130        <td>-</td>
1131        <td>バランサーのスティッキーセッション名です。通常はこの値は <code>JSESSIONID</code>
1132        や <code>PHPSESSIONID</code> といったものになりますが、この値は
1133        セッションをサポートするバックエンドのアプリケーションサーバに依存します。
1134        バックエンドのアプリケーションサーバが、クッキーやURLエンコードID
1135        に異なるセッション名を使う場合(サーブレットコンテナのように)、
1136        | 文字でふたつの名前を区切ってください。
1137        最初の名前がクッキー用で、二番目がURLパス用です。
1138    </td></tr>
1139    <tr><td>scolonpathdelim</td>
1140        <td>Off</td>
1141        <td><code>On</code> にセットすると、セミコロン文字 ';' をスティッキーセッション
1142        の別の区切り文字として使えるようになります。
1143        これは主に mod_jk の動作に合わせるために使います。例えば、
1144        <code>JSESSIONID=6736bcf34;foo=aabfa</code> のような指定です。
1145    </td></tr>
1146    <tr><td>timeout</td>
1147        <td>0</td>
1148        <td>バランサーのタイムアウトを秒で指定します。
1149        この値を設定すると、フリーのワーカーを取得するまでの最大待機時間になります。
1150        デフォルトでは待機しません。
1151    </td></tr>
1152    <tr><td>failonstatus</td>
1153        <td>-</td>
1154        <td>ひとつ、あるいはコンマ区切りの複数の HTTP ステータスコードです。
1155        この値を設定すると、列挙したステータスコードのどれかをバックエンドが返した時、
1156        そのワーカーをエラー状態にします。ワーカーのエラーからの回復は
1157        他のワーカーエラーと同じように動作します。
1158        Apache HTTP サーバ 2.2.17 以降で使用可能です。
1159    </td></tr>
1160
1161    </table>
1162    <p>バランサーの設定例</p>
1163    <div class="example"><p><code>
1164      ProxyPass /special-area http://special.example.com smax=5 max=10<br />
1165      ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid nofailover=On<br />
1166      &lt;Proxy balancer://mycluster&gt;<br />
1167      <span class="indent">
1168        BalancerMember ajp://1.2.3.4:8009<br />
1169        BalancerMember ajp://1.2.3.5:8009 loadfactor=20<br />
1170        # Less powerful server, don't send as many requests there,<br />
1171        BalancerMember ajp://1.2.3.6:8009 loadfactor=5<br />
1172      </span>
1173      &lt;/Proxy&gt;
1174    </code></p></div>
1175
1176    <p>ホットスタンバイの設定例です。他のメンバーが利用できない場合のみ
1177    使われます。</p>
1178    <div class="example"><p><code>
1179      ProxyPass / balancer://hotcluster/ <br />
1180      &lt;Proxy balancer://hotcluster&gt;<br />
1181      <span class="indent">
1182        BalancerMember ajp://1.2.3.4:8009 loadfactor=1<br />
1183        BalancerMember ajp://1.2.3.5:8009 loadfactor=2<br />
1184        # The below is the hot standby<br />
1185        BalancerMember ajp://1.2.3.6:8009 status=+H<br />
1186        ProxySet lbmethod=bytraffic
1187      </span>
1188      &lt;/Proxy&gt;
1189    </code></p></div>
1190
1191    <p>通常、mod_proxy は ProxyPass した URL を正規化します。
1192    しかし、これによりバックエンドの互換性に問題が生じることがあります。
1193    特に、<var>PATH_INFO</var> を使っている場合に起きがちです。
1194    <var>nocanon</var> オプションは正規化を抑制し、URL のパスをそのまま ("raw")
1195    バックエンドに伝えます。これがバックエンドのセキュリティに影響を与える可能性に
1196    注意してください。と言うのも、プロキシによって提供されていた、
1197    URL ベースの攻撃への通常の一定の防御を無くすことになるからです。</p>
1198
1199    <p>オプショナルな <var>interpolate</var> キーワード (httpd 2.2.9 以降で利用可能)
1200    を <code class="directive">ProxyPassInterpolateEnv</code> ディレクティブと
1201    一緒に使うと、<var>${VARNAME}</var> 形式で、 ProxyPass 設定に環境変数を
1202    使えるようになります。この時、標準的な CGI 由来の環境変数の多くは
1203    置換に使えないことに注意してください。そのため、複雑なルールの記述のためには、
1204    <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> に頼ることになるでしょう。</p>
1205
1206    <p><code class="directive"><a href="/mod/core.html#location">&lt;Location&gt;</a></code> セクションの中で使われた場合、最初の引数は
1207    省略され、ローカルディレクトリは <code class="directive"><a href="/mod/core.html#location">&lt;Location&gt;</a></code> から取得されます。
1208    同じことは <code class="directive"><a href="/mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code>
1209    セクション内でも起きます。しかし、ProxyPass は正規表現を解釈しないので、
1210    この状況では代わりに <code class="directive">ProxyPassMatch</code> を使う必要があります。</p>
1211
1212    <p>このディレクティブは <code class="directive"><a href="/mod/core.html#directory">&lt;Directory&gt;</a></code> や <code class="directive"><a href="/mod/core.html#files">&lt;Files&gt;</a></code> セクション内では使えません。</p>
1213
1214    <p>より柔軟なリバースプロキシの設定が必要な場合は、<code>[P]</code>
1215    フラグ付きの <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>
1216    ディレクティブを参照してください。</p>
1217
1218
1219</div>
1220<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1221<div class="directive-section"><h2><a name="ProxyPassInterpolateEnv" id="ProxyPassInterpolateEnv">ProxyPassInterpolateEnv</a> <a name="proxypassinterpolateenv" id="proxypassinterpolateenv">ディレクティブ</a></h2>
1222<table class="directive">
1223<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リバースプロキシ設定内での環境変数の使用を有効にする</td></tr>
1224<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPassInterpolateEnv On|Off</code></td></tr>
1225<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyPassInterpolateEnv Off</code></td></tr>
1226<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ</td></tr>
1227<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1228<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1229<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.2.9 以降で使用可能</td></tr>
1230</table>
1231    <p><code class="directive">ProxyPass</code>, <code class="directive">ProxyPassReverse</code>,
1232    <code class="directive">ProxyPassReverseCookieDomain</code>,
1233    <code class="directive">ProxyPassReverseCookiePath</code> の
1234    <var>interpolate</var> 引数と一緒にこのディレクティブを使うと、
1235    環境変数を使ってリバースプロキシを動的に設定できます。
1236    <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> など他のモジュールで環境変数を設定する想定です。
1237    <code class="directive">ProxyPass</code> ディレクティブ,
1238    <code class="directive">ProxyPassReverse</code> ディレクティブ,
1239    <code class="directive">ProxyPassReverseCookieDomain</code> ディレクティブ,
1240    <code class="directive">ProxyPassReverseCookiePath</code> ディレクティブ
1241    の動作に影響を与え、これらの設定ディレクティブ内の <code>${varname}</code> の文字列を
1242    環境変数 <code>varname</code> の値で置き換えます。
1243    (<var>interpolate</var> オプションがセットされていれば)</p>
1244    <p>必要にならない限り、このディレクティブは無効にしてください。
1245    (サーバのパフォーマンスのため) </p>
1246
1247</div>
1248<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1249<div class="directive-section"><h2><a name="ProxyPassMatch" id="ProxyPassMatch">ProxyPassMatch</a> <a name="proxypassmatch" id="proxypassmatch">ディレクティブ</a></h2>
1250<table class="directive">
1251<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>正規表現を使ってリモートサーバをローカルサーバの URL 空間にマップする</td></tr>
1252<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPassMatch [<var>regex</var>] !|<var>url</var> [<var>key=value</var>
1253	<var>[key=value</var> ...]]</code></td></tr>
1254<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ</td></tr>
1255<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1256<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1257<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.2.5 以降で使用可能</td></tr>
1258</table>
1259    <p>単純な文字列前方一致ではなく正規表現を用いることを除いて、このディレクティブは
1260       <code class="directive"><a href="#proxypass">ProxyPass</a></code> と同じです。
1261       指定した正規表現で <var>url</var> に対してマッチを試みます。
1262       マッチすると、サーバはマッチした丸括弧部分を前方参照の置換に使い、新しい <var>url</var>
1263       にします。</p>
1264
1265    <p>ローカルサーバのアドレスが <code>http://example.com/</code> だとします;
1266    すると</p>
1267
1268    <div class="example"><p><code>
1269      ProxyPassMatch ^(/.*\.gif)$ http://backend.example.com$1
1270    </code></p></div>
1271
1272    <p>は、ローカルの <code>http://example.com/foo/bar.gif</code> へのリクエストを
1273    内部的に <code>http://backend.example.com/foo/bar.gif</code> へのプロキシリクエスト
1274    に変換します。</p>
1275    <div class="note"><h3>注意</h3>
1276      <p>URL 引数は正規表現による置換の <em>前</em> でも (当然、置換後でも)、
1277      URL として解釈できなければいけません。これは使えるマッチに制約をもたらします。
1278      例えば、上記の例で</p>
1279      <div class="example"><p><code>
1280        ProxyPassMatch ^(/.*\.gif)$ http://backend.example.com:8000$1
1281      </code></p></div>
1282      <p>と書いたとします。これはサーバ起動時にシンタックスエラーを起こすでしょう。
1283      これはバグです (ASF bugzilla の PR 46665)。
1284      回避策としてマッチ判定を書き換える必要があります:</p>
1285      <div class="example"><p><code>
1286        ProxyPassMatch ^/(.*\.gif)$ http://backend.example.com:8000/$1
1287      </code></p></div>
1288    </div>
1289
1290    <p>サブディレクトリをリバースプロキシしたくないときに <code>!</code> は
1291    役に立ちます。</p>
1292
1293    <p><code class="directive"><a href="/mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code> セクションの中で使われた場合は、
1294    最初の引数は省略され、正規表現は <code class="directive"><a href="/mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code> から取得されます。</p>
1295
1296    <p>より柔軟なリバースプロキシの設定が必要な場合は、<code>[P]</code>
1297    フラグ付きの <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>
1298    ディレクティブを参照してください。</p>
1299
1300    <div class="warning">
1301      <h3>セキュリティの警告</h3>
1302      <p>ルールの対象 URL の生成には注意してください。あなたのサーバがプロキシ
1303        として振る舞う可能性のある URL に対して、クライアントへの影響があります。
1304        これによるセキュリティインパクトを考慮してください。URL のうち、スキームとホスト名
1305        の部分をそれぞれ確実に固定してください。そうでないと、クライアントに不当な影響を
1306        与えかねません。</p>
1307    </div>
1308
1309</div>
1310<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1311<div class="directive-section"><h2><a name="ProxyPassReverse" id="ProxyPassReverse">ProxyPassReverse</a> <a name="proxypassreverse" id="proxypassreverse">ディレクティブ</a></h2>
1312<table class="directive">
1313<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リバースプロキシされたサーバから送られた HTTP レスポンスヘッダの
1314URL を調整する</td></tr>
1315<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPassReverse [<var>path</var>] <var>url</var>
1316[<var>interpolate</var>]</code></td></tr>
1317<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ</td></tr>
1318<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1319<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1320</table>
1321    <p>このディレクティブは Apache に HTTP リダイレクト応答の
1322    <code>Location</code>, <code>Content-Location</code>, <code>URI</code>
1323    ヘッダの調整をさせます。これは、Apache がリバースプロキシ (ゲートウェイ)
1324    として使われているときに、リバースプロキシを通らないアクセスを防止するのに重要です。
1325    このようなアクセスは、リバースプロキシの背後にいるバックエンドサーバへの
1326    HTTP リダイレクトが原因で起きます。</p>
1327
1328    <p>上記の特別なリダイレクト用の HTTP レスポンスヘッダのみが書き換えられます。
1329    Apache は他のレスポンスヘッダを書き換えたり、HTML ページの中の URL 参照を
1330    書き換えたりすることはありません。つまり、リバースプロキシされた HTML ページ内に
1331    絶対 URL 参照が存在すると、プロキシを通さずにアクセスする可能性があります。
1332    HTML の中を見て、URL 参照を書き換えるモジュールに Nick Kew さんの <a href="http://apache.webthing.com/mod_proxy_html/">mod_proxy_html</a> があります。</p>
1333
1334    <p><var>path</var> はローカル仮想パスの名前です。<var>url</var> は
1335    リモートサーバの部分 URL です。これらは <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブと同様です。</p>
1336
1337    <p>例えば、ローカルサーバのアドレスが <code>http://example.com/</code>
1338    だとします。すると</p>
1339
1340    <div class="example"><p><code>
1341      ProxyPass         /mirror/foo/ http://backend.example.com/<br />
1342      ProxyPassReverse  /mirror/foo/ http://backend.example.com/<br />
1343      ProxyPassReverseCookieDomain  backend.example.com  public.example.com<br />
1344      ProxyPassReverseCookiePath  /  /mirror/foo/
1345    </code></p></div>
1346
1347    <p>という設定をすると、<code>http://example.com/mirror/foo/bar</code>
1348    へのローカルリクエストが <code>http://backend.example.com/bar</code>
1349    へのプロキシリクエストに内部で変換されるだけではありません
1350    (これは <code>ProxyPass</code> の機能です)。<code>backend.example.com</code>
1351    サーバが送るリダイレクトの面倒もみます。<code>http://backend.example.com/bar</code>
1352    が <code>http://backend.example.com/quux</code> にリダイレクトされたとき、
1353    Apache は HTTP リダイレクト応答をクライアントに送る前に、リダイレクト先を
1354    <code>http://example.com/mirror/foo/quux</code> に変更します。
1355    URL を構成するのに使われるホスト名は <code class="directive"><a href="/mod/core.html#usecanonicalname">UseCanonicalName</a></code> の設定に応じて選択されることに
1356    注意してください。</p>
1357
1358    <p><code class="directive">ProxyPassReverse</code> ディレクティブは
1359    対応する <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブと独立して利用できるので、
1360    <code class="module"><a href="/mod/mod_rewrite.html">mod_rewrite</a></code> のプロキシ通過機能
1361    (<code>RewriteRule ...  [P]</code>) と併せて使用することもできます。</p>
1362
1363    <p>オプショナルな <var>interpolate</var> キーワード (httpd 2.2.9 以降で利用可能)
1364    を <code class="directive">ProxyPassInterpolateEnv</code> ディレクティブと
1365    一緒に使うと、<var>${VARNAME}</var> 形式で、 ProxyPassReverse 設定に環境変数を
1366    使えるようになります。</p>
1367
1368    <p><code class="directive"><a href="/mod/core.html#location">&lt;Location&gt;</a></code> セクションの中で使われた場合は、
1369    最初の引数は省略され、ローカルディレクトリは <code class="directive"><a href="/mod/core.html#location">&lt;Location&gt;</a></code> から取得されます。
1370    同じことは <code class="directive"><a href="/mod/core.html#locationmatch">&lt;LocationMatch&gt;</a></code> セクション内でも起きますが、
1371    おそらく意図どおりに動きません。と言うのも、ProxyPassReverse
1372    が正規表現をそのまま文字列でパスとして解釈しようとするからです。
1373    もしこのような状況で必要なら、セクションの外で ProxyPassReverse
1374    を指定するか、あるいは別の <code class="directive"><a href="/mod/core.html#location">&lt;Location&gt;</a></code> セクション内で指定してください。</p>
1375
1376    <p>このディレクティブは <code class="directive"><a href="/mod/core.html#directory">&lt;Directory&gt;</a></code> や <code class="directive"><a href="/mod/core.html#files">&lt;Files&gt;</a></code> セクション内では使えません。</p>
1377
1378</div>
1379<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1380<div class="directive-section"><h2><a name="ProxyPassReverseCookieDomain" id="ProxyPassReverseCookieDomain">ProxyPassReverseCookieDomain</a> <a name="proxypassreversecookiedomain" id="proxypassreversecookiedomain">ディレクティブ</a></h2>
1381<table class="directive">
1382<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リバースプロキシサーバからの Set-Cookie ヘッダの Domain 文字列を
1383調整する</td></tr>
1384<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPassReverseCookieDomain <var>internal-domain</var>
1385<var>public-domain</var> [<var>interpolate</var>]</code></td></tr>
1386<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ</td></tr>
1387<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1388<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1389</table>
1390<p>使用法は基本的に
1391<code class="directive"><a href="#proxypassreverse">ProxyPassReverse</a></code> と同じですが、
1392ヘッダの URL の代わりに <code>Set-Cookie</code> ヘッダ内の
1393<code>domain</code> 文字列を書き換えます。</p>
1394
1395</div>
1396<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1397<div class="directive-section"><h2><a name="ProxyPassReverseCookiePath" id="ProxyPassReverseCookiePath">ProxyPassReverseCookiePath</a> <a name="proxypassreversecookiepath" id="proxypassreversecookiepath">ディレクティブ</a></h2>
1398<table class="directive">
1399<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>リバースプロキシサーバからの Set-Cookie ヘッダの Path 文字列を
1400調整する</td></tr>
1401<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPassReverseCookiePath <var>internal-path</var>
1402<var>public-path</var> [<var>interpolate</var>]</code></td></tr>
1403<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト, ディレクトリ</td></tr>
1404<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1405<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1406</table>
1407<p>
1408バックエンドの URL パスがリバースプロキシ上の公開パスにマップされる状況で、
1409<code class="directive"><a href="#proxypassreverse">ProxyPassReverse</a></code> といっしょに
1410役立ちます。このディレクティブは <code>Set-Cookie</code> ヘッダ内の
1411<code>path</code> 文字列を書き換えます。もしクッキーのパスが
1412<var>internal-path</var> に先頭マッチすれば、クッキーのパスは
1413<var>public-path</var> に置換されます。
1414</p><p>
1415<code class="directive"><a href="#proxypassreverse">ProxyPassReverse</a></code>
1416での例を使うと、ディレクティブ:</p>
1417    <div class="example"><p><code>
1418      ProxyPassReverseCookiePath  /  /mirror/foo/
1419    </code></p></div>
1420<p>は、バックエンドのパスが <code>/</code> (あるいは <code>/example</code>
1421あるいは実際のところなんでも) のクッキーを <code>/mirror/foo/</code>
1422に書き換えます。
1423</p>
1424
1425</div>
1426<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1427<div class="directive-section"><h2><a name="ProxyPreserveHost" id="ProxyPreserveHost">ProxyPreserveHost</a> <a name="proxypreservehost" id="proxypreservehost">ディレクティブ</a></h2>
1428<table class="directive">
1429<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシリクエストに、受け付けた Host HTTP ヘッダを使う</td></tr>
1430<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyPreserveHost On|Off</code></td></tr>
1431<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyPreserveHost Off</code></td></tr>
1432<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
1433<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1434<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1435<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.0.31 以降で使用可能</td></tr>
1436</table>
1437    <p>このオプションが有効になっている場合、<code class="directive">ProxyPass</code>
1438    で指定したホスト名の代わりに、受け付けたリクエストの Host: 行を
1439    プロキシ先のホストに送ります。</p>
1440
1441    <p>このオプションは通常は <code>Off</code> に設定してください。
1442    ほとんどの場合、これは大量の名前ベースのバーチャルホスティングを行なっていて、
1443    元々の Host ヘッダをバックエンドサーバが解釈する必要のあるときのような、
1444    特別な設定が必要な場合にのみ有用です。</p>
1445
1446</div>
1447<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1448<div class="directive-section"><h2><a name="ProxyReceiveBufferSize" id="ProxyReceiveBufferSize">ProxyReceiveBufferSize</a> <a name="proxyreceivebuffersize" id="proxyreceivebuffersize">ディレクティブ</a></h2>
1449<table class="directive">
1450<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされる HTTP と FTP 接続のためのネットワークバッファサイズ</td></tr>
1451<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyReceiveBufferSize <var>bytes</var></code></td></tr>
1452<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyReceiveBufferSize 0</code></td></tr>
1453<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
1454<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1455<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1456</table>
1457    <p><code class="directive">ProxyReceiveBufferSize</code> ディレクティブは
1458    スループットを上げるために明示的に (TCP/IP) ネットワークバッファのサイズを
1459    設定します。値は <code>512</code> 以上か、システムのデフォルトのバッファ
1460    サイズを意味する <code>0</code> でなければなりません。</p>
1461
1462    <div class="example"><h3>例</h3><p><code>
1463      ProxyReceiveBufferSize 2048
1464    </code></p></div>
1465
1466</div>
1467<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1468<div class="directive-section"><h2><a name="ProxyRemote" id="ProxyRemote">ProxyRemote</a> <a name="proxyremote" id="proxyremote">ディレクティブ</a></h2>
1469<table class="directive">
1470<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>特定のリクエストを扱う時に使われるリモートプロキシを指定する</td></tr>
1471<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyRemote <var>match</var> <var>remote-server</var></code></td></tr>
1472<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
1473<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1474<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1475</table>
1476    <p>このディレクティブはこのプロキシに対するリモートプロキシを定義します。
1477    <var>match</var> はリモートプロキシがサポートする URL スキーム、
1478    あるいはリモートプロキシを使うべき URL の一部分、あるいはすべての
1479    リクエストにリモートプロキシが使われることを示す <code>*</code> のどれかになります。
1480    <var>remote-server</var> はリモートプロキシの部分 URL です。構文:</p>
1481
1482    <div class="example"><p><code>
1483      <dfn>remote-server</dfn> =
1484          <var>scheme</var>://<var>hostname</var>[:<var>port</var>]
1485    </code></p></div>
1486
1487    <p><var>scheme</var> は実際上リモートサーバとの通信に使われるプロトコルを
1488    決定します。このモジュールでは <code>http</code> と <code>https</code>
1489    だけがサポートされています。
1490    <code>https</code> が使われると、HTTP CONNECT メソッドを使って
1491    リクエストはリモートプロキシに転送されます。</p>
1492
1493    <div class="example"><h3>例</h3><p><code>
1494      ProxyRemote http://goodguys.example.com/ http://mirrorguys.example.com:8000<br />
1495      ProxyRemote * http://cleverproxy.localdomain<br />
1496      ProxyRemote ftp http://ftpproxy.mydomain:8080
1497    </code></p></div>
1498
1499    <p>最後の例では、プロキシは FTP リクエストを別の HTTP リクエストで包んで
1500    そのようなリクエストを扱える別のプロキシに転送します。</p>
1501
1502    <p>このオプションはリバースプロキシの設定もサポートします。
1503    バックエンドウェブサーバが別のフォワードプロキシの後ろに隠されている場合でも
1504    バックエンドウェブサーバをバーチャルホストの URL 空間に入れることが
1505    できます。</p>
1506
1507</div>
1508<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1509<div class="directive-section"><h2><a name="ProxyRemoteMatch" id="ProxyRemoteMatch">ProxyRemoteMatch</a> <a name="proxyremotematch" id="proxyremotematch">ディレクティブ</a></h2>
1510<table class="directive">
1511<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>正規表現でのマッチによるリクエストを扱うリモートプロキシの指定</td></tr>
1512<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyRemoteMatch <var>regex</var> <var>remote-server</var></code></td></tr>
1513<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
1514<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1515<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1516</table>
1517    <p><code class="directive">ProxyRemoteMatch</code> は最初の引数がリクエストされた
1518    URL にマッチする<a class="glossarylink" href="/glossary.html#regex" title="用語集を参照">正規表現</a>であることを除けば <code class="directive"><a href="#proxyremote">ProxyRemote</a></code> ディレクティブと同じです。</p>
1519
1520</div>
1521<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1522<div class="directive-section"><h2><a name="ProxyRequests" id="ProxyRequests">ProxyRequests</a> <a name="proxyrequests" id="proxyrequests">ディレクティブ</a></h2>
1523<table class="directive">
1524<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>フォワード (標準の) プロキシリクエストを有効にする</td></tr>
1525<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyRequests On|Off</code></td></tr>
1526<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyRequests Off</code></td></tr>
1527<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
1528<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1529<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1530</table>
1531    <p>これは Apache のフォワードプロキシサーバとしての動作を
1532    有効もしくは無効にします。(ProxyRequests を <code>Off</code> に
1533    設定しても、<code class="directive"><a href="#proxypass">ProxyPass</a></code>
1534    の設定は無効になりません。)</p>
1535
1536    <p>通常のリバースプロキシ/ゲートウェイの設定では、このオプションは <code>Off</code>
1537    に設定してください。</p>
1538
1539    <p>HTTP や FTP サイトへのプロキシの機能を有効にしたい場合は、
1540    <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> が
1541    サーバに組み込まれていなければなりません。</p>
1542
1543    <div class="warning"><h3>警告</h3>
1544      <p><a href="#access">サーバを安全にする</a>まで <code class="directive"><a href="#proxyrequests">ProxyRequests</a></code> は有効にしないでください。
1545      オープンプロキシサーバはあなた自身のネットワークにとっても、
1546      インターネット全体にとっても危険です。</p>
1547    </div>
1548
1549<h3>参照</h3>
1550<ul>
1551<li><a href="#forwardreverse">フォワードプロキシとリバースプロキシ/ゲートウェイ</a></li>
1552</ul>
1553</div>
1554<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1555<div class="directive-section"><h2><a name="ProxySet" id="ProxySet">ProxySet</a> <a name="proxyset" id="proxyset">ディレクティブ</a></h2>
1556<table class="directive">
1557<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシのバランサやメンバのパラメータをセット</td></tr>
1558<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>
1559<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>ディレクトリ</td></tr>
1560<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1561<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1562<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>ProxySet は Apache 2.2 以降でのみ使用可能</td></tr>
1563</table>
1564    <p>このディレクティブは、通常は <code class="directive"><a href="#proxypass">ProxyPass</a></code>
1565    ディレクティブで行うプロキシのバランサやワーカーに対するパラメータを
1566    別の方法で設定できるようにします。
1567    <code>&lt;Proxy <var>balancer url|worker url</var>&gt;</code>
1568    ディレクティブのコンテナ内で使う場合、<var>url</var> 引数は必要ありません。
1569    副次的に、それぞれのバランサやワーカーが生成されます。
1570    <code class="directive"><a href="#proxypass">ProxyPass</a></code> ディレクティブではなく、
1571    <code class="directive"><a href="/mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> でリバースプロキシ
1572    設定をする時にこのディレクティブは有用です。</p>
1573
1574    <div class="example"><p><code>
1575      &lt;Proxy balancer://hotcluster&gt;<br />
1576      <span class="indent">
1577        BalancerMember http://www2.example.com:8009 loadfactor=1<br />
1578        BalancerMember http://www3.example.com:8009 loadfactor=2<br />
1579        ProxySet lbmethod=bytraffic<br />
1580      </span>
1581      &lt;/Proxy&gt;
1582    </code></p></div>
1583
1584    <div class="example"><p><code>
1585      &lt;Proxy http://backend>;<br />
1586      <span class="indent">
1587        ProxySet keepalive=On<br />
1588      </span>
1589      &lt;/Proxy&gt;
1590    </code></p></div>
1591
1592    <div class="example"><p><code>
1593        ProxySet balancer://foo lbmethod=bytraffic timeout=15
1594    </code></p></div>
1595
1596    <div class="example"><p><code>
1597        ProxySet ajp://backend:7001 timeout=15
1598    </code></p></div>
1599
1600   <div class="warning"><h3>警告</h3>
1601      <p>設定対象がバランサかワーカーかで、パラメータ名が同じでも意味が異なる可能性
1602      に注意してください。例えば、タイムアウトに関連する上記ふたつの例がそうです。</p>
1603   </div>
1604
1605
1606</div>
1607<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1608<div class="directive-section"><h2><a name="ProxyStatus" id="ProxyStatus">ProxyStatus</a> <a name="proxystatus" id="proxystatus">ディレクティブ</a></h2>
1609<table class="directive">
1610<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>mod_status でプロキシのロードバランサの状態を表示</td></tr>
1611<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyStatus Off|On|Full</code></td></tr>
1612<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyStatus Off</code></td></tr>
1613<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
1614<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1615<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1616<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.2 以降で使用可能</td></tr>
1617</table>
1618    <p>このディレクティブは <code class="module"><a href="/mod/mod_status.html">mod_status</a></code> によるサーバステータスのページ
1619    にプロキシのロードバランサの状態を表示するか否かを決めます。</p>
1620    <div class="note"><h3>注意</h3>
1621      <p><strong>Full</strong> は <strong>On</strong> の別名です。</p>
1622    </div>
1623
1624
1625</div>
1626<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1627<div class="directive-section"><h2><a name="ProxyTimeout" id="ProxyTimeout">ProxyTimeout</a> <a name="proxytimeout" id="proxytimeout">ディレクティブ</a></h2>
1628<table class="directive">
1629<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされたリクエストのネットワークタイムアウト</td></tr>
1630<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyTimeout <var>seconds</var></code></td></tr>
1631<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>
1632<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
1633<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1634<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1635<tr><th><a href="directive-dict.html#Compatibility">互換性:</a></th><td>Apache 2.0.31 以降で使用可能</td></tr>
1636</table>
1637    <p>このディレクティブはユーザがプロキシリクエストのタイムアウトを
1638    指定できるようにします。これはハングしてしまうほど遅い、もしくは挙動の
1639    怪しいサーバがあり、サーバがデータを返すまでひたすら待ち続けるよりも
1640    タイムアウトを返してより緩やかに<span class="transnote">(<em>訳注:</em> graceful に)</span>
1641    失敗させたい場合に役に立ちます。</p>
1642
1643</div>
1644<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
1645<div class="directive-section"><h2><a name="ProxyVia" id="ProxyVia">ProxyVia</a> <a name="proxyvia" id="proxyvia">ディレクティブ</a></h2>
1646<table class="directive">
1647<tr><th><a href="directive-dict.html#Description">説明:</a></th><td>プロキシされたリクエストの <code>Via</code> HTTP レスポンスヘッダ
1648により提供される情報</td></tr>
1649<tr><th><a href="directive-dict.html#Syntax">構文:</a></th><td><code>ProxyVia On|Off|Full|Block</code></td></tr>
1650<tr><th><a href="directive-dict.html#Default">デフォルト:</a></th><td><code>ProxyVia Off</code></td></tr>
1651<tr><th><a href="directive-dict.html#Context">コンテキスト:</a></th><td>サーバ設定ファイル, バーチャルホスト</td></tr>
1652<tr><th><a href="directive-dict.html#Status">ステータス:</a></th><td>Extension</td></tr>
1653<tr><th><a href="directive-dict.html#Module">モジュール:</a></th><td>mod_proxy</td></tr>
1654</table>
1655    <p>このディレクティブはプロキシの <code>Via:</code> HTTP ヘッダの使用を
1656    制御します。想定されている使い方は、プロキシサーバがいくつも繋がっているときに
1657    プロキシリクエストの流れを制御することです。<code>Via:</code> ヘッダ行の
1658    説明は <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> (HTTP/1.1)
1659    の 14.45 節を読んでください。</p>
1660
1661    <ul>
1662    <li>デフォルトの <code>Off</code> に設定されていると、特別な処理は
1663    行なわれません。リクエストやリプライに <code>Via:</code> ヘッダがあれば、
1664    変更されずにそのまま渡します。</li>
1665
1666    <li><code>On</code> に設定されていれば、各リクエストとリプライに
1667    <code>Via:</code> 行が追加されます。</li>
1668
1669    <li><code>Full</code> に設定されていれば、<code>Via:</code> ヘッダは
1670    コメント部分に Apache サーバのバージョンも含むようになります。</li>
1671
1672    <li><code>Block</code> に設定されていれば、すべてのプロキシリクエストから
1673    <code>Via:</code> ヘッダが取り除かれます。新たに <code>Via:</code> が
1674    生成されることはありません。</li>
1675    </ul>
1676
1677</div>
1678</div>
1679<div class="bottomlang">
1680<p><span>翻訳済み言語: </span><a href="/en/mod/mod_proxy.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
1681<a href="/fr/mod/mod_proxy.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
1682<a href="/ja/mod/mod_proxy.html" title="Japanese">&nbsp;ja&nbsp;</a></p>
1683</div><div class="top"><a href="#page-header"><img src="/images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">コメント</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
1684<script type="text/javascript"><!--//--><![CDATA[//><!--
1685var comments_shortname = 'httpd';
1686var comments_identifier = 'http://httpd.apache.org/docs/2.2/mod/mod_proxy.html';
1687(function(w, d) {
1688    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
1689        d.write('<div id="comments_thread"><\/div>');
1690        var s = d.createElement('script');
1691        s.type = 'text/javascript';
1692        s.async = true;
1693        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
1694        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
1695    }
1696    else { 
1697        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
1698    }
1699})(window, document);
1700//--><!]]></script></div><div id="footer">
1701<p class="apache">Copyright 2013 The Apache Software Foundation.<br />この文書は <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> のライセンスで提供されています。.</p>
1702<p class="menu"><a href="/mod/">モジュール</a> | <a href="/mod/directives.html">ディレクティブ</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="/glossary.html">用語</a> | <a href="/sitemap.html">サイトマップ</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
1703if (typeof(prettyPrint) !== 'undefined') {
1704    prettyPrint();
1705}
1706//--><!]]></script>
1707</body></html>