You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Tomcat 9不同应用映射到不同域名根路径且隐藏应用名

Tomcat 9 多域名映射不同根应用配置方案

完全不需要额外部署反向代理服务器,仅修改Tomcat核心配置即可实现需求,具体步骤如下:


1. 核心配置逻辑说明

通过配置多台虚拟主机(<Host>节点),分别绑定不同域名,再将对应应用设置为该虚拟主机的根应用(上下文路径为空),即可隐藏URL中的应用名。


2. 具体配置步骤

2.1 编辑Tomcat配置文件

找到Tomcat安装目录下的conf/server.xml文件,定位到<Engine>节点,原有默认Host节点保留(用于支撑原来的my_xyz.com访问),新增两个虚拟主机配置,以下提供两种可选实现方案:

方案A:独立部署目录(更推荐,隔离性更强)

  • 先创建两个独立的应用部署目录,比如webapps_other和webapps_yet
  • 将App1的war包重命名为ROOT.war放入webapps_other目录,App2的war包重命名为ROOT.war放入webapps_yet目录
  • 在server.xml的<Engine>节点内添加如下配置:
<!-- 对应other_xyz.com 映射App1 -->
<Host name="other_xyz.com"  appBase="webapps_other"
      unpackWARs="true" autoDeploy="true">
</Host>

<!-- 对应yet_xyz.com 映射App2 -->
<Host name="yet_xyz.com"  appBase="webapps_yet"
      unpackWARs="true" autoDeploy="true">
</Host>

方案B:复用现有应用路径(无需移动原有应用文件)

如果不想改动原有App1、App2的部署位置(仍放在默认webapps/App1、webapps/App2目录下),可以直接在Host节点内配置<Context>指定根应用路径:

<!-- 对应other_xyz.com 映射App1 -->
<Host name="other_xyz.com"  appBase="webapps"
      unpackWARs="true" autoDeploy="false">
  <Context path="" docBase="App1" reloadable="true"/>
</Host>

<!-- 对应yet_xyz.com 映射App2 -->
<Host name="yet_xyz.com"  appBase="webapps"
      unpackWARs="true" autoDeploy="false">
  <Context path="" docBase="App2" reloadable="true"/>
</Host>

注意:该方案需要将autoDeploy设为false,避免Tomcat自动识别App1/App2目录生成带应用名的上下文路径,导致重复部署。

2.2 重启Tomcat生效

配置修改完成后,执行Tomcat安装目录下的bin/shutdown.sh(Windows为bin/shutdown.bat)停止服务,再执行bin/startup.sh(Windows为bin/startup.bat)启动服务即可生效。


3. 注意事项

  • 确保你的服务器DNS解析已经将other_xyz.com、yet_xyz.com都指向当前Tomcat服务器的公网IP
  • 应用内部不要硬编码带有/App1、/App2前缀的资源路径,建议使用相对路径或动态获取上下文路径的接口生成路径,避免资源加载失败

内容的提问来源于stack exchange,提问作者AhmadWabbi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:48:03