一、需求
在项目经验中,主机的TCP协议(HTTP协议是基于TCP/IP协议)的80端口是稀缺资源,很多情况下不可能为一个应用而去申请一台主机(不管是物理主机还是虚拟服务器).这时候很多的Java Web应用会放到一个拥有TCP的80端口的Tomcat下面,由于每个应用都要有自己的域名地址(这里域名后面肯定不能有端口),所以需要我们配置该Tomcat来支持一个IP对应多个域名,甚至一个应用对应多个域名.
二、具体解决方案和步骤:
我们已经有一个安装好的Tomcat6.0,并且在tomcat目录下自行建立了一个webapps2目录,在webapps和webapps2目录下分别都放置了一个测试项目"6"和"7".
1、修改tomcat 6.0的默认访问端口(在conf目录的server.xml中),将8080改为80.
2、修改tomcat 6.0的虚拟主机配置(在conf目录的server.xml中).
<Engine name="Catalina" defaultHost="www.6.com">
<Host name="www.6.com" appBase="webapps" unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" reloadable="true" docBase="6" workDir="" />//如果不配置context则默认访问ROOT
</Host>
<Host name="www.7.com" appBase="webapps2" unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" reloadable="true" docBase="7" workDir="" />
</Host>
1.Engine的dafaultHost:表示访问该tomcat默认进入的主机,注意一定不能是localhost,不然别人通过你的ip访问,就会默认进入tomcat的管理界面.
2.Host的name:表示该主机绑定的域名,如果绑定localhost则可以通过在浏览器中输入localhost访问该Host.
3.Host的appBase:表示该主机绑定的文件存放路径,可以使用相对路径或绝对路径.
4.<context>中path相当于虚拟目录名字,而docbase则是具体的文件位置.
3、最后在hosts文件中进行虚拟的DNS映射:
127.0.0.1 www.6.com
127.0.0.1 www.7.com
127.0.0.1 7.com
这时就可以通过curl http://www.6.com/访问webapps2目录下的目录名称为"6"的工程,通过curl http://www.7.com/访问webapps2目录下的目录名称为"7"的工程了.
ps:apache服务器虚拟主机设置
http://www.cnblogs.com/hi-bazinga/archive/2012/04/23/2466605.html.