Apache - Tomcat ProxyPass VirtualHost - 上下文路径

时间:2010-04-09 13:44:57

标签: apache tomcat proxypass

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

情景:

Tomcat的

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模块实现这样的设置?

感谢您的帮助。

2 个答案:

答案 0 :(得分:11)

您应该能够使用虚拟主机获得所需的结果。另外,通过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 / ...”行,因为它们会干扰新配置。希望这对你有用。

答案 1 :(得分:7)

你可以尝试

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

带有最终/