一提到配置虚拟主机,是否都想到的是apache 呢?
事实上,tomcat作为优秀的开源web服务器,也可以配置虚拟主机。而且方法并不复杂。
1、配置host元素
在%CATALINA_HOME%/conf下找到server.xml,找到host元素标签,在</Host>标记,讲一个正确的host的配置放在这之后(即,一个engine可以包括多个host)
比如:
<Host name="www.test.com.cn" debug="0" appBase="webapps2"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Logger className="org.apache.catalina.logger.FileLogger"
directory="logs" prefix="www.test.com.cn." suffix=".txt"
timestamp="true"/>
</Host>
需要注意的是,appBase这里用的是webapps2,主要是为了不受webapps下面太多应用的混淆。
2、配置web环境
在%CATALINA_HOME%/conf/Catalina目录下,平常只见localhost目录。仔细回顾一下就发下,这里的localhost就对应这tomcat默认配置的host的name。
那么既然我们增加了一个host,则需要增加针对这个host的一个web context的配置,步骤如下
创建目录%CATALINA_HOME%/conf/Catalina/www.test.com.cn
在%CATALINA_HOME%/conf/Catalina/www.test.com.cn目录下编写myweb.xml
这个文件的内容可以参看tomcat的配置。
3、测试
这样做好之后,通过www.test.com.cn访问本机肯定是不行的。因为这个域名还没有注册呢。但是并不是非得到官方注册才能进行测试。
对于windows用户来说,以xp为例:
找到 /WINDOWS/system32/drivers/etc,此目录下有文件,名为hosts,此文件没有扩展名。如果目录下没有此文件,可以收工创建一个。
打开,再里面加入 127.0.0.1 www.test.com.cn保存即可。
这时,启动tomcat,就可以通过www.test.com.cn 这个域名访问了。
【原理】根据Windows系统规定,在进行DNS请求以前,Windows系统会先检查自己的Hosts文件中是否有这个地址映射关系,如果有则调用这个IP地址映射,如果没有再向已知的DNS服务器提出域名解析。也就是说Hosts的请求级别比DNS高。
4、注意事项
在server.xml中的localhost 这个host配置还存在的时候多个虚拟主机是不行的,因为还可以通过ip来访问应用的。所以
如果是正式的生产环境,需要将默认的localhost从server.xml文件中删除。