В настоящее время в моем httpd файле Apache 2.4 есть несколько виртуальных хостов. Я хотел бы иметь возможность собирать больше информации о том, кто и когда посещает, включая IP-адрес и User Agent в access_log.
В файле httpd conf у меня есть следующее:
` <IfModule log_config_module>
# info from http://www.techstacks.com/howto/log-client-ip-and-xforwardedfor-ip-in-apache.html
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" proxy
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
CustomLog "logs/access_log" combined env=!forwarded
CustomLog "logs/access_log" proxy env=forwarded
</IfModule>
Что приводит к следующему: «На данный момент это показывает следующее:
`::1 - - [05/Aug/2016:02:49:26 +1200] "OPTIONS * HTTP/1.0" 200 - "-" "Apache/2.4.23 (Unix) OpenSSL/1.0.1e-fips mod_bwlimited/1.4 (internal dummy connection)"``
Я также пробовал различные другие предлагаемые конфигурации, найденные здесь и в Google, но пока мне не повезло.
Насколько я понимаю, поскольку директива регистрации находится за пределами запись, он должен захватывать указанный трафик ( подробно описан здесь ) - но, как вы можете видеть из примера, он не работает.
Опубликованный вами журнал подключений был внутренним подключением, используемым apache для поддержания работоспособности рабочего. На самом деле это вообще не посетитель! Стандартный "комбинированный" формат по умолчанию должен предоставлять вам записи журнала, которые вы ищете.
Это будет следующий LogFormat:
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
, а затем в вашем блоке VirtualHost вам понадобится следующее:
CustomLog /path/to/access_log combined
Если вы используете кеш обратного прокси, это становится немного интереснее, но модуль apache, такой как mod-rpaf, должен помочь с этим.