您的位置:首页 > 运维架构 > Tomcat

tomcat 多域名虚拟主机的一种最简化设置建议

2018-01-30 13:35 281 查看

一、需求

需要在同一台服务器上,用 tomcat 部署两个应用系统,都是基于 java 编写的。

希望让用户使用不同的域名访问应用,且都用80端口,避免用户输入端口号。

环境: win2008 x64,tomcat8

二、可行做法

从互联网资料上,可以找到以下几种做法:

1. 安装两个 tomcat ,分别设置不同启动端口,跑两个应用,然后用反向代理服务器(比如 nginx 或者 apache )实现不同域名解析到不同 tomcat 上

2. 在同一个 tomcat 下,修改 server.xml,设置两个 service 标签,用不同的监听端口区别开不同应用,然后在 host 内用不同域名与 appBase 区别开,然后用反向代理服务器实现80端口的服用

3. 在同一个 service 标签内,同一端口下,用多个 host 标签,同时实现多个虚拟主机。

三、实际操作

考虑到项目的访问量比较小,没必要用到反向代理,我们计划采用最为简单的设置模式,共两步骤。

1. 建立合理目录结构

在 tomcat 的 webapps 目录下,建立如下目录结构:

webapps
├── app1
│    └──ROOT
│        ├──index.jsp
│        └──...
│── app2
│    └──ROOT
│        ├──index.jsp
│        └──...
...


应用程序的所有内容,都放在相应的 ROOT 目录底下。

2. 修改 server.xml

在 tomcat 的 server.xml 文件中,修改 host 标签,用 name 与 appBase 结合,实现“不同域名访问位于同一 tomcat 服务器下的不同应用”的需求,内容如下:

<Host name="app1.domain.com" appBase="webapps/app1" unpackWARs="true" autoDeploy="true">
...
</Host>
<Host name="app2.domain.com" appBase="webapps/app2" unpackWARs="true" autoDeploy="true">
...
</Host>


Host 标签中间,并不需要使用 context 标签,也不用设置 webBase 属性。

这样部署之后,整个服务器的文件放置规范,配置简单,需要新增应用的时候,也非常便捷。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  tomcat 虚拟主机