问题背景:
在常规情况下,如果我们部署2个用到Tomcat中,只能将一个应用命名为ROOT,在做了域名-IP的映射之后,我们可以通过类似http://www.jangle.xyz的方式访问该应用。
但如果我们添加一个新的应用:如hello应用, 常规的,我们将通过http://www.jangle.xyz/hello 的方式访问这个应用服务器。
由于域名映射不能带目录, 即:即时做了 hello.jangle.xyz 也不能映射至 123.12.32.45/hello 来实现对应关系。
解决方案:
如果希望实现 hello.jangle.xyz 映射至 123.12.32.45 并定位到 hello应用 ,并且
www.jangle.xyz 也映射至123.12.32.45 并定位到ROOT应用。 那么Tomcat提供Host的配置方式,实现这样的需求。
参考:Tomcat的总体架构概览2(v8.5)(用server.xml的视角解读)
我们在server.xml中,找到Engine节点下的Host节点, 编写一个Host的兄弟节点(即Engine的子节点),如下:
<Host name="hello.jangle.xyz" >
<Context docBase="D:/jangle/hello" path="/"></Context>
</Host>
docBase 是应用的绝对路径, path="/" 表示顶级路径。 这样,我们就可以使用地址http://hello.jangle.xyz 访问到 123.12.32.45的hello项目, 并且 http://www.jangle.xyz 所访问的ROOT项目不受影响。
在<Host>中添加<Alias>,设置别名,即实现多个域名对应一个主机。
<Host ...>
<Alias>blog.jangle.xyz</Alias>
</Host>