.
.
.
.
.
TOPページ(Alt+B)
.
ApacheでProxyサーバー

ApacheにはProxyサーバー機能も備わっています。このプロキシ機能はデフォルトでは組み込まれていないため、mod_proxyモジュールを使って有効にしなければなりません。ここではこのモジュールを有効にしてProxyサーバーとして動作させるまでをみてみましょう。

メモ帳等でhttpd.confを開きます。

#LoadModule proxy_module modules/mod_proxy.so のコメント(#)を解除しモジュールを有効にします。

#<IfModule mod_proxy.c>

# ProxyRequests On

#</IfModule> のコメント(#)を解除しプロキシリクエストを許可します。

基本的にはこれだけでプロキシとして動作します。デフォルトでは80番ポートでリクエストを待ちます。

Proxyサーバーの便利な機能の1つにプロキシを経由するリクエストと応答をディスクキャッシュに保存できるという機能(ドキュメントキャッシュ機能)があります。この機能を有効にするには

# CacheRoot "C:/Apache/proxy" のコメント(#)を解除します。

# CacheSize 5 のコメント(#)を解除します。

CacheRoot指示子はキャッシュするファイルの格納場所を指定します。デフォルトはC:\Apache\proxyとなりますが、ディスクに余裕のある他の場所に変更してもいいでしょう。CacheSize指示子はデータをキャッシュするために確保しておく領域のサイズを指定します。デフォルトは5Kバイトですが、この値は利用可能なディスク領域の20%〜40%程度に収めておくことが推奨されています。

プロキシへの接続をアクセス制限する場合(例えば自分の組織内のユーザーだけに接続を許可する)は

# <Directory proxy:*>
#    Order deny,allow
#    Deny from all
#    Allow from foo.bar.com このブロックのコメントを解除し、ここに自ドメインを指定してやります。
# </Directory>

これによりfoo.bar.comのユーザーだけがProxyサーバーにアクセスできることができるようになります。<Directory>ブロックのproxyの引数のアスタリスク(*)はリクエストされるURLを表します。
特定のプロトコル、例えばHTTPだけプロキシにアクセスできるように設定するには次のように指定します。

<Directory proxy: http: *>
     Order deny,allow
     Deny from all
     Allow from www.abc.co.jp
</Directory>

プロキシを使って特定のホストやドメインへのアクセスを禁じることができます。これを実現するにはProxyBlock指示子を使います。

ProxyBlock abc.co.jp efg.co.jp

これにより、abc.co.jp と efg.co.jp へのアクセスが禁じられます。

次にUNIXサーバーでの具体的な設定例を元に、よく利用される指示子とその値について見てみましょう。

<IfModule mod_proxy.c>
ProxyRequests On ・・・・[1]

<Directory proxy:*>
   Order deny,allow
   Deny from all
   Allow from 192.168. ・・・・[2]
</Directory>

ProxyVia Block ・・・・[3]

CacheRoot "/var/cache/httpd" ・・・[4]
CacheSize 50000 ・・・・[5]
CacheGcInterval 3 ・・・・[6]
CacheMaxExpire 24 ・・・[7]
CacheLastModifiedFactor 0.1 ・・・・[8]
CacheDefaultExpire 1 ・・・・[9]
# NoCache a_domain.com another_domain.edu joes.garage_sale.com

</IfModule>

[1]ProxyRequests Onと指定することにより、Apacheに用意されている多くのプロキシ関連指示子が使えるようになります。

[2]Allow from 192.168.と指定すると、例えば企業などでクラスCのLANを構築しているような場合にそのLAN内からでないとプロキシを経由できないように制限することができます。

[3]ProxyVia Blockと指定すると、プロキシリクエストからVia:ヘッダが取り除かれます。他にはOn、Off、Fullが指定できますが、それぞれの機能に関してはApacheのモジュール一覧の中のmod_proxyを参照ください。

[4][5]CacheRoot、CacheSizeについては上記を参照してください。

[6]CacheGcIntervalではサーバーがキャッシュを検査する間隔を時間単位で指定します。この処理のことをガベージコレクション処理といいます。処理には「キャッシュの中で有効期限を迎えた項目を削除する」、「キャッシュのサイズがCacheSizeで設定されたサイズと同じになるか、それを下回るまでキャッシュされた古い項目を削除する」という2つのことが行われます。デフォルトは4(時間)です。

[7]CacheMaxExpireではガベージコレクション処理時に削除するファイルを決定する場合の判断基準となる有効期限を時間で設定します。デフォルトは24(時間)です。

[8]CacheLastModifiedFactorではドキュメントが最後に更新された時期に基づいて、そのドキュメントの「古さ」を算出するための係数を指定します。これは「有効期限=最終更新時間から経過した時間 × 係数」という形で計算されます。例えばドキュメントが12時間前に更新されていて、係数が0.1の場合、有効期限は1.2時間となります。デフォルトは0.1です。

[9]CacheDefaultExpireでは有効期限をサポートしないプロトコルを使って取得されたドキュメントの有効期限を時間で指定します。デフォルトは1です。

プロキシで有効なその他の指示子についてはApacheのモジュール一覧の中のmod_proxyを参照ください。

TOPページ(Alt+B)

CopyRight (C) 2000-2013 by T.Shiraishi All right reserved 無断転載禁止/リンクフリー