虚拟主机是一种在一个web服务器上服务多个域名的机制,对每个域名而言,都好象独享了整个主机。实际上,大多数的小型商务网站都是采用虚拟主机实现的,这主要是因为虚拟主机能直接连接到Internet并提供相应的带宽,以保障合理的访问响应速度,另外虚拟主机还能提供一个稳定的固定IP。
1、建立两个Web项目
分别为s1、s2,其index.jsp分别显示“This is s1”,“This is s2”,在Tomcat目录下建立一个文件夹host,和webapps并级,把这两个应用发布到host目录下
2、设置本地主机域名
为了测试多域名指向一个IP能实现虚拟主机,本地测试时需要配置下Hosts,hosts文件在系统目录C:\windowS\system32\drivers\etc\下,如果是Win7,需要使用管理员身份打开编辑器才能修改。加入两行内容
复制内容到剪贴板代码:
127.0.0.1 s1.nowfox.com
127.0.0.1 s2.nowfox.com
3、修改Tomcat配置文件server.xml
server.xml的配置信息见tomcat的文档,我这里只说具体相关的
host (表示一个虚拟主机):
name 指定主机名
appBase 应用程序基本目录,即存放应用程序的目录
unpackWARs 如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序
Context (表示一个web应用程序,通常为WAR文件,关于WAR的具体信息见servlet规范):
docBase 应用程序的路径或者是WAR文件存放的路径
path 表示此web应用程序的url的前缀,这样请求的url为http://localhost/path/****
在server.xml里默认有一个Host节点,和它并级添加
复制内容到剪贴板代码:
<Host name="s1.nowfox.com" appBase="host/s1" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="." path="" reloadable="true" />
</Host>
<Host name="s2.nowfox.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.nowfox.com的appBase指向webapps,这样会造成重复载入应用
下面启动Tomcat服务
在浏览器中输入http://s1.nowfox.com/、http://s2.nowfox.com/即可看到效果