所以我们在我们的SLB上启用了X-Forwarded-For,它正在工作,我通过link here进行了正确的日志记录工作,它说要使用这个SetEnvIF语句。
我们遇到的问题是,SLB还会通过GET /health.html文件检查5秒,这样就填满了我们的日志。我找到了一种让apache2停止记录特定文件的方法,但是我似乎无法找到办法同时执行X-Forward-For和Do not Log特定文件。
这是我的最后一次尝试,当我读到一篇博客,说你可以使用多个环境,然后通过一个','来分隔它们,而不是那个:(。
#logs
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
SetEnvIf Request_URI "^/health\.html$" dontlog
CustomLog "/www/logs/access.log" combined env=!forwarded,!dontlog
CustomLog "/www/logs/access.log" proxy env=forwarded
我感谢每个人的帮助。
感谢您的时间。
答案 0 :(得分:1)
对于你的情况应该是:
HTML
最后一个可以是intval();
,但我留下CustomLog /www/logs/access.log combined expr=(reqenv('forwarded')=='no'&&reqenv('dontlog')=='no')
CustomLog /www/logs/access.log proxy expr=(reqenv('forwarded')=='yes')
作为env
示例。
答案 1 :(得分:-1)
语法:
CustomLog file|pipe format|nickname [env=[!]environment-variable| expr=expression]