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="<-" alt="<-" src="/images/left.gif" /></a></div> 22<div id="path"> 23<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP サーバ</a> > <a href="http://httpd.apache.org/docs/">ドキュメンテーション</a> > <a href="../">バージョン 2.2</a> > <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"> en </a> | 28<a href="/fr/mod/mod_proxy.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 29<a href="/ja/mod/mod_proxy.html" title="Japanese"> ja </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"><Proxy></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"><ProxyMatch></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 <Proxy *><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 </Proxy> 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 <Proxy http://backend.example.com><br /> 235 <span class="indent"> 236 ProxySet connectiontimeout=5 timeout=30 237 </span> 238 </Proxy> 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"><Proxy></a></code> コンテナの中に 317 ディレクティブを書くことで制御できます:</p> 318 319 <div class="example"><p><code> 320 <Proxy *><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 </Proxy> 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 <Location /buggyappserver/><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 </Location> 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><Proxy <var>balancer://</var>...></code> ディレクティブのコンテナ 485 内で使われることが多く、<code class="directive"><a href="#proxypass">ProxyPass</a></code> 486 ディレクティブと共通のキーバリューペアのパラメータを取ります。</p> 487 <p><code><Proxy <var>balancer://</var>...></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"><Proxy></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><Proxy <var>wildcard-url</var>> ...</Proxy></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"><Proxy></code> セクション中の 632 ディレクティブはマッチするプロキシされるコンテンツにのみ適用されます。 633 シェル形式のワイルドカードが使えます。</p> 634 635 <p>例えば、次の設定は <code>yournetwork.example.com</code> の 636 ホストにのみプロキシサーバを経由したアクセスを許可します:</p> 637 638 <div class="example"><p><code> 639 <Proxy *><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 </Proxy> 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 <Proxy http://example.com/foo/*><br /> 654 <span class="indent"> 655 SetOutputFilter INCLUDES<br /> 656 </span> 657 </Proxy> 658 </code></p></div> 659 660 661<h3>参照</h3> 662<ul> 663<li><code class="directive"><a href="#proxymatch"><ProxyMatch></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"><ProxyMatch></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><ProxyMatch <var>regex</var>> ...</ProxyMatch></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"><ProxyMatch></code> は URL のマッチに 820 <a class="glossarylink" href="/glossary.html#regex" title="用語集を参照">正規表現</a> を用いることを除けば 821 <code class="directive"><Proxy></code> ディレクティブと同じです。</p> 822 823<h3>参照</h3> 824<ul> 825<li><code class="directive"><a href="#proxy"><Proxy></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 <Proxy balancer://mycluster><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 </Proxy> 1174 </code></p></div> 1175 1176 <p>ホットスタンバイの設定例です。他のメンバーが利用できない場合のみ 1177 使われます。</p> 1178 <div class="example"><p><code> 1179 ProxyPass / balancer://hotcluster/ <br /> 1180 <Proxy balancer://hotcluster><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 </Proxy> 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"><Location></a></code> セクションの中で使われた場合、最初の引数は 1207 省略され、ローカルディレクトリは <code class="directive"><a href="/mod/core.html#location"><Location></a></code> から取得されます。 1208 同じことは <code class="directive"><a href="/mod/core.html#locationmatch"><LocationMatch></a></code> 1209 セクション内でも起きます。しかし、ProxyPass は正規表現を解釈しないので、 1210 この状況では代わりに <code class="directive">ProxyPassMatch</code> を使う必要があります。</p> 1211 1212 <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> 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"><LocationMatch></a></code> セクションの中で使われた場合は、 1294 最初の引数は省略され、正規表現は <code class="directive"><a href="/mod/core.html#locationmatch"><LocationMatch></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"><Location></a></code> セクションの中で使われた場合は、 1369 最初の引数は省略され、ローカルディレクトリは <code class="directive"><a href="/mod/core.html#location"><Location></a></code> から取得されます。 1370 同じことは <code class="directive"><a href="/mod/core.html#locationmatch"><LocationMatch></a></code> セクション内でも起きますが、 1371 おそらく意図どおりに動きません。と言うのも、ProxyPassReverse 1372 が正規表現をそのまま文字列でパスとして解釈しようとするからです。 1373 もしこのような状況で必要なら、セクションの外で ProxyPassReverse 1374 を指定するか、あるいは別の <code class="directive"><a href="/mod/core.html#location"><Location></a></code> セクション内で指定してください。</p> 1375 1376 <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> 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><Proxy <var>balancer url|worker url</var>></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 <Proxy balancer://hotcluster><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 </Proxy> 1582 </code></p></div> 1583 1584 <div class="example"><p><code> 1585 <Proxy http://backend><br /> 1586 <span class="indent"> 1587 ProxySet keepalive=On<br /> 1588 </span> 1589 </Proxy> 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"> en </a> | 1681<a href="/fr/mod/mod_proxy.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 1682<a href="/ja/mod/mod_proxy.html" title="Japanese"> ja </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&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>