虚拟WEB目录的概念及其原理
如果想让某台计算机上的一个目录内容,能被外面的web浏览器通过http协议访问,该怎么办呢?
首先要在这台计算机上安装和启动一个web服务器软件
其次还要将该目录映射成一个web站点目录。这个web站点目录通常称为虚拟目录。
一个web站点上只能有一个虚拟目录的根目录,其他的虚拟目录都必须是该目录的子目录。
一般根目录用“/”符号表示,根目录和该根目录下的子目录或资源文件也以“/”符号进行分割。
{
一个文件系统目录可以被映射成为多个虚拟Web目录
虚拟Web子目录名称可以是多级目录结构的形式
Tomcat按照最长路径匹配原则处理请求的URL
}
设置WEB站点的根目录
<Host>元素的appBase属性所设置的应用程序基准目录中的ROOT子目录
使用server.xml文件中的<Context>元素
<Contextpath="" docBase="d:\test" debug="0"/>
设置WEB站点的虚拟子目录
使用server.xml文件中的<Context>元素
<Contextpath="/it315" docBase="d:\myweb" debug="0"/>
特定目录中的xml文件中包含<Context>元素
Tomcat 4.x的<Tomcat主目录>/webapps目录
Tomcat 5.x的<Tomcat主目录>/conf/<引擎名>/<主机名>
<Host>元素的appBase属性所设置的应用程序基准目录中的含有WEB-INF/web.xml文件的子目录
<Host>元素的appBase属性所设置的应用程序基准目录中的war文件
部署描述符与目录的默认网页
部署描述符文件
<WEB应用程序>/WEB-INF/web.xml
<Tomcat主目录>/conf/web.xml
目录的默认网页文件
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
浏览器访问WEB资源的过程
URL
格式: http://IP地址(或主机名):端口号/目录名称/网页文件名称
举例: http://www.vshoping(192.168.0.1).tk/book/java.html
虚拟主机及实现原理
目的:
在一台计算机上创建多个WEB站点,并为每个WEB站点设置不同的主目录和虚拟子目录,每个WEB站点作为各自独立的网站分配给不同的公司或部门。
好处:
多个公司或部门的网站就可以共用同一台计算机,而用户感觉每个公司和部门都有各自独立的网站。多个没有实力在Internet上架设自己专用服务器的中小公司可以联合租用一台WEB服务器,对外提供各自的WEB服务而互不影响。
原理:
WEB服务器上的每个WEB站点必须设置有不同的标识信息
WEB浏览器发出的连接和请求信息中包含WEB站点的标识信息
WEB站点的标识信息:
IP地址、端口号、主机名
基于主机名的虚拟主机
根据请求的消息来实现server.xml中的设置,也就是<Host></Host>
基于端口号的虚拟主机
WEB浏览器要访问基于主机名的虚拟主机时,在访问URL中必须采用主机名,而不能采用IP地址。
在整个网络系统中建立主机名与IP地址的映射关系,即必须将主机名添加到名称解析系统。
使用客户机本地的Hosts 文件,例如,c:\winnt\System32\Drivers\Etc\Hosts
使用DNS(Domain Name System,域名系统)服务器
一个<Connector>元素用于配置一个对外的连接器,对于WEB服务器上的每一个监听端口号,都要使用一个单独的<Connector>元素。
一个<Connector>元素对应的连接器必须有一个相关的<Engine>元素,将一个或多个<Connector>元素与某个<Engine>元素相关联的方式就是将它们嵌套在同一个<Service>元素中。
<Servicename="…">
<Connectorport="…" …/>
<Enginename="…" >
<Hostname="…" >
<Context…>
</Context>
</Host>
</Engine>
</Service>
基于IP地址的虚拟主机
HTTP 1.0不支持Host头字段,在保证所有站点统一使用端口号80的情况下,人们早期只能采用不同的IP地址来建立虚拟主机。
HTTP 1.1可以使用不同的主机名来建立多个WEB站点后,虚拟主机业务提供商一般不再建立基于IP地址的虚拟主机。
Tomcat没有提供建立基于IP地址的虚拟主机方式。