一、什么是虚拟主机

一台物理机上搭建多个web站点,每个web站点独立运行,互不干扰,这些站点就是"虚拟主机"。

虚拟主机的实现方式:

1、基于主机名的虚拟主机:多个域名解析到同一个IP地址,在WEB服务器里添加多个站点,每个站点设定一个主机名。HTTP协议请求里包含了主机名信息,当WEB服务器收到访问请求时,就可以根据不同的主机名来访问不同的网站。

步骤:

a、配置域名与Ip的映射管理(对于本地局域网我们使用在host文件中添加;对于大型网络或者外网网络则需要配置DNS服务器中Ip地址与域名的映射关系)

在C:\Windows\System32\drivers\etc\hosts文件末尾添加:

127.0.0.1 www.jalja1.org127.0.0.1 www.jalja2.org

b、配置server.xml

复制代码

        
            
                    
            
        

复制代码

c、测试

http://www.jalja1.org:8080/

http://www.jalja2.org:8080/

2、基于端口号的虚拟主机:一个IP地址,通过不同的端口实现不同网站的访问。

步骤:在server.xml 中 设置两个service组件

复制代码

  
    
    
    
      
        
              
            
                  
    
    
    
      
        
              
            
              

复制代码

http://www.jalja1.org:8888/

http://www.jalja1.org:8080/

 

3、基于IP地址的虚拟主机:服务器使用多网卡配置多个IP地址,然后配置WEB服务器,把多个网站绑定在不同的IP上。(该方式浪费Ip资源,tomcat不支持该方式)

 

二、tomcat目录结构:

bin:tomcat启动关闭脚本文件。

conf:tomcat各种配置文件。其核心配置文件:

  1、server.xml 配置与server相关信息

  2、web.xml web应用(一个web应用相当于一个站点)

  3、tomcat-users.xml 配置tomcat相关信息(tomcat用户名 密码 权限)

  
  

lib:tomcat启动依赖的jar包

logs:tomcat日志

temp:tomcat运行是产生的临时文件

webapps:web应用所在的目录,即提供外界访问的web资源存放目录。

work:tomcat工作目录,主要用于存放jsp被访问后生成对应的servlet文件以及class文件。

 

三、tomcat处理HTTP请求的过程

1、tomcat各个组件的关系(tomcat7)

复制代码

  
  
  
  
  
  
  
        
  
  
        
        
        
              
                  
                            
                  
                        

复制代码

-          Server  server元素是JVM的入口点,整个配置文件只有一个,因为server不是容器(container),因此不能嵌套子组件.server在某一指定的端口监听shutdown命令.server可以包含一个或多个service实。

-          Service service有共享同一个Container的一个或多个Connectors组成,一般Service就是一个Engine,但没有明确规范要求如此.因为Service不是一个Container,因此不能在里面嵌套子组件(比如Loggers/Valves)。

-          Connector connector就是一个Tomcat与客户端的连接,Tomcat有两种典型的Connector:http,JK2.http connector监听来自Browser的连接(通常在我们熟悉的8080端口),JK2.来自其他WebServer的请求(默认在8009端口监听)。Connector会把获得的请求交给Engine处理。

-          Engine Engine下可以配置多个虚拟主机Virtual Host,每个虚拟主机都有一个域名当Engine获得一个请求时,它把该请求匹配到某个Host上,然后把该请求交给该Host来处理Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给该默认Host来处理。

-          Host host代表一个虚拟主机,默认是localhost,host下可以部署多个web application,在我们实际应用中一般要考虑问题的对象就是host。

-          Context  context代表一个WEB应用

2、请求处理流程

 

处理流程:用户发送请求到web服务器,该请求会被正在监听的Connector连接器接收,并把该请求交给Service下的Engine来处理,并等待Engine处理的结果。Engine获得请求后会根据请求的主机信息来匹配相应的Host主机,Host主机会根据请求的路径匹配对应的Context,Context web应用匹配上之后就构建request、response请求对象,调用指定的Servlet来处理请求。请求处理完成后会将response对象返回给Host主机,Host主机将response对象返回给Engine引擎,Engine再将response对象返回给Connector链接器,最后Connector连接器将response返回给浏览器。