[an error occurred while processing this directive]
[APACHE DOCUMENTATION]

Apache HTTP Server Version 1.3

mod_proxyモジュール

このモジュールは Apache 1.1.x の mod_proxy.c ファイルか、Apache 1.2 の modules/proxy サブディレクトリに含まれ、デフォルトではコンパイルされていません。プロキシーサーバをキャッシュする HTTP 1.0 のためです。Apache 1.1 とそれ以降でのみ利用できます。普通のコンフィギュレーションの疑問は 命令の説明の後 にあります。

Note:

このモジュールは Apache 1.1.x では実験的なものです。Apache 1.2 のように、mod_proxy の安定性は大きく改良されています。

概要

このモジュールは、Apache の proxy/cache を実行します。FTPCONNECT (for SSL)、HTTP/0.9HTTP/1.0 のプロキシー機能を実行できます。モジュールは、これらと他のプロトコルの代わりに、他のプロキシーモジュールへ接続するためにコンフィギュアされます。

命令


ProxyRequests

Syntax: ProxyRequests on/off
Default: ProxyRequests Off
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: ProxyRequests is only available in Apache 1.1 and later.

これは、Apache にプロキシーサーバとして機能させるかどうかを決めます。ProxyRequests を 'off' に設定すると、ProxyPass 命令の使用を無効にはしません。


ProxyRemote

Syntax: ProxyRemote <match> <remote-server>
Default: None
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: ProxyRemote is only available in Apache 1.1 and later.

これはこのプロキシーに対するリモートのプロキシーを定義します。<match> はリモートのサーバがサポートする URL の一覧名か、リモートのサーバが使われるべき部分的な URL 、または、サーバが全てのリクエストにコンタクトされることを示す '*' のどれかです。 <remote-server> はリモートのサーバにとっては部分的な URL です。Syntax:

  <remote-server> = <protocol>://<hostname>[:port]
<protocol> はリモートのサーバと通信するために使われるものです; "http" だけはこのモジュールによってサポートされます。

Example:

  ProxyRemote http://goodguys.com/ http://mirrorguys.com:8000
  ProxyRemote * http://cleversite.com
  ProxyRemote ftp http://ftpproxy.mydomain.com:8080
最後の例では、プロキシーは FTP リクエスト、要約された、まだ他の HTTP プロキシーリクエストを、それらをハンドルできる他のプロキシーに対して、転送するでしょう。

ProxyPass

Syntax: ProxyPass <path> <url>
Default: None
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: ProxyPass is only available in Apache 1.1 and later.

この命令は、ローカルサーバの領域にマップされるリモートサーバを許可します; ローカルサーバは、従来の感覚ではプロキシーとしては作動しませんが、リモートサーバのミラーとして現れます。<path> はローカルの仮想パスの名前です; <url> はリモートサーバの部分的な URL です。

ローカルサーバがアドレス http://wibble.org/ を持っていると仮定すると;

   ProxyPass /mirror/foo http://foo.com
<http://wibble.org/mirror/foo/bar> のためのローカルリクエストに内部的な <http://foo.com/bar> に対するプロキシーリクエストにコンバートさせます。

ProxyBlock

Syntax: ProxyBlock <word/host/domain list>
Default: None
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: ProxyBlock is only available in Apache 1.2 and later.

ProxyBlock 命令はスペースによって区切られたホストやドメインの文字リストをします。一致する名前のホストやドメインに対する HTTP、HTTPS、FTP のドキュメントリクエストは、プロキシーサーバによってブロックされます。プロキシーモジュールは、起動時にホスト名になるかもしれない、リストにある IP アドレスも決定しようとします。 例:

  ProxyBlock joes_garage.com some_host.co.uk rocky.wotsamattau.edu
'rocky.wotsamattau.edu' は、もし IP アドレスによって参照されていれば一致します。

'wotsamattau' は 'wotsamattau.edu' と一致するのに十分であることに注意してください。

また、

ProxyBlock *
は全てのサイトに対して接続をブロックします。

