配置三个Spring Boot应用并通过Nginx进行反向代理 讨论中

news2024/9/8 11:04:19

要配置三个Spring Boot应用并通过Nginx进行反向代理,你可以按照以下步骤操作:

步骤 1: 准备Spring Boot应用

确保每个Spring Boot应用都有不同的端口号。例如,你可以设置第一个应用监听8080端口,第二个监听8081端口,第三个监听8082端口。在每个应用的application.propertiesapplication.yml中配置:

 

Properties

深色版本

1# 对于第一个应用
2server.port=8080
3
4# 对于第二个应用
5server.port=8081
6
7# 对于第三个应用
8server.port=8082

然后分别为每个应用构建Docker镜像,使用不同的Dockerfile或者在同一个Dockerfile中通过ARGs参数来区分不同应用的构建。

步骤 2: 准备Nginx配置

编辑Nginx配置文件,使每个Spring Boot应用都有自己的location块。例如:

 

Nginx

深色版本

1server {
2    listen       80;
3    server_name  localhost;
4    return       301 https://$host$request_uri;
5}
6
7server {
8    listen 443 ssl;
9    server_name example.com;
10
11    ssl_certificate /etc/nginx/ssl/server.crt;
12    ssl_certificate_key /etc/nginx/ssl/server.key;
13
14    location /app1/ {
15        proxy_pass http://app1:8080;
16        proxy_set_header Host $host;
17        proxy_set_header X-Real-IP $remote_addr;
18        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
19        proxy_set_header X-Forwarded-Proto $scheme;
20    }
21
22    location /app2/ {
23        proxy_pass http://app2:8081;
24        proxy_set_header Host $host;
25        proxy_set_header X-Real-IP $remote_addr;
26        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
27        proxy_set_header X-Forwarded-Proto $scheme;
28    }
29
30    location /app3/ {
31        proxy_pass http://app3:8082;
32        proxy_set_header Host $host;
33        proxy_set_header X-Real-IP $remote_addr;
34        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
35        proxy_set_header X-Forwarded-Proto $scheme;
36    }
37}

在这个配置中,/app1/, /app2/, 和 /app3/ 是访问各个应用的路径前缀。

步骤 3: 创建Docker Compose文件

docker-compose.yml中定义所有服务:

 

Yaml

深色版本

1version: '3'
2
3services:
4  nginx:
5    image: nginx
6    container_name: nginx
7    ports:
8      - "80:80"
9      - "443:443"
10    volumes:
11      - ./nginx.conf:/etc/nginx/nginx.conf
12      - ./ssl:/etc/nginx/ssl
13    depends_on:
14      - app1
15      - app2
16      - app3
17
18  app1:
19    image: my-spring-boot-app1
20    container_name: app1
21    environment:
22      - SPRING_PROFILES_ACTIVE=docker
23    expose:
24      - "8080"
25
26  app2:
27    image: my-spring-boot-app2
28    container_name: app2
29    environment:
30      - SPRING_PROFILES_ACTIVE=docker
31    expose:
32      - "8081"
33
34  app3:
35    image: my-spring-boot-app3
36    container_name: app3
37    environment:
38      - SPRING_PROFILES_ACTIVE=docker
39    expose:
40      - "8082"

步骤 4: 部署

运行Docker Compose来启动服务:

 

Bash

深色版本

1docker-compose up -d

这样,你就有了三个通过Nginx反向代理的Spring Boot应用,每个应用都运行在不同的容器中,并且可以通过各自的路径前缀访问。记得确保SSL证书和私钥文件正确配置在ssl目录下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1952592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何利用业余时间做副业,在家里赚钱,来增加收入

人一生每个阶段都会有压力和烦恼,中年人更是如此。 上有老下有小,生活的重担都在一个人身上,压得人喘不过气,这些都需要钱,仅靠工资已经很难维持一家人的开支了。 所以很多人打算利用业余时间做副业,来增加…

为什么多数大数据治理项目都是失败的?Gartner调查失败率超过90%

引言:随着数据规模的爆发式增长、数据价值的凸显以及数据治理的必要性。在政策的推动、市场需求的拉动以及技术进步的支撑下,大数据治理正成为推动企业数字化转型、提升数据价值的重要手段。企业希望通过大数据治理提升数据利用率和数据价值,…

学习记录——day17 数据结构 队列 链式队列

队列介绍 1、队列也是操作受限的线性表:所有操作只能在端点处进行,其删除和插入必须在不同端进行 2、允许插入操作的一端称为队尾,允许删除操作的一端称为队头 3、特点:先进先出(FIFO) 4、分类: 顺序存储的栈称为顺序栈 链式存储的队列&a…

免费【2024】springboot 成都奥科厨具厂产品在线销售系统设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

将手机作为服务器运行docker服务

前言 目前手机的配置并不低,即使是2019年生产的一加七Pro,配置也有12256,CPU是骁龙855,作为服务器运行着配置绰绰有余了,二手的价格现在是400左右也能接受。相对于是自带ups电源的便携低耗docker服务器,还…

