nginx80端口转发到多个tomcat

前言

之前有个需求,一个tomcat里面放置了多个项目,但是每次部署都得重启一个tomcat,导致多个项目都得重启。

怎么解决呢:

思路: 配置多个tomcat,每个tomcat里面放置一个项目就不会相互干扰了。
具体做法1: Linux上安装多个tomcat,但是这样得总修改tomat的配置文件,烦。
做法2(推荐): 基于docker,docker部署多个tomcat映射不同的端口就好了,不用每次都修改配置文件,然后tomcat向外映射logs,和webapps目录就可以了。

为啥使用nginx的80端口转发这几个tomcat呢?

因为做的微信项目,我的域名映射的是80的端口,必须使用80访问各个tomcat的项目,所以就有这个需求。

1.linux安装docker

2.docker安装nginx和映射外部文件

https://blog.csdn.net/baidu_21349635/article/details/102738972

3.docker 安装2个tomcat

  • 拉取一个tomcat镜像:
    docker pull tomcat
    在这里插入图片描述
  • 安装2个tomcat容器 : tomcat8081和tomat8082
  • 安装tomat8081容器,配置外部目录
    在这里插入图片描述

使用临时tomcat容器把初始日志和webapps文件放入外部目录tomcat8081和tomcat8082下

建个临时的tomcat容器
docker run -d --name tmp-tomcat tomcat
在这里插入图片描述
现在将这临时容器的logs和webapps的文件拷贝到tomcat8081和tomcat8082目录下.
首先查看,容器中的logs和webapps的位置:
docker exec -it tmp-tomcat bash
在这里插入图片描述
拷贝到外部目录tomcat8081下:
docker cp tmp-tomcat:/usr/local/tomcat/logs /docker/tomcat8081/
在这里插入图片描述
docker cp tmp-tomcat:/usr/local/tomcat/webapps /docker/tomcat8081/
在这里插入图片描述
看下外部目录tomcat8081是否有文件了:
在这里插入图片描述
tomcat8082同理.
在这里插入图片描述
删除临时容器.
在这里插入图片描述

建立tomcat8081和tomcat8082 两个容器

docker run -d -p 8081:8080 --name tomcat8081 -v /docker/tomcat8081/logs:/usr/local/tomcat/logs -v /docker/tomcat8081/webapps:/usr/local/tomcat/webapps -e TZ="Asia/Shanghai" --privileged=true tomcat

docker run -d -p 8082:8080 --name tomcat8082 -v /docker/tomcat8082/logs:/usr/local/tomcat/logs -v /docker/tomcat8082/webapps:/usr/local/tomcat/webapps -e TZ="Asia/Shanghai" --privileged=true tomcat

在这里插入图片描述
在这里插入图片描述

测试:

tomcat8081访问没问题:
在这里插入图片描述
tomcat8082访问没问题:
在这里插入图片描述

分别在tomcat8081和tomcat8082容器上建一个项目.

tomat8081上建立一个demo1的项目。里面只有一个index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tomcat8081</title>
</head>
<body>
  这是tomcat8081页面
</body>
</html>

tomat8081上建立一个demo2的项目。里面只有一个index.html
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tomcat8082</title>
</head>
<body>
  这是tomcat8082页面
</body>
</html>

测试

重启项目,看下是否可以访问demo1和demo2项目;
在这里插入图片描述
在tomcat8081容器部署的demo1项目访问没问题:
在这里插入图片描述
在tomcat8082容器部署的demo2项目访问没问题:
在这里插入图片描述

4.nginx80端口转发

最关键的一步来了。
配置nginx.conf文件
在这里插入图片描述
访问80端下的demo1的url就转发到http://本地ip:8081/demo1,也就是tomcat8081下的demo1项目;
访问80端下的demo2的url就转发到http://本地ip:8082/demo2,也就是tomcat8082下的demo2项目;
从而实现了对外只暴露80端口,不暴露tomcat的真实端口。

测试80端口转发

在这里插入图片描述
tomcat8081的8081端口的demo1项目访问到了,成功。
在这里插入图片描述
tomcat8082的8082端口的demo2项目访问到了,成功。


至此,大功告成!!

发布了246 篇原创文章 · 获赞 29 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/baidu_21349635/article/details/104326368
今日推荐