为什么 Apache 访问日志有时有两个主机 IP 地址?

为什么 Apache 访问日志有时有两个主机 IP 地址?

我一直在尝试解析 Apache 访问日志,但不知为何,有两个主机 IP 地址被逗号和空格分隔。我想删除第二个 IP 地址,这有什么意义吗?我不想删除可能包含有用信息的内容。

编辑:

以下是包含两个 IP 地址的日志行示例:

62.28.25.X, 194.65.37.X - - [06/May/2014:17:58:15 +0000] "GET / HTTP/1.1" 200 1556 "http://mysite.io/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; chromeframe/32.0.1700.107; GTB7.5; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.2; .NET4.0C; .NET4.0E)"

正常线路:

54.247.188.X - - [08/May/2014:00:04:16 +0000] "GET / HTTP/1.1" 301 20 "-" "NewRelicPinger/1.0 (625386)"

我的 mods-enabled 目录中没有 mod_log_config。也许我找错了地方?它应该是默认的。

编辑2:

我在 /etc/apache2/apache2.conf 中发现了这一点,我希望这能解决问题。

# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

答案1

当 Apache 收到来自代理(或声称是代理)系统的连接时,就会发生这种情况。格式%h说明符通常只生成一个 IP 地址,但当客户端发送标头表明它已代理请求时,会用逗号记录原始客户端的 IP,然后记录代理的 IP。

相关内容