2007年04月07日 22:15 [Edit]

Apache - proxyを使って人様のアクセスをログする

apache logo

そんな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でも違いはほとんどなし。

鯖設定

  1. まず、以下の行が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
    
  2. 次に、以下の行をhttpd.confに追加。

    Include conf/proxy.conf
    
  3. httpd.confと同じディレクトリに、proxy.confという名前で以下のファイルを作成。こここではイントラネットにのみ、Port 10080で串を提供するという設定。
  4. 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>
    
  5. httpd -tで、設定ファイルが正しいかどうかを確認。
  6. httpdを再起動。
  7. 一応コマンドラインで、串が揚がってるか確認。
    % 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.
    
  8. これでproxy_access_logにこのアクセス記録が残っていれば、鯖は一丁上がり。
    127.0.0.1 - - [07/Apr/2007:22:07:50 +0900] "HEAD http://blog.livedoor.jp/dankogai/ HTTP/1.0" 200 - "-" "-"
    

倉設定

  1. あとはブラウザーごと、proxyの設定をしとくだけ。以下はFirefox 2の例。ちなみに、ここではイントラネットでproxyを引くと、上記の鯖のIPアドレスが返るようあらかじめ設定してある。DNSの設定がまんどくさければIPアドレス決め打ちでもおk。

    firefox-proxy-setting

  2. あとはこの倉からのアクセスは全て鯖のproxy_access_logに記録される。めでたしめでたし。

コメント

まじめな話、こうした proxy server というのは、社員のプライバシーを侵害するためだけはなく、ブラウザーやページの挙動を観察するのにも使えるし、キャッシュと組み合わせてトラフィックを減らすのにも役立つし、セキュリティを高めるのにも役立つ。要はどういう目的でそれを使うかだろう。

さらに transparent proxy というものもある。これはクライアント側に一切の設定を必要とせず、外へのアクセスは必ず proxy server を通るように設定するものだ。上記の例よりは少しばかり難しくなるが、それでも答えは少しぐぐれば出てくる程度の難易度である。

串もハサミと同じく、使いようである。上手に使って欲しい。

Dan the Man with Too Many Apache Directives to Tweak


この記事へのトラックバックURL

この記事へのトラックバック
404 Blog Not Found:Apache - proxyを使って人様のアクセスをログする
404 Blog Not Found:Apache - proxyを使って人様のアクセスをログする【】at 2012年01月20日 00:35
この記事へのコメント
透過プロキシを使いませう
http://www.linux.or.jp/JF/JFdocs/TransparentProxy.html

mod_proxyは
ProxyPass / http://192.168.4.1/
ProxyPassReverse / http://192.168.4.1/
なんて使い方も便利ですね。
Posted by takecz at 2007年04月08日 12:58