2008/02/06(水)Apache proxyの設定
たまに(フォワード)proxyサーバが必要なことがあり、昔は delegate を使っていたのですが最近は古くて危ないらしいということで困っていました。
mod_proxyの設定メモ
httpとftpのproxyをたてることを目的とします。
モジュールロード
まず、proxy_module, proxy_http_module, proxy_ftp_module を作り、そのモジュールをロードするように設定します。
(FreeBSD) LoadModule proxy_module libexec/apache22/mod_proxy.so LoadModule proxy_http_module libexec/apache22/mod_proxy_http.so LoadModule proxy_ftp_module libexec/apache22/mod_proxy_ftp.so
(Debian4) # cd /etc/apache2/mods-enabled # ln -s ../mods-available/proxy.conf # ln -s ../mods-available/proxy.load # ln -s ../mods-available/proxy_http.load # ln -s ../mods-available/proxy_ftp.load
confの設定
このままの状態では、どこの誰でも使用出来るという世にも恐ろしい状態になりますので、パスワード認証をかけます。また ssh 転送することを想定して、ローカルIP(127.0.0.1)はパスワードなしで許諾しておきます。
<IfModule mod_proxy.c> ProxyRequests on ProxyVia on <Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 Allow from 192.168.0 AuthType Basic AuthName "proxy" AuthUserFile /xxxxxx/.htpasswd Require valid-user Satisfy any </Proxy> </IfModule>
ダイジェスト認証ならば次のように変更。
AuthType Digest AuthName "proxy" AuthUserFile /xxxxxx/.htdigest Require valid-user
パスワード認証されたproxyサーバを経由して、パスワード認証されたサイトにアクセスすることを考えると若干奇妙な感じがします。調べてみたところ、BASIC認証のパスワード情報は普通 "Authorization: Basic xxxxx" として送信するのですが、Proxyの場合これが
GET http://nabe.blog.abk.nu/ HTTP/1.0 Proxy-Authorization: Basic dGVzdDp0ZXN0
となります。これによりProxyに対する認証と、これによって相手サイトに対する認証を当時に行うことができるようです。
(おまけ)screen でログを取る
.screenrc logfile "/home/xxx/screen-%Y%m%d_%n.log"
この状態でスクリーン起動後に、
Ctrl-A H
でログの記録開始。もう一度同じ操作をするとログの記録を終了します。