IBM HTTP Server のヘルプ: Proxy ディレクティブ

Proxy ディレクティブ

 

ProxyRequests

これによって、Apache をプロキシー・サーバーとして機能できるか、あるいは機能できないようにします。 ProxyRequests を「オフ」に設定しても、 ProxyPass ディレクティブの使用は使用不可にはなりません。

ProxyRemote

これは、このプロキシーに対するリモート・プロキシーを定義します。<match> は、リモート・サーバーがサポートする URL 体系の名前であるか、あるいはリモート・サーバーを使用する必要がある特定の URL であるか、あるいはすべての要求でサーバーに連絡する必要があることを示すための '*' のいずれかです。 <remote-server> はリモート・サーバーの部分 URLです。構文:
  <remote-server> = <protocol>://<hostname>[:port]
<protocol> はリモート・サーバーとの通信に使用する必要があるプロトコルです。このモジュールがサポートするのは "http" だけです。

例 :

  ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
  ProxyRemote * http://cleversite.com
  ProxyRemote ftp http://ftpproxy.mydomain.com:8080
最後の例では、このプロキシーは、現在、別の HTTP プロキシー要求にカプセル化した FTP 要求を、それらを処理できる別のプロキシーに転送します。

ProxyPass

このディレクティブによって、リモート・サーバーをローカル・サーバーのスペースにマップすることができます。 すなわち、ローカル・サーバーは従来のようにプロキシーとして作動しませんが、リモート・サーバーのミラーとして現れます。 <path> はローカル仮想パスの名前です。<url> はリモート・サーバーの部分 URL です。

ローカル・サーバーが http://wibble.org/ のアドレスをもっている場合には、

   ProxyPass /mirror/foo/ http://foo.com/
によって、 <http://wibble.org/mirror/foo/bar> のローカル要求を、 <http://foo.com/bar> へのプロキシー要求に内部的に変換することになります。

ProxyPassReverse

このディレクティブによって、Apache は HTTP リダイレクト応答で Location ヘッダーの URL を調整することができます。たとえば、HTTP はリバース・プロキシーを後方にとどまらせるバックエンド・サーバー上でリダイレクトするために、リバース・プロキシーをう回しないようにするために Apache をリバース・プロキシーとして使用する時にこれが必要です。

<Path> はローカル仮想パスの名前です。
<url> はリモート・サーバーの部分 URL です - 同様に、これらは ProxyPass ディレクティブでも使用されます。

例 :
ローカル・サーバーが http://wibble.org/ のアドレスをもっている場合には、

   ProxyPass         /mirror/foo/ http://foo.com/
   ProxyPassReverse  /mirror/foo/ http://foo.com/
によって、 <http://wibble.org/mirror/foo/bar> のローカル要求を、 <http://foo.com/bar> へのプロキシー要求に内部的に変換することになります (機能性 ProxyPass はここで提供します)。 また、これは、サーバー foo.com が送信するもののリダイレクトも引き受けます。http://foo.com/barhttp://foo.com/quux にリダイレクトされる時には、Apache は HTTP リダイレクト応答をクライアントに送信する前に、これを http://wibble.org/mirror/foo/quux に調整します。

また、この ProxyPassReverse ディレクティブは対応する ProxyPass ディレクティブに依存していないために、 mod_rewrite からプロキシー・パススルー機能 ("RewriteRule ... [P]") と結合して使用できることにも注意してください。

AllowCONNECT

AllowCONNECT ディレクティブは、プロキシー CONNECT 方式を接続することがあるポート番号のリストを指定します。現在のブラウザーは、https 接続が要求されて、http 上のトンネリングを行なうプロキシーが有効な時にこの方式を使用します。
デフォルトによって、デフォルトの https ポート (443) およびデフォルトの snews ポート (563) が使用可能になります。 AllowCONNECT ディレクティブを使用して、このデフォルトを上書きして、リストされたポートへの接続だけが使用可能になります。

ProxyBlock

ProxyBlock ディレクティブはワード、ホストまたはドメイン (あるいはこれらのすべて) のリストをスペースで区切って指定します。その名前に一致するワード、ホスト、またはドメインが含まれるサイトに対する HTTP、HTTPS、および FTP 文書要求は、プロキシー・サーバーによって ブロック化 されます。また、プロキシー・モジュールは始動中にホスト名となることがあるリスト項目の IPアドレスを判別して、突き合わせテストのためにこれらをキャッシュに入れようと試みます。 例 :
  ProxyBlock joes-garage.com some-host.co.uk rocky.wotsamattau.edu
'rocky.wotsamattau.edu' は、IP アドレスによって参照される場合にも突き合わせされます。

また、'wotsamattau' は 'wotsamattau.edu' との突き合わせでも十分であることにも注意してください。

