同福

Tomcat虚拟主机配置的案例大全【20201103】

介绍

介绍

今天福哥来给大家讲解一下关于Tomcat服务器的虚拟主机的配置方法,前面福哥有一篇《Tomcat学习笔记》专门介绍Tomcat的知识的文章。不过,文章里面针对Tomcat的虚拟主机的部分介绍的不够详细,只有server.xml配置文件里面的各种的标签的用途的基本介绍,而这些标签怎么使用?在各种情况下如何组合?搭配之后的效果是怎么样?我们还不知道。

所以,福哥今天就通过一个一个的示例,让童鞋们对于Tomcat的虚拟主机的配置有一个详尽的认识。

示例

一个端口一个主机

首先我们先来一个单端口、单主机的配置,这是大部分情况的服务器环境的配置方式。

<!--
one port one host
-->
<Service name="service1">
  <Connector port="8081" protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8443" />
  <Engine name="engine1" defaultHost="localhost">
    <Host name="localhost"  appBase="onePortOneHost"
          unpackWARs="true" autoDeploy="true">
    </Host>
  </Engine>
</Service>

3e38e04a73c42213.jpg

一个端口多个主机

接下来我们配置一个单端口、多主机的配置,很多平台会采用这样的配置方式,一个平台会包括很多单独的项目,包括:www(门户)、news(资讯)、bbs(论坛)等等。

<!--
one port multi host
-->
<Service name="service2">
  <Connector port="8082" protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8443" />
  <Engine name="engine1" defaultHost="localhost">
    <Host name="localhost"  appBase="onePortMultiHost"
          unpackWARs="true" autoDeploy="true">
    </Host>
    <Host name="host1.tongfu.net"  appBase="onePortMultiHost1"
          unpackWARs="true" autoDeploy="true">
    </Host>
    <Host name="host2.tongfu.net"  appBase="onePortMultiHost2"
          unpackWARs="true" autoDeploy="true">
    </Host>
  </Engine>
</Service>

f29b1c35238ee2fa.jpge5bf2bdfdcce67c2.jpgcfa665610dffe1d8.jpg

多个端口多个主机

再来我们配置一个有着多端口、多主机的的配置,这种配置适用于大型的平台的情况,它的非80端口主机一般情况下是用来搭建内部使用的接口服务。

<!--
multi port multi host
-->
<Service name="service5">
  <Connector port="8085" protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8443" />
  <Engine name="engine1" defaultHost="localhost">
    <Host name="localhost"  appBase="multiPortMultiHost8085"
          unpackWARs="true" autoDeploy="true">
    </Host>
  </Engine>
</Service>
<Service name="service6">
  <Connector port="8086" protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8443" />
  <Engine name="engine1" defaultHost="localhost">
    <Host name="localhost"  appBase="multiPortMultiHost8086"
          unpackWARs="true" autoDeploy="true">
    </Host>
  </Engine>
</Service>

4f394ecfa9787674.jpgf1261852ad71c326.jpg

多个虚拟目录

最后我们学习一下如何在主机里面配置虚拟目录,这种配置适用于一个大型平台部署在一个域名下面的情况,多个模块通过虚拟目录的方式部署在根主机下面。

<!--
multi context
-->
<Service name="service8">
  <Connector port="8088" protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8443" />
  <Engine name="engine1" defaultHost="localhost">
    <Host name="localhost"  appBase=""
          unpackWARs="true" autoDeploy="true">
      <Context path="" docBase="oneHostMultiContext" privileged="true">
      </Context>
      <Context path="/context1" docBase="oneHostMultiContext1" privileged="true">
      </Context>
      <Context path="/context2" docBase="oneHostMultiContext2" privileged="true">
      </Context>

    </Host>
  </Engine>
</Service>
  • path设置为“空”就是指向主机根目录

  • path参数不能以“/”结尾

  • docBase参数实际上是“appBase”+“docBase”的组合。如果Context在Tomcat根目录的话,那么appBase就需要留空。

  • 每个Context都会受Host的设置影响,包括:unpackWARs、autoDeploy

5d388932852e79f5.jpgfbbd4af18ee99c03.jpga9bd9c3fe155091b.jpg

总结

福哥今天带着大家学习了在Tomcat服务器里进行虚拟主机和虚拟目录的配置的技巧,给出了很多配置的案例的配置代码,基本可以满足你的所有情况了。

5. P.S.

微信公众号的文章发出去之后是不能编辑的,但是福哥偶尔会修复一些描述不到位、示例不正确、结构不清晰等等的文章错误,这些只能在网站上才能看到最新版本内容,望大家知晓~~