将根域直接指向上下文,将子域指向另一个上下文

时间:2010-07-13 07:33:04

标签: tomcat apache2

我有这样的情况,我想将我的根域,即www.abc.com指向tomcat中的上下文,* .abc.com指向tomcat中的另一个上下文。

目前www.abc.com abc.com和* .abc.com都指向我在tomcat中的ROOTcontext,但我想要

www.abc.com和abc.com指向ROOT和

* .abc.com到tomcat中的其他一些上下文。

1 个答案:

答案 0 :(得分:0)

这是一个旧的,但是自从我从谷歌的第一页到达这里,它值得一个答案。

我想最好的方法是将“VirtualHost”添加到你的httpd和“主机”中,添加到每个子域的tomcat的server.xml中。以此作为“HelloMultiWorld”示例:

<VirtualHost *:80>
  ServerName abc.com
  ServerAlias www.abc.com sd1.abc.com
  ...
  ProxyPreserveHost true
  ProxyPass / ajp://localhost:8009/
  ProxyPassReverse / ajp://localhost:8009/
  ...
</VirtualHost>

并且,在Tomcat的server.xml中:

<Engine defaultHost="localhost" ...>
  ...
  <Host name="localhost" appBase="webapps" ...>...</Host>
  <Host name="sd1.abc.com" appBase="webapps-sd1"...>...</Host>
</Engine>

显然,你需要一个带有自己的ROOT.war的“webapps”和“webapps-sd1”文件夹。

使用此配置,HTTPd将代理所有abc.com,www.abc.com和sd1.abc.com请求到Tomcat(使用AJP - 您也可以使用HTTP / 8080)。 Tomcat将收到带有“Host:xxx.abc.com”HTTP标头的请求(因为“ProxyPreserveHost”)。在server.xml中有多个“主机”,它将根据“主机”标头路由请求。所有未识别的主机都将路由到'defaultHost'。