Arn*_*rne 4 apache tomcat proxypass
我在为tomcat中具有两个不同上下文路径的两个应用程序配置apache tomcat ProxyPass指令时遇到问题.tomcat在apache后面运行,我使用apache代理路径请求tomcat.在apache中,我想通过主机名而不是上下文路径访问这两个应用程序.
场景:
tomcat的
https://domain:8443/app1
https://domain:8443/app2
Run Code Online (Sandbox Code Playgroud)
在tomcat中,应用程序具有上下文路径app1和app2
在apache中我想启用两个应用程序如下:
https://app1.host/
https://app2.host/
Run Code Online (Sandbox Code Playgroud)
在apache中,我为每个域创建了一个配置:
ProxyPass / https://localhost:8443/app1
ProxyPassReverse / https://localhost:/8443/app1
Run Code Online (Sandbox Code Playgroud)
奇怪的是app1只能通过apache使用上下文路径:
https://app1.host/app1
Run Code Online (Sandbox Code Playgroud)
是否可以使用apache ProxyPass模块实现这样的设置?
谢谢你的帮助.
小智 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>
Run Code Online (Sandbox Code Playgroud)
如果您尚未更改Tomcat的默认服务器设置,则应该可以正常工作.否则,请确保指定在Tomcat的conf/server.xml文件中配置的AJP端口.应该有一个类似于这样的行:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud)
确保在Apache配置中加载了mod_proxy和mod_proxy_ajp模块,这可能因Apache安装而异.同时删除任何先前配置的"ProxyPass/..."行,因为它们会干扰新配置.希望这对你有用.
你可以试试
ProxyPass / https://localhost:8443/app1/
ProxyPassReverse / https://localhost:8443/app1/
Run Code Online (Sandbox Code Playgroud)
与决赛/