2015-10-26 98 views
2

因此,我们在正在运行的SLB上启用了X-Forwarded-For,并且通过link here(使用此SetEnvIF语句表示)有正确的日志记录。Apache2有条件地使用多个环境设置

我们遇到的问题是,SLB还通过GET /health.html文件检查了5秒钟的时间,该文件填满了我们的日志。我能找到一种方法来让apache2停止记录特定的文件,但我似乎无法找到一种方法来执行X-Forward-For和Do not Log特定文件。

这是我最后一次尝试,当我读到一篇博客说,你可以使用多个信封,并通过“”这没有OWRK :(sepearate他们。

#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

我能得到它的工作“之类的”通过删除ComFor LogFormat行和!forward,!dontlog CustomLog行,因为我的想法是,它们将不会被使用,因为应用程序流是通过SLB。我将唯一的自定义日志行更改为具有代理env =!dontlog,它将使用期望的X-Forwarded-For格式化日志,同时不记录health.html检查。我还没有测试过每个服务器的直接HTTP连接。要通过SLB检查它是否正确记录。 – Jim

回答

-1

语法:

CustomLog file|pipe format|nickname [env=[!]environment-variable| expr=expression]