我们有一个名为 X 的互联网应用程序正在被一个名为 Y 的新应用程序取代。
我们使用 Apache 前端的 Tomcat 实例来为 X 和 Y 提供服务,并通过 mod_jk 进行通信。一个 Tomcat 托管 X,另一个托管 Y。
X 和 Y 已经安装在我们的生产服务器上 - X 正在由我们的客户使用,而 Y 正在进行最终测试:
JkMount /x loadbalancer-x
JkMount /x/* loadbalancer-x
JkMount /y loadbalancer-y
JkMount /y/* loadbalancer-y
(让我们忽略这个通过隐蔽性来实现安全性的方面吧!)
当 Y 投入生产时,有没有办法将旧的 URL 映射到新的应用程序,这样它www.mysite.com/x
就会指向新的应用程序而不是旧的应用程序。
答案1
如果在 loadbalancer-y 上部署了一个名为 x 的应用程序,那么它将起作用。这就是问题所在 - 新应用程序使用不同的名称,但老板希望 URL 保持不变。我正在尝试找到一种方法来告诉 JKMount 在 URL X 请求时请求应用程序 Y。
这就是为什么Context
元素存在。
将
/x
URL 前缀指向新的 workerloadbalancer-y
:JkMount /x loadbalancer-y
假设新应用程序的名称为,在您的元素中
newname
创建一个,如下所示:Context
<Host>
<Host name="your.domain.name" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="/x" docBase="newname"/> </Host>
答案2
只指向JkMount /x loadbalancer-y
不行吗?
答案3
与其全局地进行 JkMount,为什么不在 httpd 中创建一个 /x 目录条目并只使用 JkMount loadbalancer-y,然后将 loadbalancer-y 指向实际的应用程序而不是 tomcat 根目录。