我们有Apache Web服务器作为“入口”传入stream量,然后委托给与mod_jk的tomcats。
我们要loggingHTTP摘要用户名,样本标题:
Authorization: Digest username="Mufasa", realm="[email protected]", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", ...
不幸的是,使用'%u'不能像描述的那样工作。 我的猜测是,因为我们在tomcat身份validation(apache委托调用与mod_jk的tomcat)自己的日志设施的Apache不知道如何访问digest-username(因为自己的身份validation模块被绕过)。
要解决这个问题:有一个自定义的日志格式expression与正则expression式匹配,例如告诉从“授权”标题提取用户名=“(。*?)” ,并推送到日志?
SetEnvIf Authorization username="([^"]+)" digest_username=$1 LogFormat "%h %l %{digest_username}e %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined_with_user CustomLog /path/to/log combined_with_user
还没有testing,所以不知道Apache是否会窒息在SetEnvIf (他们可能需要逃脱)引号 – 但这应该是非常接近。