1

我正在尝试将 mod_proxy 请求记录到单独的日志中,以识别其将请求转发到哪个 tomcat 服务器。

虚拟主机配置:

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
<Proxy balancer://appcluster>
        BalancerMember ajp://192.168.1.1:8009/ route=tomcat01 keepalive=on retry=300 ttl=30
        BalancerMember ajp://192.168.1.2:8009/ route=tomcat01 keepalive=on retry=300 ttl=30
</Proxy>

NameVirtualHost *:80

<VirtualHost *:80>
 ServerName xyz.abc.com
 DocumentRoot /www
 ErrorLog logs/app_stg-error_log
 TransferLog logs/app_stg-access_log
 ProxyPass / balancer://appcluster/app_stg/ stickysession=JSESSIONID|jsessionid
 ProxyPassReverse / balancer://appcluster/app_stg/
</VirtualHost>

我想登录我的请求已被转发到哪个 Balancer 成员。

4

1 回答 1

1

它是通过在 LogFormat 下添加来实现的。

LogFormat "%h \"%{BALANCER_WORKER_NAME}e\" %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" custom

您可以将此格式添加到 httpd.conf 或虚拟主机中。

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
<Proxy balancer://appcluster>
        BalancerMember ajp://192.168.1.1:8009/ route=tomcat01 keepalive=on retry=300 ttl=30
        BalancerMember ajp://192.168.1.2:8009/ route=tomcat01 keepalive=on retry=300 ttl=30
</Proxy>

NameVirtualHost *:80

<VirtualHost *:80>
 ServerName xyz.abc.com
 DocumentRoot /www
 LogFormat "%h \"%{BALANCER_WORKER_NAME}e\" %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" custom
 ErrorLog logs/app_stg-error_log
 CustomLog logs/app_stg-access_log custom
 ProxyPass / balancer://appcluster/app_stg/ stickysession=JSESSIONID|jsessionid
 ProxyPassReverse / balancer://appcluster/app_stg/
</VirtualHost>

日志文件片段:

2xx.1xx.1xx.1xx "ajp://10.220.102.94:8009/" - [13/Jan/2013:08:36:54 -0500] "GET / HTTP/1.1" 400 - "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17"
于 2013-01-13T13:43:58.530 回答