我正在尝试解析 apache 日志文件,但我发现了一些奇怪的结果,我不确定它们是什么意思。希望有人能提供一些见解。(所有 IP 地址都被更改了。实际上没有一个以 192 开头,但我认为搜索引擎并不重要。)
在第一个例子中,主机字段中显示了多个 IP 地址:
192.249.71.25 - - [04/Aug/2009:04:21:44 -0500] "GET /publications/example.pdf HTTP/1.1" 200 2738
192.0.100.93, 192.20.31.86 - - [04/Aug/2009:04:21:22 -0500] "GET /docs/another.pdf HTTP/1.0" 206 371469
这是什么原因造成的?这与代理服务器有关吗?有没有办法让 Apache 只记录一个?
编辑:
这里是:
LogFormat "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\" %I %O" common
在第二个例子中,大量信息完全缺失!这是什么原因造成的?
msnbot-65-55-207-50.search.msn.com - - [29/Dec/2009:15:45:16 -0600] "GET /publications/example.pdf HTTP/1.1" 200 3470073 "-" "msnbot/2.0b (+http://search.msn.com/msnbot.htm)" 266 3476792
- - - - "-" - - "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1)" 285 594
- - - - "-" - - "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1)" 285 4195
- - - - "-" - - "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.1)" 299 109218
crawl-17c.cuil.com - - [29/Dec/2009:15:45:46 -0600] "GET /publications/another.pdf HTTP/1.0" 200 101481 "-" "Mozilla/5.0 (Twiceler-0.9 http://www.cuil.com/twiceler/robot.html)" 253 101704
我的 CustomLog 配置如下:
LogFormat "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\" %I %O" common
答案1
在我看来,您位于代理/缓存后面,并且您正在使用 mod_rpaf,它将 apache 在 %h 中看到的 IP 地址替换为 X-Forwarded-For 的内容。一些代理服务器包括其 IP 和转发 IP(为您提供 1.2.3.4、2.3.4.5 IP 地址)。您得到一些空白结果的原因是,一些代理服务器使用除 X-Forwarded-For 之外的标头,并且 rpaf 将空值替换为 -。
答案2
httpd -l
您能发布和的输出httpd -M
吗?
逗号分隔的那%h
行看起来可疑,好像有什么东西卡在了 X_FORWARDED_FOR 值中。后面几行没有日期,这似乎很奇怪,所以我的假设是,有一个模块加载了,该模块注册了一个日志记录钩子,并且正在吞噬你的输出。
我从未见过这种情况,而且我运行过一些非常大的 Apache 安装。一定是某些有问题的模块导致了问题(或者可能是缺少必需的模块)。
另一种可能性是 Apache 不知道如何满足您的格式指令。'-' 仅表示请求的数据点不可用。这些格式说明符内置于 mod_log_config 中,默认情况下应该(需要?)存在。
编辑...我知道 Ubuntu 和 Red Hat 定义了“组合”和“通用”。你能尝试使用那种格式吗?不过,我认为有人已经提到过这一点。
答案3
看起来您正在重复使用common
日志记录定义。这可能不受支持。尝试定义您自己的记录器
LogFormat "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\" %I %O" mylogformat