使用 httpd.conf 和 mod_proxy_ajp 将两个 tomcat 实例解析为两个不同的目录

使用 httpd.conf 和 mod_proxy_ajp 将两个 tomcat 实例解析为两个不同的目录

请原谅我对这个话题的无知。我读了又读,搜索了又搜索,但我仍然在为我的设置而苦苦挣扎。

我正在尝试设置我的 httpd.conf 以允许一个域,并使用两个目录解析为两个不同的 tomcat 实例。

www.example.com/first

<VirtualHost "ip address":80>
        ServerName example/first
        ErrorLog /var/log/httpd/first_error.log
        CustomLog /var/log/httpd/first_access.log combined

        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Allow from all
        </Proxy>

        ProxyPass / ajp://localhost:8009/
        ProxyPassReverse / ajp://localhost:8009/
</VirtualHost>

www.example.com/second

<VirtualHost "ip address":80>
        ServerName example/second
        ErrorLog /var/log/httpd/second_error.log
        CustomLog /var/log/httpd/second_access.log combined

        <Proxy *>
                AddDefaultCharset off
                Order deny,allow
                Allow from all
        </Proxy>

        ProxyPass / ajp://localhost:8010/
        ProxyPassReverse / ajp://localhost:8010/
</VirtualHost>

我知道这是错的,我想我应该使用<Directory>,或者我应该在中指定 tomcat 实例:

ProxyPass /example1 ajp://localhost:8010/

ProxyPass /example2 ajp://localhost:8009/

请派人来帮忙。物资/士气低落。

或示例链接...谢谢!!

答案1

对于您的第一个拆分 URI 代理,我建议您避免使用<Location><Directory>。目录映射到实际文件系统目录,而位置则映射到 URI 路径。后者是您想要实现的,但您实际上不需要容器来实现这一点。(它只是使配置更简洁)

使用单个<VirtualHost>,带有ProxyPass /first ajp://localhost:8009ProxyPass /second ajp://localhost:8010。我可以为您提供完整的配置,但我希望您再努力一点。如果您解决了上述困惑,那么您就非常接近完成了。

答案2

解决了。

<VirtualHost "ip address":80>
            ServerName example.com
            ErrorLog /var/log/httpd/error.log
            CustomLog /var/log/httpd/access.log combined

            ProxyPass /first/ ajp://localhost:8009/first/

            ProxyPass /second/ ajp://localhost:8010/second/

</VirtualHost>

相关内容