Hokay ......所以......
我有一系列应用程序部署到单个Tomcat应用程序服务器。我们称之为appOne,appTwo和appFoo。
我正在使用Apache反向代理监听appOne.mysite.com,appTwo.mysite.com和appFoo.mysite.com,并使用类似于以下内容:
<VirtualHost appOne.mysite.com:443>
[ ... ]
ProxyPass / http://serverOne.mysite.com:8080/appOne/
ProxyPass Reverse / http://serverOne.mysite.com:8080/appOne/
[ ... ]
</VirtualHost>
由于Tomcat的工作原理,每个应用程序都在serverOne.mysite.com:8080
上被授予了自己的应用程序上下文。
但是,我不希望用户知道他们正在使用appOne,而不是appFoo,因此我想将其隐藏在浏览器报告的网址模式中。
因此,对appOne.mysite.com
的请求应显示为appOne.mysite.com
,而不是appOne.mysite.com/appOne/
。
拒收
将应用程序的war文件重命名为ROOT.war
并部署它是很诱人的,因为它会自动获取根上下文。但在这种情况下,每个应用程序应该看起来是它自己的根上下文(这不是我们使用反向代理配置的部分原因吗?)。
建议我使用Tomcat关闭autoDeploy并为每个应用程序提供自定义context.xml
文件也很诱人......但这并不能解决因根上下文指定争用的应用程序问题,并最终类似于重命名war文件只是为了获取上下文根。
它也是诱人的(看我在那里做了什么?)建议我安装多个版本的Tomcat监听独特的端口......但是这要求我的组织打开防火墙请求的复杂性不同的端口,我预计会有越来越多的这些应用程序弹出并共享这个Tomcat实例。 ( YAY表示单线程单点故障!)
什么关于......?
我还考虑过可以采用程序化方法向开发人员推荐使其更加无缝,但我不像Java DEV那样支持它的基础架构。 我愿意接受建议。
这是可能的......
完全有可能答案是瞪着我的脸,而我却看不到它,因为我一直盯着这个问题太长时间,或者从错误的角度来看问题。