我们有一个httpd.conf
包含以下日志格式并使用%u
令牌来记录远程用户:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D" combined
CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/access.log.%Y%m%d 86400" combined
不幸的是,访问日志中从未出现过用户标识符。每行日志中的第三个标记都只包含一个连字符,而不是用户,如下所示:
192.168.15.124 - - [20/Apr/2018:12:06:49 +0200] "GET /some/resource" ...
%u
有人知道Apache 如何设置的值吗?是否有特定的 HTTP 标头%u
被替换?我明确设置了一些标头,例如X-Remote-User
,Remote-User
或者只是User
,但我一直只看到连字符...
任何关于 Apache 如何设置的线索都%u
将受到高度赞赏。
答案1
Authorization
此字段对应于HTTP 标头中使用的用户名基本 HTTP 身份验证方案。
答案2
生成这些空用户的 Apache 实例是否具有有效的用户提供程序,例如https://httpd.apache.org/docs/2.4/mod/mod_auth_basic.html#authbasicprovider? 我认为,如果没有它,Apache 就无法知道如何在日志中填充该字段。