最強メール・フィルタSpamghetti
機能制限無し試用版のダウンロード

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 を実行します。FTP、CONNECT (for SSL)、HTTP/0.9、HTTP/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 の SubNet は IPAddr と同等で、有効ビット 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.com と www.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 のようなホスト名ショートカットが使われることを許可するプロキシーモジュールへのオプションパッチがあります。ここで入手できます。
おそらく、プロキシーの mime.types コンフィギュレーションファイルで application/octet-stream として定義されている特定のファイルタイプを持っていないのです。有効な行は
application/octet-stream bin dms lha lzh exe class tgz taz
もし ProxyBlock や NoCache 命令を使っていると、ホスト名の IP アドレスはルックアップされて、後の一致テストのために起動時の間にキャッシュされます。これは、ホスト名のルックアップに生じる速さによっては、2、3、秒かかるかもしれません。
できます。単に 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!ホームページへ
The English original manual is here.
このページの情報に関わる、ご質問、お問い合わせは、
japache@infoscience.co.jpまで。