C++ unordered_map与unordered_set的模拟实现

目录 0.前言 1.哈希表(HashTable)设计 1.1设计思想 1.2 HashTable.h 1.3设计思路 2.unordered_map封装 2.1 UnorderedMap.h 2.2代码解释 2.3测试函数 3.unordered_set封装 3.1 UnorderedSet.h 3.2代码解释 3.3测试函数 4.结语 (图像由AI生成&…

项目打包与运行

前端运行时必须有与后端相同的数据库版本,数据库账号密码 右侧maven -> 展开要打包的项目 -> 生命周期 -> 双击package 打包好之后在target目录下 右键打开 在资源目录下输入cmd,执行以下命令即可运行(端口号为yml文件…

人流量为王:背后的赚钱密码深度解析

在当今商业世界中,“人流量为王”这一理念被广泛认可和奉行。但你是否认真思考过,这简单的四个字背后,究竟隐藏着怎样复杂而精妙的赚钱逻辑? 一、人流量意味着潜在客户的聚集 想象一下繁华的商业街,熙熙攘攘的人群穿梭…

7月26日JavaSE学习笔记

反射 Java是面向对象的,有对象必须先有类, 有static修饰类的属性和方法;在Java中存储了类的内容,这个内容也应该是一个对象;Java中每一个用到的类都会加载一块内存,这每一块内存都是一个对象;这…

学习周报:文献阅读+HEC RAS案例

目录 摘要 Abstract 文献阅读:通过HEC RAS软件为罗马尼亚布加勒斯特市的Dmbovița河水管理的水力模型 文献摘要 讨论|结论 理论知识 边界条件计算 流量计算方式 曼宁公式 (Mannings Equation) 连续性方程 (Continuity Equation) 能量方程 (Energy Equatio…

EB Tresos 基于S32K3芯片 ICU模块实现gpio外部中断配置[后续更新实现icu模块的其他功能]

环境:eb tresos 27.0.1 port 模块配置: 选择一个具有erq功能的引脚并配置为erq功能。如下我选择的是 PTB0 -EIRQ[8] - SIUL2_EXT_IRQ_8_15_ISR Platform 模块配置 在这个模块中配置中断的开关以及中断句柄 ICU模块配置 具体配置参考博客:…

【python】python大学排名数据抓取+可视化(源码+数据集+可视化+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

深度强化学习 ②(DRL)

参考视频:📺王树森教授深度强化学习 前言: 最近在学习深度强化学习,学的一知半解😢😢😢,这是我的笔记,欢迎和我一起学习交流~ 这篇博客目前还相对比较乱,后面…

黑马Java零基础视频教程精华部分_5_面向对象综合练习

系列文章目录 文章目录 系列文章目录一、文字版格斗游戏二、文字版格斗游戏进阶版三、对象数组练习1、对象数组1先学习一下键盘录入。注意:两套体系不能混用 对象数组2对象数组3对象数组4对象数组5 一、文字版格斗游戏 GameTes.javat代码如下: package …

[数通网络基础]——广播域与路由器

广播域 广播域概述 广播域是指网络中能接收到同一广播消息的所有设备的集合。 广播域的大小会影响网络的性能和效率。当同一个广播域内广播报文过多时,会对局域网造成干扰,导致网络延迟,网络拥塞(上网卡,上网慢&…

hot100-3滑动窗口

3无重复字符得最长字串 438找出字符串中得所有字母异位词 遇到没有限制字母排列方式的,都可以考虑维护一个charCode数组 和第567题相似 567字符串得排列(和438一个思路)

docker dotnet-dump离线部署

1.下载指定dotnet版本的dotnet-dump 示例地址: https://www.nuget.org/packages/dotnet-dump/3.1.141901#dependencies-body-tab 我本地测试的是netcore 3.1 2. 在本地解压 将文件解压出来。看到any目录,能看到我们要用的dotnet-dump文件 3. 将tools/netcoreapp2.…

AccessLog| 一款开源的日志分析系统

前言 ClkLog作为分析系列产品中的前端数据分析系统,通过采集前端应用数据进行用户行为分析。其社区版从23年9月发布至今已有近一年,商业版也上线快半年,感谢大家一直以来的关注和支持,ClkLog会继续做好产品升级与服务,…

算法-----递归~~搜索~~回溯(宏观认识)

目录 1.什么是递归 1.1二叉树的遍历 1.2快速排序 1.3归并排序 2.为什么会用到递归 3.如何理解递归 4.如何写好一个递归 5.什么是搜索 5.1深度(dfs)优先遍历&优先搜索 5.2宽度(bfs)优先遍历&优先搜索 6.回溯 1.什…

微信小游戏之 三消(一)

首先设定一下 单个 方块 cell 类: 类定义和属性 init 方法 用于初始化方块,接收游戏实例、数据、宽度、道具类型和位置。 onWarning 方法 设置警告精灵的帧,并播放闪烁动作,用于显示方块的警告状态。 grow 方法 根据传入的方向…