如何理解tomcat的server.xml中host、context的标签配置

本文详细介绍了Tomcat中host标签的配置方法及各个属性的作用,并提供了具体的配置步骤与示例。

              网上有很多tomcat目录下server.xml的配置的文章,但是对于初学者来说,如何理解host的标签的配置内容确实一下转不过弯。至少本人就是这个傻样。

    我希望我能帮助一些初学者去理解。先了解配置步骤,再理解配置的目的。

           首先,host标签的意思,根据大家的普遍意思,它表示“虚拟主机”的意思。而虚拟主机在我理解就是实际主机IP经过DNS解析后的普通文字。

         

   
<!--server.xml中host的示例配置如下-->

 <Host appBase="D:\test" autoDeploy="true" name="www.test.com" unpackWARs="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->
        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/>
          
          
           <Context docBase="index" path="" reloadable="true" />
<Context docBase="E:\test\app2" path="/app2" reloadable="true" />
          <Context docBase="app3" path="/app3" reloadable="true" source="org.eclipse.jst.jee.server:download"/>

 </Host>


        
各个标签的意义:  
  
appBase:顾名思义,就是程序基地的意思,也是是存放应用程序的路径,类似于tomcat默认的webapps,当自定义host标签时,这个值是可以自定义的绝对路径

aotuDeploy:是否设置程序自动装载。不多解释

name:你的主机名,根据需要任意命名。

unpachWARs:是否自动解压war包。true值时,appdase下打成war包的项目会在tomcat启动时自动解压

Context:配置上下文,也就是对应主机下的具体子项目。
         docBase指定项目的位置,可以是相对appBase的路径,也可以是绝对路径。如果使用相对appBase路径的位置,则直接写应用文件夹名字即可;
                否则应该写绝对位置,如:E:\test\app1
path:设置该项目访问的路径名,如:/app1 .如果path为""--即空字符串,则访问该主机时默认访问该path所在的context元素下docBase所指定的项目,
path值为""的context只能有一个。
        source:没有深究,大概意思应该是来源于某个ide。






         了解完上诉意思之后,就可以配置了。

        步骤1配置tomcat安装目录下的conf目录下的server.xml文件,直接按照上诉说明配置,保存即可。

        步骤2:在C:\Windows\System32\drivers\etc 路径下找到名为hosts的文件,注意不是hosts.txt,是无后缀名的hosts。

                      用记事本打开,在最后一行添加,    域名(主机名)-------ip的映射,如,127.0.0.1       www.test.com   ,保存。

                     保存不了? ,那是因为你的权限不够,参考: http://jingyan.baidu.com/article/624e7459b194f134e8ba5a8e.html

                        注意:映射名应该与之前配置serverxml文件中的host配置中的name值一致,否则配置无效; 行首不能有#,其代表注释。

         完成以后,如果按示例配置,即可通过主机名 www.test.com访问了。

                          www.test.com:8080:访问index项目

                         www.test.com:8080/app2:访问app2项目

                         www.test.com:8080/app3:访问app3项目

               PS: 了解映射:      127.0.0.1(映射前)-------------ip地址不好记----》dns--(本地或英特网)域名解析设备映射--------------------www.test.com(映射后)

                    

        总结:

        host是什么:

             多个子项目组成的大项目,他是一个功能完整、能实现实际业务完整性的项目,此时需要使用一个主机这样的逻辑单元来管理。显像的说,我希望这些业务由一台电脑(假设)来完成,此时这样的电脑就叫主机,这个主机的标识就是主机名---域名。比如淘宝,他可以买东西、买东西,浏览东西,这些完整的实际业务的完成,实际可以简单的理解为通过 www.taobao.com来完成,也可以叫这台主机为www.taobao.com。

         什么时候要配置多个host: 

                  开发时可以用来测试;上线时可以分离完整的实际业务,方便管理。如:淘宝、支付宝的分离,他们都有完整(是否完整由人自定义)的业务功能。

                         

         



          


### Tomcat `server.xml` 中 Host 配置示例 在 Tomcat 的 `server.xml` 文件中,可以通过 `<Host>` 节点来定义虚拟主机及其相关参数。以下是关于如何配置 Host 及其访问路径的详细介绍。 #### 1. 基本结构 `<Host>` 元素通常位于 `<Engine>` 和 `<Service>` 元素内部。它表示一个虚拟主机,并允许通过域名或 IP 地址区分不同站点的内容。以下是一个基本的 `<Host>` 配置示例: ```xml <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- Context Configuration --> </Host> </Engine> </Service> ``` 上述代码片段展示了默认情况下 Tomcat 如何配置本地主机 (`localhost`) 并为其分配应用基础目录 (`appBase`)。 #### 2. 主要属性说明 - **name**: 定义虚拟主机名称,通常是 DNS 名称或 IP 地址。 - **appBase**: 应用程序的基础目录,默认为 `webapps`。此目录下的 `.war` 或解压后的应用程序会被自动部署[^1]。 - **unpackWARs**: 如果设置为 `true`,则会将 WAR 文件解压缩到磁盘上。 - **autoDeploy**: 启用动态部署功能,在运行时检测新应用并将其部署。 #### 3. 自定义上下文 (Context) 配置 为了更灵活地管理 Web 应用程序,可以在单独的 XML 文件中定义 `<Context>`,而不是直接嵌入到 `server.xml` 中[^2]。例如: 假设有一个名为 `myApp` 的应用程序,希望将其映射到 `/customPath` 访问路径,则可以创建如下文件: - 文件名:`$CATALINA_HOME/conf/Catalina/localhost/myApp.xml` 内容如下: ```xml <Context path="/customPath" docBase="path/to/war/or/directory" reloadable="true"/> ``` 其中: - **path**: 设置 URL 上下文路径,即浏览器访问地址的一部分。 - **docBase**: 指定实际的应用程序根目录或 WAR 文件的位置。 - **reloadable**: 是否启用热重载机制,当类发生变化时自动重新加载应用。 注意:如果未显式声明 `path` 属性,Tomcat 将使用 WAR 文件的名字作为默认路径。 #### 4. 关于安全性与优先级 为了避免修改核心配置文件带来的风险,推荐将自定义的 `<Context>` 放置于独立文件夹而非直接写入 `server.xml`。这样做不仅提高了可维护性,还解决了因服务重启才能生效的问题。另外,如果有重复定义的情况发生,外部配置将会覆盖掉内置的设定;除非设置了 `override="false"` 来阻止这种行为。 --- ### 连接器 (Connector) 额外补充 除了 Host 外部环境之外,还需要关注 Connector 的部分,因为它决定了客户端请求进入的方式和支持协议类型[^3]。比如 HTTP 协议对应的典型端口号就是 8080。 最后提醒一点,确保 shutdown 字符串被正确定义以防意外关闭操作[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值