nginx80端口转发到多个tomcat

简介: 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

1dc618a0ed9580ce8bfa6facb208c08f.png

安装2个tomcat容器 : tomcat8081和tomat8082

安装tomat8081容器,配置外部目录

5d4c6812c8535adbb050f4ddf2e1bce8.png

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

建个临时的tomcat容器

docker run -d --name tmp-tomcat tomcat

46a9d80a6e05e4e3b19d57a0ee70bcdf.png

现在将这临时容器的logs和webapps的文件拷贝到tomcat8081和tomcat8082目录下.

首先查看,容器中的logs和webapps的位置:

docker exec -it tmp-tomcat bash

66ba272a0bfc97be54a5fa679e3d5482.png

拷贝到外部目录tomcat8081下:

docker cp tmp-tomcat:/usr/local/tomcat/logs /docker/tomcat8081/

1dc618a0ed9580ce8bfa6facb208c08f.png

docker cp tmp-tomcat:/usr/local/tomcat/webapps /docker/tomcat8081/

5d4c6812c8535adbb050f4ddf2e1bce8.png


看下外部目录tomcat8081是否有文件了:

46a9d80a6e05e4e3b19d57a0ee70bcdf.png66ba272a0bfc97be54a5fa679e3d5482.png


删除临时容器.


1dc618a0ed9580ce8bfa6facb208c08f.png

建立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

5d4c6812c8535adbb050f4ddf2e1bce8.png

46a9d80a6e05e4e3b19d57a0ee70bcdf.png


测试:


tomcat8081访问没问题:

66ba272a0bfc97be54a5fa679e3d5482.png

tomcat8082访问没问题:

1dc618a0ed9580ce8bfa6facb208c08f.png

分别在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

5d4c6812c8535adbb050f4ddf2e1bce8.png


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


测试


重启项目,看下是否可以访问demo1和demo2项目;

46a9d80a6e05e4e3b19d57a0ee70bcdf.png

在tomcat8081容器部署的demo1项目访问没问题:

66ba272a0bfc97be54a5fa679e3d5482.png

在tomcat8082容器部署的demo2项目访问没问题:

1dc618a0ed9580ce8bfa6facb208c08f.png


4.nginx80端口转发


最关键的一步来了。


配置nginx.conf文件

5d4c6812c8535adbb050f4ddf2e1bce8.png

访问80端下的demo1的url就转发到http://本地ip:8081/demo1,也就是tomcat8081下的demo1项目;


访问80端下的demo2的url就转发到http://本地ip:8082/demo2,也就是tomcat8082下的demo2项目;


从而实现了对外只暴露80端口,不暴露tomcat的真实端口。


测试80端口转发

46a9d80a6e05e4e3b19d57a0ee70bcdf.png

tomcat8081的8081端口的demo1项目访问到了,成功。

66ba272a0bfc97be54a5fa679e3d5482.png

tomcat8082的8082端口的demo2项目访问到了,成功。


至此,大功告成!!


相关文章
|
2月前
|
应用服务中间件 网络安全 nginx
【Nginx】Nginx启动显示80端口占用问题的解决方案
【Nginx】Nginx启动显示80端口占用问题的解决方案
438 1
|
2月前
|
Java 应用服务中间件 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
|
2月前
|
缓存 前端开发 JavaScript
tomcat核心技术+Nginx性能调优技术
而Tomcat的基本配置,每个配置项也基本上对应了Tomcat的组件结构,如果要用一张图来形象展现一下Tomcat组成的话
78 1
|
2月前
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
55 1
|
2月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
43 0
|
11天前
|
Ubuntu 前端开发 JavaScript
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
|
5天前
|
前端开发 应用服务中间件 nginx
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
|
2月前
|
负载均衡 前端开发 应用服务中间件
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400
|
2月前
|
负载均衡 前端开发 应用服务中间件
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400(2)
Nginx+Tomcat负载均衡配置_nginx做tomcat的负载均衡成功,但tomcat的css文件400(2)
|
1月前
|
前端开发 Java 应用服务中间件
linux本地检测如何tomcat是否启动成功tomcat端口检测
linux本地检测如何tomcat是否启动成功tomcat端口检测
13 0