Tomcat 虚拟主机配置

转帖:http://www.cnblogs.com/taxuewuhen/archive/2012/04/01/2427896.html

一、网站系统的组成:

  一般情况下,只要在一台计算机上安装了WEB服务器软件,那么从功能上来讲,这台机器就可以称为WEB服务器。一个网站可大可小,WEB服务器功能可多可少,简单时,一个网站只需要一台WEB服务器就可以对外提供网页浏览服务了,但要是复杂的话,就需要多台WEB服务器组成的集群系统、负载均衡设备、具有缓存功能的代理服务器(可以多级,甚至WEB服务器端的缓存系统)、数据库集群系统等。如图下图所示:

www.sina.com.cn网站就是使用上图所示的服务器架构,不同地区的人访问www.sina.com.cn网站时访问的服务器是不一样的,如河南的用户访问www.sina.com.cn会访问放置在河南地区的区域代理服务器,而武汉的用户访问www.sina.com.cn则会访问放置武汉地区的代理服务器,各地区访问www.sina.com.cn的过程如下图所示:

为了能够让用户访问www.sina.com.cn站点时,不会感觉是在访问本地区的代理服务器,需要在DNS服务器中将www.sina.com.cn主机名指向所有的区域代理服务器的IP地址,当用户输入www.sina.com.cn访问站点时,会先到DNS系统中解析www.sina.com.cn主机名,DNS系统会返回就近的代理服务器的IP地址,这样用户的请求会发送到就近的代理服务器,只有当用户访问的信息在代理服务器中找不到,这时代理服务器才会到真正的www.sina.com.cn站点服务器获取页面并进行缓存,以供其他访问用户使用,大大提高访问效率,降低网络通信流量。

当用户浏览器通过DNS系统找到服务器后,会将主机名作为访问的一部分发送到服务器,如:www.sina.com.cn主机名作为HTTP请求的host的名称发送到服务器,WEB服务器接收到访问请求后,会根据主机名来找WEB服务器中的哪个站点(一个WEB服务器可以运行多个站点)来进行响应,使用不同的主机名才区分一个WEB服务器下多个站点的标示信息。

二、tomcat虚拟主机配置

  tomcat服务器中在 $CATALINA_HOME/conf/server.xml中配置设置<host>的name属性s来配置不同主机名对应的站点。

?
<Engine name= "Catalina" defaultHost= "localhost" >
<Realm className= "org.apache.catalina.realm.UserDatabaseRealm"
resourceName= "UserDatabase" />
<Host name= "localhost" appBase= "webapps"
unpackWARs= "true" autoDeploy= "true"
xmlValidation= "false" xmlNamespaceAware= "false" >
</Host>
<!--pei zhi zi ji de xu ni zhu ji www.mengjiangnan.uqc.cn unpackWARs shi fou mei ci jie ya war wen jian-->
<Host name= "www.mengjiangnan.cn" appBase= "webapps"
unpackWARs= "true" autoDeploy= "true"
xmlValidation= "false" xmlNamespaceAware= "false" >
<!-- docBase可以配置为相对路径:\Jquery -->
<Context path= "" docBase= "G:\dev\apache-tomcat-6.0.33\webapps\Jquery\" debug=" 1 " reloadable=" true " allowLinking=" true "></Context>
</Host>
</Engine>

  server.xml中<host>标签用于配置站点,一个<host>建立一个WEB站点,可以使用多个<host>配置多个站点,但同一个<Engine>中<host>的name不能相同,name属性对应该站点的主机名称,appBase="webappa"设置了一个路径,该路径将作为嵌套在<host>中<context>的属性docBase的基准路径,docBase可以是绝对路径也可以是相对于appBase的相对路径,如:docBase="Jquery\",当tomcat接受到一个请求,会取出主机名来跟<host>的name值来对应,来访问对应的context中docBase配置的站点,若没有找到对应的host,则会访问在<Engine>中defaultHost配置的默认站点,将defaultHost值设置为<Engine>中某个<host>的name值,则该host就会作为该Engine引擎的默认站点。当配置多个<host>时就不能使用IP来作为主机名来访问tomcat,因为Host的name值对应同一个IP,这时就不知道访问哪一个站点。

综上访问过程为:

  1.用户浏览器发送访问请求。

  2.DNS根据主机名获取IP地址,根据IP地址找到该WEB服务器。

  3.WEB服务器根据主机名匹配<host>找到要访问的站点。

三、配置主机名与IP的映射关系

  在建立基于主机名的虚拟主机时,除了在service.xml中配置主机名与站点的映射外,还要配置主机名与IP地址的映射,这样在网络中才会找到该WEB服务器。配置主机名与IP地址的映射有两种方式:1.通过DNS(域名解析服务器)系统来配置 2.通过在客户端本地Hosts文件中配置。Hosts文件可用于小型的企业内部网,而DNS用于大型网络服务(如:Internet上对外提供服务)。客户机会首先在本地Hosts文件中找主机名与IP的映射,若没有找到才会去DNS系统中去查找。

下面介绍在hosts文件中配置。在C:\Windows\System32\drivers\etc下找到Hosts文件,用EditPlus打开该文件会看到默认有127.0.0.1 localhost ,这时为什么我们访问http://localhost:8080/,下面我们在新的一行写127.0.0.1 www.mengjiangnan.com ,就建立起来127.0.0.1与www.mengjiangnan.com主机名的映射。

我们如上面图所示配置server.xml,就完成了虚拟主机的配置。启动tomcat,访问http://www.mengjiangnan.cn:8080/Jquery就可以访问Jquery站点了。

猜你喜欢

转载自huanglei7211.iteye.com/blog/1635323