Tomcat学习笔记 虚拟主机

本文介绍如何在Tomcat中配置三种类型的虚拟主机:基于主机名、基于端口号和基于IP地址。通过修改server.xml文件及设置Hosts文件,实现不同虚拟主机的部署与访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基于主机名的虚拟主机

网络环境:

1. 浏览器访问基于主机名的虚拟主机时,访问URL必须采用主机名,不能使用IP地址

2.整个网络系统中必须建立主机名与IP地址的映射关系 

  2.1使用本地  Hosts 文件建立主机名与IP的映射关系(C:\Windows\System32\drivers\etc\Hosts)

        127.0.0.1              www.88181.com

        127.0.0.1              www.idcfree.com

       2.2 使用DNS (要钱的)

在设置好Hosts 文件后使用命令行ping localhost  和www.idcfree.com  都能ping  通

创建两个虚拟主机的虚拟目录结构如下:

F:\web

|———+ VM1

|—————+ROOT

|————————+WEB-INF

|————————+index.html

|———+ VM2

|—————+ROOT

|————————+WEB-INF

|————————+index.html

修改 server.xml 文件

添加以下代码直 server.xml 文件的<Engine> 元素中

[html]
  1.       <Host name="www.88181.com"  appBase="F:\web\VM1"  
  2.             unpackWARs="true" autoDeploy="true" />  
[html]
  1.       <Host name="www.idcfree.com"  appBase="F:\web\VM2"  
  2.             unpackWARs="true" autoDeploy="true" />  

测试:

1.  重启Tomcat

2.  浏览器测试:

URL:http://www.88181.com:8080/index.html

URL:http://www.idcfree.com:8080/index.html

二、基于端口号的虚拟主机

配置原理: 

1.  一个<Connector> 元素用于配置一个对外的连接器,对于Web服务器的每一个监听端口号,都要配置一个独立的<Context>元素

2.   一个<Connector> 元素对应的连接器必须有一个<Engine> 元素关联

3.   将一个或多个<Context> 元素与<Engine> 元素关联的方式:将<Context> 元素与<Engine> 元素嵌套在同一个<Service> 元素中

 配置方法:

在 server.xml 文件 的  <Server> 元素里面添加另一个 <Services>  元素

[html]
  1.   <Service name="secend-serv">  
  2.    <Connector port="80protocol="HTTP/1.1"  
  3.                connectionTimeout="20000"  
  4.                redirectPort="8443" />  
  5.                  
  6.     <Engine name="Catalina" defaultHost=www.88181.com>  
  7.        
  8.       <Host name="www.88181.com"  appBase="F:\web\VM1"  
  9.             unpackWARs="true" autoDeploy="true" />  
  10.               
  11.       <Host name="www.idcfree.com"  appBase="F:\web\VM2"  
  12.             unpackWARs="true" autoDeploy="true" />    
  13.                
  14.     </Engine>         
  15.   </Service>  

注意:

1.   <Service>  元素的 name  属性名称必须与原 <Service> 名称不同,因此修改为:secend-serv

2.   <Engine>元素的 port  属性修改为  80(或者其他你想要的不被占用的端口)

3.   <Engine>元素的 defaultHost 属性修改为所包含的一个 <Host> 属性的 name 属性值,我选用  www.88181.com

4.   此部分我没有测试成功,正在尝试中……

三、基于IP地址的虚拟主机

 1.    HTTP 1.0 不支持Host 字段,在站点统一使用80 端口时,人吗只能采用不同的IP地址来建立虚拟主机

缺点:每个虚拟主机占用一个IP��IP消耗严重

 2.    HTTP 1.1 可以使用不同的主机名建立多个WEB站点,所以提供商一般不再建立基于IP地址的虚拟主机服务

 3.    Tomcat 不提供基于IP地址的虚拟主机方式  

 

张孝祥老师的测试方式如下(我用下面方法无法测试,不知道为什么):

1. CMD 命令行下运行:telnet   localhost  8080

2. Ctrl  +  ]   , 然后回车

3.  GET   /test.html    HTTP/1.1

     Host:主机名

说明:主机名若不写,默认为localhost

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值