ITEEDU

Tomcat虚拟主机配制

虚拟主机是一种在一个web服务器上服务多个域名的机制,对每个域名而言,都好象独享了整个主机。实际上,大多数的小型商务网站都是采用虚拟主机实现的,这主要是因为虚拟主机能直接连接到Internet并提供相应的带宽,以保障合理的访问响应速度,另外虚拟主机还能提供一个稳定的固定IP。也就是猛工说的主机头。

建立两个Web项目

分别为s1、s2,其index.jsp分别显示“This is s1”,“This is s2”,在Tomcat目录下建立一个文件夹host,和webapps并级,把这两个应用发布到host目录下

设置本地主机域名

为了测试多域名指向一个IP能实现虚拟主机,本地测试时需要配置下Hosts,hosts文件在系统目录C:\WINDOWS\system32\drivers\etc\下,如果是Win7,需要使用管理员身份打开编辑器才能修改。加入两行内容

127.0.0.1 s1.iteeducom
127.0.0.1 s2.iteedu.com

修改Tomcat配置文件server.xml

server.xml的配置信息见tomcat的文档,我这里只说具体相关的

host (表示一个虚拟主机):

  1. name 指定主机名
  2. appBase 应用程序基本目录,即存放应用程序的目录
  3.  unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序

Context (表示一个web应用程序,通常为WAR文件,关于WAR的具体信息见servlet规范):

  1. docBase 应用程序的路径或者是WAR文件存放的路径
  2. path 表示此web应用程序的url的前缀,这样请求的url为http://localhost/path/****

在server.xml里默认有一个Host节点,和它并级添加

<Host name="s1.iteedu.com" 
 appBase="host/s1"
 unpackWARs="true"
 autoDeploy="true"
 xmlValidation="false"
 xmlNamespaceAware="false">
              <Context docBase="." path="" reloadable="true" />
</Host>
<Host name="s2.iteedu.com"
 appBase="host/s2"
 unpackWARs="true"
 autoDeploy="true"
 xmlValidation="false"
 xmlNamespaceAware="false">
             <Context docBase="." path="" reloadable="true" />
</Host>

注意:在这里,我把两个应用发布到host目录下了,没有发布到webapps下面,并且指定appBase时是直接指到host/s1、host/s2了,如果把s1、s2放到webapps下,那么就需要把s1.thunisoft.com的appBase指向webapps,这样会造成重复载入应用   下面启动Tomcat服务 在浏览器中输入http://s1.iteedu.com/、http://s2.iteedu.com/ 即可看到效果

OK,综上,可以看到我们只要添加一节Host即可。