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