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项目访问到了,成功。


至此,大功告成!!


相关文章
|
8月前
|
应用服务中间件 网络安全 nginx
【Nginx】Nginx启动显示80端口占用问题的解决方案
【Nginx】Nginx启动显示80端口占用问题的解决方案
1450 1
|
8月前
|
Java 应用服务中间件 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
130 2
简介Nginx,Tomcat和 Apache
|
8月前
|
缓存 前端开发 JavaScript
tomcat核心技术+Nginx性能调优技术
而Tomcat的基本配置,每个配置项也基本上对应了Tomcat的组件结构,如果要用一张图来形象展现一下Tomcat组成的话
132 1
|
8月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
70 0
|
28天前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
145 11
|
5月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
165 0
|
3月前
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
7月前
|
Ubuntu 前端开发 JavaScript
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
|
3月前
|
Java 应用服务中间件 Linux
tomcat学习二:tomcat部署多个项目:不修改端口和修改端口 两种方式详解
这篇文章详细介绍了在Tomcat服务器上部署多个项目的方法,包括不修改端口和修改端口两种方式。
215 0
|
5月前
|
网络协议 安全 应用服务中间件
在Linux中,Tomcat8005、8009、8080三个端口的含义?
在Linux中,Tomcat8005、8009、8080三个端口的含义?