NoProxy

Syntax: NoProxy { <Domain> | <SubNet> | <IpAddr> | <Hostname> }
Default: None
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: NoProxy is only available in Apache 1.3 and later.

この命令はイントラネットの Apache プロキシーサーバでのみ有効です。NoProxy 命令はスペースによって区切られたサブネット、IP アドレス、ホストまたはドメインのリストを指定します。コンフィギュアされた ProxyRemote プロキシーサーバに転送しないで、これらの内の一つかそれ以上、一致するホストへのリクエストが常に出されます。

例:

  ProxyRemote  *  http://firewall.mycompany.com:81
  NoProxy         .mycompany.com 192.168.112.0/21 
NoProxy 命令に対する引数は、以下のタイプリストのうちの一つです:
Domain
Domain は部分的に権限を与えられた DNS ドメイン名で、ピリオドが先に付きます。必然的に同じ DNS ドメインやゾーンに沿ったホストのリストを表しています(すなわち、ホスト名の後は全て Domain で終わっています)。
例: .com .apache.org.
Hostname から Domain を区別して (構文"syntactically"と意味"semantically"の両方で; DNS ドメインは DNS A レコードも持っています!)、Domain は常に先行するピリオドで書かれています。
注:ドメイン名の比較は、大文字と小文字の区別とは関係なく行なわれ、Domain は常に DNS ツリーのルートに固定されていると仮定されます。それゆえ二つのドメイン .MyDomain.com.mydomain.com. は、同等のものだと判断されます。ドメインの比較は DNS lookup を必要としないので、サブネットの比較よりも効果的です。
SubNet
SubNet は、スラッシュとネットマスクによって任意に続く数値(4つの点を打たれて)の形式のインターネットアドレスを部分的に制限して、SubNet にある有意なビット数として特定されます。これは、一般的なネットワークインターフェースに到達できるホストのサブネットを表すために使われます。明白なネットマスクがないと、省略された(または、0)の後続の数はマスクを指定します。(この場合、ネットマスクは 8 ビット幅の倍数だけです)
例:
192.168 または 192.168.0.0
有効ビット 16 のネットマスクを意味するサブネット 192.168.0.0 (時々、ネットマスクフォーム 255.255.0.0 で使われます)
192.168.112.0/21
有効ビット 21 のネットマスクのサブネット 192.168.112.0/21 (255.255.248.0 のフォームでも使われます)
有効ビット 32 の SubNetIPAddr と同等で、有効ビット 0 のSubNet (e.g., 0.0.0.0/0) は、IP アドレスと一致する一定の _Default_ と同じものです。
IPAddr
IPAddr は、完全に制限された数字(4つの点を打たれて)の形式のインターネットアドレスを表します。普通、このアドレスはホストを示しますが、必ずしもアドレスで接続された DNS ドメイン名である必要はありません。
例: 192.168.123.7
注: IPAddr は DNS システムによってリゾルバされる必要がないので、Apache のパフォーマンスをより効果的にすることができます。

参照: DNS Issues

Hostname
Hostname は、DNS ドメインネームサービスによって、一つかそれ以上の IPAddrs へリゾルバされる、完全に制限された DNS ドメイン名です。それは論理的なホストを表し(Domain については、上記を見てください)、少なくとも一つの IPAddr を解決できるに違いありません(または、異なった IPAddr のホストリストについてはしばしば)。
例: prep.ai.mit.edu www.apache.org.
注: 多くの状況で、DNS lookup は無効になるので、Hostname の代わりに IPAddr を指定するのが効果的です。Apache の name の解析は、ネームサーバに対する接続が、速度の遅い PPP リンクを使っていると、異常に時間がかかってしまいます。
注: Hostname 比較は大文字小文字の区別なしで行なわれ、Hostname は常に DNS ツリーのルートに固定されています。それゆえ、二つのホスト WWW.MyDomain.comwww.mydomain.com. (後続のピリオドに注意) は、等しいと解釈されます。

参照: DNS Issues


