5

我在为两个在 tomcat 中具有两个不同上下文路径的应用程序配置 apache tomcat ProxyPass 指令时遇到问题。tomcat 在 apache 后面运行,我使用 apache 代理对 tomcat 的请求的路径。在 apache 中,我想通过主机名而不是上下文路径访问这两个应用程序。

设想:

雄猫

https://domain:8443/app1
https://domain:8443/app2

在 tomcat 中,应用程序具有上下文路径 app1 和 app2

在 apache 中,我想启用这两个应用程序,如下所示:

https://app1.host/
https://app2.host/

在 apache 中,我为每个域创建了一个配置:

ProxyPass /  https://localhost:8443/app1
ProxyPassReverse / https://localhost:/8443/app1

奇怪的是 app1 只能通过 apache 使用上下文路径:

https://app1.host/app1

是否可以使用 apache ProxyPass 模块实现这样的设置?

谢谢你的帮助。

4

2 回答 2

12

您应该能够通过使用虚拟主机来实现您想要的结果。此外,通过 AJP 协议而不是 HTTPS 将请求传递给 tomcat 也是一个好主意。尝试将此添加到 Apache 配置中

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName app1.host
    ProxyPass / ajp://localhost:8009/app1/
</VirtualHost>

<VirtualHost *:443>
    ServerName app2.host
    ProxyPass / ajp://localhost:8009/app2/
</VirtualHost>

如果您没有更改 Tomcat 的默认服务器设置,这应该可以正常工作。否则,请确保指定在 Tomcat 的 conf/server.xml 文件中配置的 AJP 端口。应该有类似这样的一行:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

确保您在 Apache 配置中加载了 mod_proxy 和 mod_proxy_ajp 模块,这可能因您的 Apache 安装而异。还要删除任何以前配置的“ProxyPass / ...”行,因为它们会干扰新配置。希望这对你有用。

于 2010-04-21T06:37:06.443 回答
7

你可以试试

ProxyPass /  https://localhost:8443/app1/
ProxyPassReverse / https://localhost:8443/app1/

最后 /

于 2012-12-05T17:51:57.323 回答