また、

ProxyBlock *
は、すべてのサイトへの接続をブロック化することにも注意してください。

ProxyReceiveBufferSize

ProxyReceiveBufferSize ディレクティブは、増大するスループットのために、発信 HTTP および FTP接続の明示ネットワーク・バッファー・サイズを指定します。これは 512 より大きいか、あるいはシステムのデフォルト・バッファー・サイズの使用を指示するために 0 に設定する必要があります。

例 :

  ProxyReceiveBufferSize 2048

NoProxy

このディレクティブを使用できるのは、イントラネット内の Apache プロキシー・サーバーの場合だけです。 NoProxy ディレクティブはサブネット、IP アドレス、ホストまたはドメイン (あるいはこれらのすべて) のリストをスペースで区切って指定します。これらの1つまたはそれ以上と一致するホストへの要求は、構成された ProxyRemoteプロキシー・サーバーに転送しないで常に直接実行されます。

例 :

  ProxyRemote  *  http://firewall.mycompany.com:81
  NoProxy         .mycompany.com 192.168.112.0/21 
NoProxy ディレクティブに対する引き数は、次のタイプ・リストのいずれかです。
Domain
Domain は部分的に修飾された DNS ドメイン名であり、ピリオドが先行しています。 これは、同じ DNS ドメインまたはゾーンに論理的に従属するホストのリストを表します (たとえば、ホスト名のサフィックスはすべて Domain で終了している)。
例: .com .apache.org.
DomainHostnameとを区別する (構文および意味の両方の観点; DNS ドメインは DNS A レコードをもつこともできる !) には、Domain は常に先行ピリオド付きで書き込まれます。
注: ドメイン名の比較は大文字小文字は考慮されずに行なわれ、Domain は常に DNS ツリーのルート中に固定されているとみなされるので、2つのドメイン .MyDomain.comおよび .mydomain.com. (末尾のピリオドに注意) は等しいものとみなされます。 considered equal. ドメイン比較には DNS 検索は関係しないので、これはサブネット比較よりも効率的になります。
SubNet
SubNet は数字 (ドット 10 進表記) 形式の部分修飾 IP アドレスであり、任意にスラッシュおよびネットマスクを後に続けて、有効ビット数として SubNet に指定します。これを使用して、共通ネットワーク・インターフェースを介して到達できるホストのサブネットを表します。明示的なネットマスクがない場合には、省略された (またはゼロの値の) 後書き数字がそのマスクを指定します。(この場合には、ネットマスクは 8 ビット幅の倍数にしかできません。)
例:
192.168 または 192.168.0.0
サブネット 192.168.0.0 で、16 の有効ビットの暗黙ネットマスク付き (ネットマスク・フォーム 255.255.0.0 で使用されることがある)
192.168.112.0/21
サブネット 192.168.112.0/21 で、21 の有効ビットの暗黙ネットマスク付き (また、フォーム 255.255.248.0 でも使用される)
退化の場合には、SubNet 32 の有効ビット付きは IPAddr と等価であり、SubNet ゼロの有効ビット付き (たとえば、0.0.0.0/0) は定数 _Default_ と同じで、IP アドレスを突き合わせます。
IPAddr
IPAddr は数字 (ドット 10 進表記) 形式の完全修飾の IP アドレスを表します。通常、このアドレスはホストを表しますが、そのアドレスで接続される DNS ドメイン名がなければならないというわけではありません。
例: 192.168.123.7
注: IPAddr は DNS システムによって解決する必要がないので、apache のパフォーマンスが改善される結果となります。

また、次も参照してください。 DNS Issues

Hostname
Hostname は完全修飾 DNS ドメイン名であり、これは DNS ドメイン名サーバーを介して 1つまたは複数の IPAddrs に解決することができます。 これは論理ホストを表し ( Domain と対比して、上記を参照のこと)、少なくとも1つの IPAddr (あるいは、多くの場合、異なった IPAddrをもつホストのリストに) に解決できるものでなければなりません。
例: prep.ai.mit.edu www.apache.org.
注: 多くの場合、DNS の検索を回避できるので、Hostname の代わりに IPAddr を指定するほうがより効率的です。ネーム・サーバーへの接続に遅い PPP リンクを使用する時には、Apache での名前の解決はかなりの時間がかかることがあります。
注: Hostname の比較は大文字小文字は考慮されずに行なわれ、Hostname は常に DNS ツリーのルート中に固定されているとみなされるので、2つのホスト WWW.MyDomain.com および www.mydomain.com. (末尾のピリオドに注意) は等しいものとみなされます。

また、次も参照してください。 DNS Issues

ProxyDomain