ProxyDomain

Syntax: ProxyDomain <Domain>
Default: None
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: ProxyDomain is only available in Apache 1.3 and later.

この命令はイントラネットで Apache のプロキシーサーバを使う場合だけです。ProxyDomain 命令は Apache プロキシーサーバが属するデフォルトドメインを指定します。もしドメイン名のないホストへのリクエストに遭遇すると、追加されるようにコンフィギュアされた Domain と同じホストへのリダイレクトレスポンスが生じるでしょう。

例:

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

CacheRoot

Syntax: CacheRoot <directory>
Default: None
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: CacheRoot is only available in Apache 1.1 and later.

キャッシュファイルを含んでいるディレクトリ名を設定してください; これは、httpd サーバによって書き込まれるべきです。


CacheSize

Syntax: CacheSize <size>
Default: CacheSize 5
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: CacheSize is only available in Apache 1.1 and later.

KB (1024 バイト単位)で要求されるキャッシュの領域使用を設定します。使用がこの設定を上回るかもしれませんが、garbage collection は使用がこの設定と同じか、下回るまでファイルを削除するでしょう。


CacheGcInterval

Syntax: CacheGcInterval <time>
Default: None
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: CacheGcinterval is only available in Apache 1.1 and later.

もし CacheSize によって設定されたものより領域の使用が大きければ、一時間毎にキャッシュをチェックして、ファイルを削除してください。


CacheMaxExpire

Syntax: CacheMaxExpire <time>
Default: CacheMaxExpire 24
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: CacheMaxExpire is only available in Apache 1.1 and later.

キャッシュできる HTTP ドキュメントは、起点となるサーバをチェックすることなしに、ほとんどの時間の間実行し続けるでしょう。このように、ドキュメントはほとんどの時間、時代遅れとなります。この制限は、たとえ有効期限がドキュメントで提供されても、実行されます。


CacheLastModifiedFactor

Syntax: CacheLastModifiedFactor <factor>
Default: CacheLastModifiedFactor 0.1
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: CacheLastModifiedFactor is only available in Apache 1.1 and later.

起点となる HTTP サーバが、ドキュメントのための有効期限を満たしていないと、次のやり方で推測します。

  expiry-period = time-since-last-modification * <factor>
例えば、ドキュメントは 10 時間前に修正されて、<factor> が 0.1 ならば、有効期間は 10*0.1 = 1 hour に設定されるでしょう。

有効期間が CacheMaxExpire によって設定されているよりも長ければ、後者が優先します。


CacheDirLevels

Syntax: CacheDirLevels <levels>
Default: CacheDirLevels 3
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: CacheDirLevels is only available in Apache 1.1 and later.

CacheDirLevels はキャッシュにあるたくさんのサブディレクトリのレベルを設定します。キャッシュされたデータは CacheRoot の下にある。このたくさんのディレクトリレベルを保存するでしょう。


CacheDirLength

Syntax: CacheDirLength <length>
Default: CacheDirLength 1
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: CacheDirLength is only available in Apache 1.1 and later.

CacheDirLength はプロキシーのキャッシュサブディレクトリ名にあるたくさんの文字を設定します。


CacheDefaultExpire

Syntax: CacheDefaultExpire <time>
Default: CacheDefaultExpire 1
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: CacheDefaultExpire is only available in Apache 1.1 and later.

もしドキュメントが、有効時間をサポートしていないプロトコルを介して持ってこられると、有効時間として <time> hours を使います。CacheMaxExpire はこの設定を無効にはしません


NoCache

Syntax: NoCache <word/host/domain list>
Default: None
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: NoCache is only available in Apache 1.1 and later.

NoCache 命令は、スペースによって区切られたホストやドメインの文字のリストを指定します。ホストやドメインの一致する文字からは、HTTP とパスワードのない FTP ドキュメントはプロキシーサーバではキャッシュされません。プロキシーモジュールは、起動時にホスト名になるかもしれないもののリストの IP アドレスも決定しようとして、その上一致するテストのためにそれらをキャッシュします。例えば:

  NoCache joes_garage.com some_host.co.uk bullwinkle.wotsamattau.edu
