我在为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模块实现这样的设置?
感谢您的帮助。
答案 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/
带有最终/