Apache 特定サイトからのアクセスを個別にログする CentOS
4月 26, 2010 — 23:25

あまり必要ないのか紹介が一切ないのでメモしておく。
試しに2chからのアクセスのみ別のログに保存しておくようにしてみる。

# vi /var/log/httpd/2ch_log
# vi /etc/httpd/conf.d/2ch.conf

SetEnvIf Referer "^http://.*.2ch.net" 2ch_log
SetEnvIf Referer "^http://ime.nu" 2ch_log
CustomLog /var/log/httpd/2ch_log combined env=2ch_log

# service httpd restart

余談だが、その気になれば特定のサイトからアクセスがあった場合はメールで知らせることも可能である。
参考元:今週のお題 – Apache のエラーログをメールする
# vi /root/2ch_log.pl

#!/usr/bin/perl
use strict;

my $addr = $ARGV[0] ? shift:"orbit";
while(1) {
    my $r = sysread(STDIN, my $m, 4096);
    if($m) {
        if(open(MAIL, "|/usr/bin/Mail -s '[httpd] 2ch Access' $addr")) {
            print MAIL $m;
            close MAIL;
        }
    }
    if($r <= 0) {
        last;
    }
}

# vi /etc/httpd/conf.d/2ch.conf

SetEnvIf Referer "^http://.*.2ch.net" 2ch_log
SetEnvIf Referer "^http://ime.nu" 2ch_log
CustomLog "/var/log/httpd/2ch_log" combined env=2ch_log
CustomLog "| /root/2ch_log.pl" combined env=2ch_log

# service httpd restart

追記
LAN内からのアクセスをロギングしない設定

SetEnvIf Referer "^http://.*.2ch.net" 2ch_log
SetEnvIf Referer "^http://ime.nu" 2ch_log
SetEnvIf Remote_Addr "^127.0.0." !2ch_log
SetEnvIf Remote_Addr "^192.168.24." !2ch_log
CustomLog "/var/log/httpd/2ch_log" combined env=2ch_log
CustomLog "| /root/2ch_log.pl" combined env=2ch_log