没有上下文的Apache反向代理上下文到Tomcat

我有一个Apache实例和两个Tomcat实例。 Apache公开面对https:// public_url / app1和https:// public_url / app2,并且应该将每个上下文传递给相应的Tomcat实例。

其中一个Tomcat实例没有上下文,即https:// ip_address:port ,我无法使用AJP13或HTTP / S正确代理stream量。

<Location /app1> ProxyPass ajp://127.0.0.1:8009/app1 nocanon ProxyPassReverse ajp://127.0.0.1:8009/app1 </Location> <Location /app2> ProxyPass ajp://127.0.0.2:8009/ nocanon ProxyPassReverse ajp://127.0.0.2:8009/ </Location> 

在上面的例子中,app1可以工作,但是app2并没有放弃app2的公共上下文,也就是直接访问后端会得到https:// url / login / login ,所以我想它应该显示为https:// public_url / app2 /login/login,而不是在https:// public_url /login/login 404

我试图用mod_jkreplace上面的app2规则,它支持更复杂的场景,但没有更好的成功。

 worker.list=app2_ajp worker.app2_ajp.port=8009 worker.app2_ajp.host=127.0.0.2 worker.app2_ajp.type=ajp13 LoadModule jk_module modules/mod_jk.so JKWorkersFile /etc/httpd/conf.d/workers.properties JkLogFile /var/log/httpd/mod_jk_log JkLogLevel debug JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" JkOptions +ForwardURICompatUnparsed +ForwardKeySize +ForwardURICompat +ForwardDirectories JKMountCopy All JKMount /app2 app2_ajp JKMount /app2/* app2_ajp 

如果没有上下文,是否可以通过AJP13代理Tomcat实例? 我在AJP13的configuration中出错的地方,还是有HTTPS代理的方法吗?