このディレクティブを使用できるのは、イントラネット内の Apache プロキシー・サーバーの場合だけです。 ProxyDomain ディレクティブは、その apache プロキシー・サーバーが属しているデフォルト・ドメインを指定します。ドメイン名なしのホストへの要求が検出された場合には、構成済みの Domain を同じホストに付加したリダイレクト応答が生成されます。

例 :

  ProxyRemote  *  http://firewall.mycompany.com:81
  NoProxy         .mycompany.com 192.168.112.0/21 
  ProxyDomain     .mycompany.com

ProxyVia

このディレクティブは、プロキシーによる Via: HTTP ヘッダーの使用を制御します。この使用目的は、プロキシー・サーバーのチェーンにそってプロキシー要求の流れを制御することです。 Via: ヘッダー行の説明については、RFC2068 (HTTP/1.1) を参照してください。

CacheForceCompletion

キャッシュに入れた http 転送を取り消した場合、指定されたパーセント以上のものがすでに転送されている場合には、プロキシー・モジュールはキャッシュへの転送を完了します。

これはパーセントであり、1 - 100 の数値であるか、あるいはデフォルトを使用するには 0 でなければなりません。100では、転送が完了できる場合にかぎり文書をキャッシュに入れることになります。60 - 90 の間の数字を推奨します。

CacheRoot

ディレクトリーの名前を設定して、キャッシュ・ファイルを入れます。これは、httpd サーバーによって書き込み可能でなければなりません。(User ディレクティブを参照してください。)
CacheRoot を設定すると、プロキシー・キャッシュが使用可能になります。ProxyRequestsOnに設定されているが、キャッシュが使用可能でない場合には、 CacheRoot の定義なしで、プロキシーの機能を使用することができます。

CacheSize

キャッシュに必要なスペース使用量を KB (1024 バイト単位) で設定します。この使用量がこの設定以上に増大することがあるが、この使用量がこの設定以下になるまで、ガーベッジ・コレクションがファイルを削除します。

予測されるプロキシー通信量ボリュームおよび CacheGcIntervalによっては、 使用可能なスペースの少なくとも 20 - 40 % 以下の値を使用してください。

CacheGcInterval

このキャッシュは <time> 時間ごとに検査し、スペース使用量が CacheSize で設定した容量より大きくなった場合に、ファイルを削除します。 <time> は浮動値を受け入れるので、CacheGcInterval 1.5を使用して、キャッシュを 90 分ごとに検査することができる、ことに注意してください。(設定なしの場合には、ガーベッジ・コレクションは行われず、キャッシュは無制限に増大します。) また、CacheGcInterval を大きくすると、ガーベッジ・コレクションの間のキャッシュのために、構成された CacheSize を超えたスペースが余分に必要となります。

CacheMaxExpire

キャッシュ可能な HTTP 文書は、起点サーバーの検査なしで多くても <time> 時間保存されます。したがって、文書は多くても <time> 時間で最新ではなくなります。文書とともに有効期間が指定されている場合でも、この制限が強制されます。

CacheLastModifiedFactor

起点 HTTP Server がその文書の有効期間を指定しなかった場合には、次の公式を使用して予測されます。

  expiry-period = time-since-last-modification * <factor>
たとえば、その文書が 10 時間前に最後に変更され、<factor> が 0.1 の場合には、その有効期間は 10*0.1 = 1 時間に設定されます。

有効期間が CacheMaxExpire によって設定されたものより長い場合には、後者が優先されます。

CacheDirLevels

CacheDirLevels はキャッシュ中のサブディレクトリーのレベルの数を設定します。キャッシュ・データはこのディレクトリー・レベルの数で CacheRoot 下に保管されます。

CacheDirLength

CacheDirLength は、プロキシー・キャッシュ・サブディレクトリー名の文字数を設定します。

CacheDefaultExpire

有効時間をサポートしていないプロトコルを介して文書を取り出す場合には、有効時間として <time> 時間を使用してください。CacheMaxExpire では、この設定は上書き されません

NoCache

NoCache ディレクティブはワード、ホストまたはドメイン (あるいはこれらのすべて) のリストをスペースで区切って指定します。一致するワード、ホスト、またはドメインからの HTTP および非パスワード FTP 文書は、プロキシー・サーバーによってキャッシュに入れられ ません。また、プロキシー・モジュールは始動中にホスト名となることがあるリスト項目の IPアドレスを判別して、突き合わせテストのためにこれらをキャッシュに入れようと試みます。 例 :

  NoCache joes-garage.com some-host.co.uk bullwinkle.wotsamattau.edu
'bullwinkle.wotsamattau.edu' は、IP アドレスによって参照される場合にも突き合わせされます。

また、'wotsamattau' は 'wotsamattau.edu' との突き合わせでも十分であることにも注意してください。

また、

NoCache *
はキャッシュを完全に使用不可にすることに注意してください。