本文主要讨论tomcat下多host域名设置、默认应用设置,设置默认应用时经常出现的Tomcat启动应用会被加载2次问题处理,如何配置多域名指向同一个WEB项目。文中使用的软件环境为:
1)pc:mac 10.12.6,jdk:1.8
2)tomcat:8.0.52,端口号:8080
一、默认应用设置
假设有一web项目,其项目名称为web-demo,发布到tomcat的webapps下之后,其context为/web-demo,访问http://localhost:8080/web-demo,即可出现该项目的首页。通常我们希望访问http://localhost:8080即可实现web-demo项目的快速访问,为此需要将web-demo设置为默认应用。
1、设置context path="" docBase="web-demo"(不推荐)
修改conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="web-demo" />
</Host>
这种方式可能是大家baidu能见到最多的一种实现方式啦,但是有问题,应用被加载了2次,对应两个context:
1)/,系设置context path="" ...所致,即可以访问http://localhost:8080;
2)/web-demo,系默认加载webapps应用web-demo所致,即访问http://localhost:8080/web-demo也可以;
2、覆盖ROOT应用(推荐)
webapps目录下,有一个tomcat默认应用ROOT,那么只要web-demo.war解压时可以自动解压到ROOT目录即可实现tomcat去掉项目名称访问,设置如下:
修改conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="wars/web-demo" />
</Host>
注意:
1)webapps目录下,新建wars文件夹,将web-demo.war应用发布到wars文件夹下;
2)启动tomcat前,先把webapps目录下的ROOT文件夹删除掉,否则不会解压到ROOT目录下;
二、多Host配置,修改conf/server.xml,如下所示
<Host name="host1.lmlxj.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="wars/web-demo" />
</Host>
<Host name="host2.lmlxj.com" appBase="host2" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="wars/web-demo" />
</Host>
如上所示,在一个tomcat下,配置了2个host主机:
1)host1.lmlxj.com, 对应webapps目录下的/wars/web-demo应用,并且设置了默认应用,因此访问http://host1.lmlxj.com:8080即可
2)host2.lmlxj.com,对应host2目录下的/wars/web-demo,并且设置了默认应用,因此访问http://host2.lmlxj.com:8080即可
三、多域名指向同一个web项目,修改conf/server.xml,配置如下
<Host name="host1.lmlxj.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>host2.lmlxj.com</Alias>
<Context path="" docBase="wars/web-demo" />
</Host>
http://host1.lmlxj.com:8080,http://host2.lmlxj.com:8080访问的是同一个web应用。
备注:与上述多Host配置区别是多了Alias别名,即映射其它域名,有多个就配置多个Alias。
Java开发环境及服务器配置其它相关文章: