我正在使用 Apache 作为负载均衡器,并希望记录负载均衡器将请求转发到的服务器。例如,如果我有三个 Web 服务器,分别称为:
- web服务器1-192.168.0.1
- web服务器2-192.168.0.2
- web服务器3-192.168.0.3
我希望日志能够显示请求被转发到哪个服务器(表示为大胆的):
10.1.0.1192.168.0.1- - [20/Jul/2010:10:52:01 -0600] “获取 /js/shared/kobj-static.js HTTP/1.1” 302 236 “http://www.google.com/search?q=baked+bbq+rib+recipes&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a“Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729) infoCard/AzigoLite/0.0.12”
任何帮助,将不胜感激。
答案1
您可以使用自定义日志格式来执行此操作。我认为您可以做的一种方法是将环境变量添加到日志中。mod_proxy_balancer(我猜您正在使用)导出 BALANCER_WORKER_NAME 变量,该变量是用于请求的 Worker 的名称。您可以%{BALANCER_WORKER_NAME}e
在自定义日志格式字符串上使用指令来记录该内容。这是添加了指令的默认 debian“组合”日志格式的示例:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{BALANCER_WORKER_NAME}e\"" combined