具有相同服务器名称的多个虚拟主机

具有相同服务器名称的多个虚拟主机

我有一个 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>

相关内容