让一个 Tomcat 支持不同域名访问不同项目的配置方法

本文介绍如何在单一Tomcat服务器上通过配置不同的虚拟主机,实现使用不同域名访问多个项目的详细步骤。通过修改server.xml文件,可以轻松实现多域名访问不同项目的需求。

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

让一个 Tomcat 支持不同域名访问不同项目的配置方法

这里以部署两个项目 test1 和 test2 为例,部署到同一个 Tomcat 中,实现用两个域名 www.test1.com 和 www.test2.com 分别访问这两个项目。

方法很简单,只需修改 server.xml 文件即可,步骤如下。

1. 把 test1 项目的WAR包文件 test1.war 放到 Tomcat 的 webapps 目录下。

2. 在 Tomcat 目录下创建一个名为 “webapps2” 的目录(与 webapps 是同一级目录)。
譬如:
# pwd
/apache-tomcat-8.5.34
# ls
... webapps  webapps2 ...

3. 把 test2 项目的WAR包文件 test2.war 放到 webapps2 目录下。

4. 编辑 server.xml 文件
先找到 <Host></Host> 标签:
...
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="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"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>
...

复制一份<Host></Host>放在原<Host></Host>后面(为了简洁,可以把注释部分删掉):
...
<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="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"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

</Host>

<Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>
...
用第1个 <Host></Host> 配置项目 test1 :
配置 “name” 属性为域名 “www.test1.com” ,还添加子标签<Context>并这样配置:<Context path="" docBase="../webapps/test1/"/> 。
<Host name="www.test1.com"  appBase="webapps" unpackWARs="true" autoDeploy="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"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
           
    <Context path="" docBase="../webapps/test1/"/>

</Host>

用第2个 <Host></Host> 配置项目 test2 :
配置 “name” 属性为域名 “www.test2.com” ,配置 “appBase” 属性为 "webapps2" ,并也要加子标签<Context>并配置:<Context path="" docBase="../webapps2/test2/"/> 。
<Host name="www.test2.com"  appBase="webapps2" unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    <Context path="" docBase="../webapps2/test2/"/>
</Host>

配置好后保存文件。

5. 重启 Tomcat 使配置生效
打开浏览器分别用不同域名访问项目,这样就实现了在一个 Tomcat 下用不同域名访问不同项目。如果要部署更多项目,操作同上,复制 <Host></Host> 标签,一个标签对应一个项目。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值