Tomcat虚拟主机及Root Context配置

1.虚拟主机
对一个Tomcat,可以配置多台虚拟主机。简单地说,就是让一台服务器可以对应多个主机名。这在Tomcat中称之为Host。要求每个Host的Name必须唯一。
配置方法:
在$CATALINA_HOME/conf/server.xml中定义了所有的Host。Tomcat默认会建立一个localhost的虚拟主机,如下:
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false"> 
</Host>
其中,
appBase指定了该虚拟主机上应用的部署位置。一般填写相对于CATALINA_HOME的相对路径即可。
其他参数可以参考Tomcat文档。

如果需要建立其他虚拟主机,只需要仿照上例,声明其他不同name的Host即可。

2.Root context
在一个Host上,可以部署多个应用。每个应用都有不同的Context Path。Context Path会出现在用户访问该应用的URL中。例如, 如果指定了应用的Context Path为/ABC,该应用的URL可能就是http://localhost:8080/ABC,。自然有人会问,可不可以没有Context Path呢?我的理解是可以只有Root Context,即Context Path就是/。如此一来,上例中的URL就变成http://localhost:8080/。
配置方法:
在$CATALINA_HOME/conf/server.xml中,对于每个Host而言,都可以通过Context子元素指定其Root Context所在位置。如下:
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false"> 
<Context docBase="webapps/docs" path="/"
       privileged="true" antiResourceLocking="false" >
</Context>
</Host>
此处,就将该主机的Root Context指向了$CATALINA_HOME/webapps/docs。
有几点需要注意:
a.因为每个应用都需要有不同的Context Path区分,所以一般来说每个Host只有一个Root Context。
b.在Host中不指定Root Context时,Tomcat会自动将appBase下的ROOT(全大写)文件夹作为Root Context所指位置。这也是Tomcat刚安装时的设置。如果指定了Root Context,则需要将ROOT文件夹删除。因为Tomcat会优先使用ROOT文件夹。
c.在网上查询到,还可以在$CATALINA_HOME/conf/Catalina/localhost/ROOT.xml中指定localhost的Root Context,但是在Tomcat 6.0.26中没有实验成功。

posted on 2010-05-18 08:36  daition  阅读(5826)  评论(1编辑  收藏  举报

导航