そんなPHPなんて使わなくても、Apacheだけでできますがな。
企業イントラネットのちょっとグロイ小話4本*ホームページを作る人のネタ帳かなり簡単な構造です。 検索ボックスから http://(自社グループウェアドメイン)/get.php に対して、検索ボックスからクエリを送信する。 ここで、サーバーに検索キーワード履歴を保存します。
その後、何事もなかったかのように
header("Location: http://www.google.co.jp/search?q=".$q."&hl=ja&ie=EUC-JP");をPHPに書き込んでおくだけで、Googleの検索結果に移行する。
以下はApache 2.0.xにおける方法ですが、1.3.xでも2.2.xでも違いはほとんどなし。
鯖設定
- まず、以下の行が
httpd.conf
有効になっていることを確認。コメントアウトされている場合はアンコメント。LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so
- 次に、以下の行をhttpd.confに追加。
Include conf/proxy.conf
httpd.conf
と同じディレクトリに、proxy.conf
という名前で以下のファイルを作成。こここではイントラネットにのみ、Port 10080で串を提供するという設定。httpd -t
で、設定ファイルが正しいかどうかを確認。- httpdを再起動。
- 一応コマンドラインで、串が揚がってるか確認。
% telnet 127.0.0.1 10080 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. HEAD http://blog.livedoor.jp/dankogai/ HTTP/1.0 HTTP/1.1 200 OK Date: Sat, 07 Apr 2007 13:07:50 GMT Server: Apache/2.2.4 (Unix) DAV/2 Last-Modified: Sat, 07 Apr 2007 09:18:36 GMT ETag: "30b777b-34bdc-49eb5300" Accept-Ranges: bytes P3P: CP="BUS OUR PHY STP ADM CUR DEV PSA PSD" Content-Type: text/html Via: 1.0 www.tsukda.dan.co.jp:10080 Connection: close Connection closed by foreign host.
- これで
proxy_access_log
にこのアクセス記録が残っていれば、鯖は一丁上がり。127.0.0.1 - - [07/Apr/2007:22:07:50 +0900] "HEAD http://blog.livedoor.jp/dankogai/ HTTP/1.0" 200 - "-" "-"
Listen 0.0.0.0:10080 <VirtualHost *:10080> ProxyRequests On ProxyVia On ErrorLog logs/proxy_error_log Customlog logs/proxy_access_log combined <Proxy *> Order deny,allow Deny from all Allow from 127.0.0.1 192.168.0.0/16 172.32.0.0/12 10.0.0.0/8 </Proxy> </VirtualHost>
倉設定
- あとはブラウザーごと、proxyの設定をしとくだけ。以下はFirefox 2の例。ちなみに、ここではイントラネットで
proxy
を引くと、上記の鯖のIPアドレスが返るようあらかじめ設定してある。DNSの設定がまんどくさければIPアドレス決め打ちでもおk。 - あとはこの倉からのアクセスは全て鯖の
proxy_access_log
に記録される。めでたしめでたし。
コメント
まじめな話、こうした proxy server というのは、社員のプライバシーを侵害するためだけはなく、ブラウザーやページの挙動を観察するのにも使えるし、キャッシュと組み合わせてトラフィックを減らすのにも役立つし、セキュリティを高めるのにも役立つ。要はどういう目的でそれを使うかだろう。
さらに transparent proxy というものもある。これはクライアント側に一切の設定を必要とせず、外へのアクセスは必ず proxy server を通るように設定するものだ。上記の例よりは少しばかり難しくなるが、それでも答えは少しぐぐれば出てくる程度の難易度である。
串もハサミと同じく、使いようである。上手に使って欲しい。
Dan the Man with Too Many Apache Directives to Tweak
http://www.linux.or.jp/JF/JFdocs/TransparentProxy.html
mod_proxyは
ProxyPass / http://192.168.4.1/
ProxyPassReverse / http://192.168.4.1/
なんて使い方も便利ですね。