我有一个 apache 服务器、一个唯一的域名和多个 tomcat 实例,这是我的实际配置:
<VirtualHost *:80>
ServerName my.domain.com
...
ProxyPass /sample_1 ajp://127.0.0.1:8009/sample_1
ProxyPass /sample_2 ajp://127.0.0.1:8009/sample_2
ProxyPass /sample_3 ajp://127.0.0.1:8014/sample_3
ProxyPass /sample_4 ajp://127.0.0.1:8019/sample_4
....
CustomLog logs/my_access_log combined
ErrorLog logs/my_error_log
</VirtualHost>
现在,我想为每个 tomcat 实例使用一个 CustomLog,我尝试将每个 ProxyPass 指令放在单独的虚拟主机中,但是根据 httpd -S 输出,除了顶部的虚拟主机之外,我得到了 403 错误。
我不喜欢删除 ServerName 指令,因为该服务将通过 IP 地址提供。
请帮助
答案1
您可以使用SetEnvIf
指令与有条件记录 将特定的请求记录到不同的日志文件。
<VirtualHost *:80>
ServerName my.example.com
...
SetEnvIf Request_URI "/sample_1.*" sample_1
SetEnvIf Request_URI "/sample_2.*" sample_2
CustomLog logs/my_access_log_sample_1 combined env=sample_1
CustomLog logs/my_access_log_sample_2 combined env=sample_2
CustomLog logs/my_access_log combined
ErrorLog logs/my_error_log
</VirtualHost>