もし IP アドレスによって参照されていれば、'bullwinkle.wotsamattau.edu' は一致するでしょう。

'wotsamattau' は 'wotsamattau.edu' と十分一致することに注意してください。

また、

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


一般的なコンフィギュレーショントピック

プロキシーのアクセス制御

以下の例を使っている普通の <Directory> コントロールブロックによって、プロキシーにアクセスできる人を制御できます:

<Directory proxy:*>
<Limit GET PUT POST DELETE CONNECT OPTIONS>
order deny,allow
deny from [machines you'd like *not* to allow by IP address or name]
allow from [machines you'd like to allow by IP address or name]
</Limit>
</Directory>

<Files> ブロックも動き、1.2b10 以前の Apache のバージョンでは、全ての有り得る URL のための、知られている唯一の方法です。

Netscape ホスト名ショートカットを使う

Netscape のようなホスト名ショートカットが使われることを許可するプロキシーモジュールへのオプションパッチがあります。ここで入手できます。

なぜファイルタイプ xxx は FTP でダウンロードしないのか?

おそらく、プロキシーの mime.types コンフィギュレーションファイルで application/octet-stream として定義されている特定のファイルタイプを持っていないのです。有効な行は

application/octet-stream        bin dms lha lzh exe class tgz taz

なぜプロキシーモジュールを使っていると Apache の起動が遅くなるのか?

もし ProxyBlockNoCache 命令を使っていると、ホスト名の IP アドレスはルックアップされて、後の一致テストのために起動時の間にキャッシュされます。これは、ホスト名のルックアップに生じる速さによっては、2、3、秒かかるかもしれません。

SOCKS プロキシーで Apache のプロキシーモジュールを使うことはできますか?

できます。単に Configuration ファイルで SOCKS4=yes に設定して構築された Apache です。SOCKS5 の能力は似たようなやり方で追加されていて (SOCKS5 ルールはまだない)、もし OS が dll をサポートしていれば、EXTRA_LDFLAGS 定義を使うか、普通に Apache を構築して、SOCKS5 で与えられた runsocks wrapper で走らせます。

Solaris で SOCKS version 4.2 を使うと問題があるという報告がありました。問題は SOCKS 4.3 にアップグレードすることで解決しましています。

SOCKS デーモンのコンフィギュレーションで適切なポート接続を許可することで、Apache のプロキシーサーバへのアクセスを認めることを覚えておいてください。

イントラネットのプロキシーサーバで役に立つ他の機能は何ですか?

イントラネットに置かれている Apache のプロキシーサーバは、会社のファイアウォールを通じて、外部リクエストを転送する必要があります。しかし、イントラネット内部でリソースにアクセスすると、ホストにアクセスするときにファイアウォールを迂回できます。NoProxy 命令は、ホストがイントラネットに属していて、直接のアクセスを指定するのに役立ちます。

イントラネット内部のユーザは WWW リクエストからのローカルドメイン名を省略する傾向があるので、"http://somehost.my.dom.ain/"の代わりに"http://somehost/"をリクエストします。いくつかの商用プロキシーサーバは、インチキをやらせていて、単純にリクエストを受け取り、コンフィギュアされたローカルドメインを示します。ProxyDomain 命令が使われていて、サーバが プロキシーサービスのためにコンフィギュアされていると、Apache はリダイレクトレスポンスを返すことができて、正確で、完全に限定されたサーバアドレスへクライアントを送信します。これは、ユーザのブックマークファイルが完全に限定されたホストを含んでいるので、好ましい方法です。


Apache HTTP Server Version 1.3

検索文字
このJAPACHE!ニュースグループへ ( japache.mod.proxy ) | JAPACHE!ニュースについて | JAPACHE!ホームページへ

Index Home The English original manual is here.


このページの情報に関わる、ご質問、お問い合わせは、 japache@infoscience.co.jpまで。