Tomcat 虚拟主机配置

虚拟主机(Host) 就是让一台 Tomcat 服务器跑多个网站 / 多个域名,比如:
它们共用一个 Tomcat,但项目、目录、域名完全隔离
配置文件:conf/server.xml

一、先看懂默认虚拟主机(localhost

打开 server.xml,你会看到默认的 Host 配置:
xml
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
</Host>
  • name:域名(localhost = 本机)
  • appBase:项目存放目录(默认 webapps)
  • autoDeploy:自动部署

二、配置一个新虚拟主机(完整示例)

我们新增一个 www.test.com 站点:

1. 在 server.xml 里添加新 <Host>

直接复制这段,放在默认 Host 下面:
xml
<!-- 新增虚拟主机:www.test.com -->
<Host name="www.test.com" 
      appBase="D:/tomcat/testweb"  <!-- 项目存放目录(自己建) -->
      unpackWARs="true" 
      autoDeploy="true">

    <!-- 访问日志(可选,建议加上) -->
    <Valve 
        className="org.apache.catalina.valves.AccessLogValve"
        directory="logs"
        prefix="test_access_log"
        suffix=".txt"
        pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

2. 创建项目目录

新建文件夹:
plaintext
D:/tomcat/testweb/
把你的 WAR 包 / 项目放进去,和默认 webapps 用法一样。

三、配置本地域名映射(测试必做)

因为我们是本地测试,需要修改 hosts 文件

Windows

plaintext
C:\Windows\System32\drivers\etc\hosts
添加一行:
plaintext
127.0.0.1  www.test.com

Linux/Mac

plaintext
/etc/hosts
添加同上。

四、重启 Tomcat 完成!

现在访问:
plaintext
http://www.test.com:8080
就能访问到 testweb 目录下的项目,和默认网站完全隔离。

五、多域名同时运行(最终效果)

一台 Tomcat,同时跑 3 个网站:
xml
<!-- 默认主机 -->
<Host name="localhost" appBase="webapps" ...></Host>

<!-- 网站1 -->
<Host name="www.site1.com" appBase="D:/site1" ...></Host>

<!-- 网站2 -->
<Host name="www.site2.com" appBase="D:/site2" ...></Host>

六、最常用高级配置

1. 设置默认首页(ROOT 项目)

在 Host 里添加:
xml
<Context path="" docBase="ROOT" reloadable="true" />
把项目放到 appBase/ROOT 目录,直接访问域名即可。

2. 配置默认虚拟主机

修改最顶部的 <Engine>
xml
<Engine name="Catalina" defaultHost="www.test.com">
没有匹配的域名时,默认访问这个主机。

七、完整配置模板(直接复制)

xml
<Engine name="Catalina" defaultHost="localhost">

    <!-- 默认主机 -->
    <Host name="localhost" appBase="webapps" autoDeploy="true"></Host>

    <!-- 你的虚拟主机 -->
    <Host name="www.mydomain.com" appBase="D:/myweb" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve"
               directory="logs" prefix="mydomain_log" suffix=".txt" />
    </Host>

</Engine>

总结

  • 虚拟主机作用:一台 Tomcat 跑多个域名 / 网站
  • 配置位置:server.xml → <Host> 标签
  • 关键参数:name(域名)、appBase(项目目录)
  • 测试必须改:hosts 文件
上一篇 LSISAS2208卡硬盘后台格式化导致RAID组创建失败
下一篇 虚拟机内 NVIDIA 驱动安装失败 / 显示为基本适配器,如何排查与修复?