我有一个主机,只有一个网络应用程序,目前我通过 www.hostnameA.com/访问它,因为网络应用程序作为 tomcat ROOT 网络应用程序部署到 tomcat/webapps。
现在我需要向我的主机添加另一个 Web 应用程序,我也希望这个应用程序也没有上下文,但将通过另一个主机名 www.hostnameB.com/访问它,但我只能部署一个 ROOT tomcat Web 应用程序。
我应该补充说我也在使用 apache,我的虚拟主机看起来像:
<VirtualHost *:80>
ServerName www.hostnameA.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
我尝试将 war 文件重命名为 webAppA,然后将其附加到 proxypass,但它给了我一个 400 错误并继续将/webAppA 附加到 URL:
ProxyPass / http://localhost:8080/webAppA
有解决办法吗?我真的不想为此在不同的端口上运行多个 tomcat 实例,还有其他选择吗?
最佳答案
如上所述,最直接的解决方案是使用 Apache 的 mod_proxy_ajp ,同时允许代理和 AJP 转发。配置应类似于:
<VirtualHost *:80>
ServerName www.hostnameA.com
ProxyPass / ajp://localhost:8009/webAppA/
ProxyPassReverse / http://www.hostnameA.com/webAppA
[...]
...与 www.hostnameB.com 的 B 相同。
关于apache - 在单个主机上运行多个 root\no context web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31853578/