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

要配置三个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.mzph.cn/bicheng/49517.shtml

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

相关文章

FPGA JTAG最小系统 EP2C5T144C8N

FPGA的文档没有相应的基础还真不容易看懂,下面是B站上对FPGA文档的解读(本文非对文档解读,只是为个人记录第三期:CycloneIV E最小系统板设计(一)从Datasheet上获取FPGA的基本参数_哔哩哔哩_bilibili 电源部份 核心电…

TS config

moduleResolution 是 TypeScript 编译器中的一个选项,用于控制如何解析模块导入。这个选项影响着 TypeScript 如何查找和解析 import 和 export 声明中指定的模块。 {"compilerOptions": {"moduleResolution": "Node"//小写也没问题…

SELinux的 getenforce setenforce 配置文件/etc/selinux/config的 SELINUX和SELINUXTYPE

SELinux(Security-Enhanced Linux)是一个为Linux系统提供访问控制安全策略的安全模块。它是Linux内核的一个功能强大的安全子系统,旨在提供访问控制安全策略机制,以限制程序中特定代码段的权限。SELinux超越了传统的UNIX权限模型&…

AI学习记录 -使用react开发一个网页,对接chatgpt接口,附带一些英语的学习prompt

实现了如下功能(使用react实现,原创) 实现功能: 1、对接gpt35模型问答,并实现了流式传输(在java端) 2、在实际使用中,我们的问答历史会经常分享给他人,所以下图的 copy …

Python酷库之旅-第三方库Pandas(042)

目录 一、用法精讲 141、pandas.Series.agg(regate)方法 141-1、语法 141-2、参数 141-3、功能 141-4、返回值 141-5、说明 141-6、用法 141-6-1、数据准备 141-6-2、代码示例 141-6-3、结果输出 142、pandas.Series.transform方法 142-1、语法 142-2、参数 142…

1196. 拐角I

问题描述 输入整数 &#x1d441;N &#xff0c;输出相应方阵。 输入一个整数 &#x1d441;N 。&#xff08; 0<&#x1d441;≤100) 输出一个方阵&#xff0c;每个数字的场宽为 3 附代码&#xff1a; #include<iostream> using namespace std; int main() { …

大屏数据看板一般是用什么技术实现的?

我们看到过很多企业都会使用数据看板&#xff0c;那么大屏看板的真正意义是什么呢&#xff1f;难道只是为了好看&#xff1f;答案当然不仅仅是。 大屏看板不仅可以提升公司形象&#xff0c;还可以提升企业的管理层次。对于客户&#xff0c;体现公司实力和品牌形象&#xff0c;…

域名解析到ipv6,并用CF隐藏端口

要求&#xff1a;域名解析到 IPv6 地址并隐藏端口 ‍ 效果&#xff1a;用域名 https://myhalo.soulio.top​ 访问http://[2409:8a62:867:4f12:56c7:5508:f7x6:8]:8080​。唯一缺点是延迟有点高。 ​​ ‍ 难度&#xff1a;需要有一定域名解析、cloudflare使用基础 ‍ 实…

org.springframework.context.annotation.DeferredImportSelector如何使用?

DeferredImportSelector 是 Spring 框架中一个比较高级的功能&#xff0c;主要用于在 Spring 应用上下文的配置阶段延迟导入某些组件或配置。这个功能特别有用&#xff0c;比如在处理依赖于其他自动配置的场景&#xff0c;或者当你想基于某些条件来决定是否导入特定的配置类时。…

一个简单的UAF/HeapOverflow fuzz demo学习

前言 偶然逛到的一篇&#xff0c;UAF_overflow_check | Note (gitbook.io) 最近正好也在初学fuzz&#xff0c;学习下对一些漏洞的检测fuzz思路。 刚好这个也指了一条学习方法&#xff1a;看成熟的fuzz工具的源码是如何处理的。 https://github.com/google/sanitizers/tree/m…

【Django+Vue3 线上教育平台项目实战】Elasticsearch实战指南:从基础到构建课程搜索与数据同步接口

文章目录 前言一、Elasticsearch倒排索引 二、Docker 搭建 ESDocker 安装Docker 搭建 ES 三、ES基础语法创建索引查看索引删除索引添加数据查询数据修改数据删除数据条件查询分页查询排序 多条件查询andor 范围查询 四、ES在项目中的应用示例 前言 在数据驱动的时代&#xff0c…

c#Action委托和Func委托

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Action委托 {internal class Program{static void PrintString(){Console.WriteLine("hello world.");}static void PrintInt(int …

vue3页面编写-导入导出excel、展开查询项等

数据保持 <router-view v-slot"{ Component, route }"><keep-alive><component :is"Component" :key"route.name" v-if"route.meta.keepAlive" /></keep-alive><component :is"Component" :key…

HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号4

基础认证题库请移步&#xff1a;HarmonyOS应用开发者基础认证题库 注&#xff1a;有读者反馈&#xff0c;题库的代码块比较多&#xff0c;打开文章时会卡死。所以笔者将题库拆分&#xff0c;单选题20个为一组&#xff0c;多选题10个为一组&#xff0c;题库目录如下&#xff0c;…

大语言模型-RetroMAE-检索预训练模型

一、背景信息&#xff1a; RetroMAE是2022年10月由北邮和华为提出的一种密集检索预训练策略。 RetroMAE主要应用于检索模型的预训练&#xff0c;模型架构为非对称的Encoder-Decode结构。 二、整体结构&#xff1a; RetroMAE的模型架构为非对称的Encoder-Decode结构。 Encod…

C++学习笔记-operator关键字:重载与自定义操作符

在C编程中&#xff0c;operator关键字扮演着极其重要且独特的角色。它允许开发者为内置类型或自定义类型重载或定义新的操作符行为。这一特性极大地增强了C的表达能力&#xff0c;使得代码更加直观、易于理解和维护。本文将深入探讨C中operator关键字的使用&#xff0c;包括操作…

Interesting bug caused by getattr

题意&#xff1a;由 getattr 引起的有趣的 bug 问题背景&#xff1a; I try to train 8 CNN models with the same structures simultaneously. After training a model on a batch, I need to synchronize the weights of the feature extraction layers in other 7 models. …

Elasticsearch:Golang ECS 日志记录 - zap

ECS 记录器是你最喜欢的日志库的格式化程序/编码器插件。它们可让你轻松地将日志格式化为与 ECS 兼容的 JSON。 编码器以 JSON 格式记录日志&#xff0c;并在可能的情况下依赖默认的 zapcore/json_encoder。它还处理 ECS 错误格式的错误字段记录。 默认情况下&#xff0c;会添…

OpenWrt 为软件包和docker空间扩容

参考资料 【openwrt折腾日记】解决openwrt固件刷入后磁盘空间默认小的问题&#xff0c;关联openwrt磁盘扩容空间扩容【openwrt分区扩容】轻松解决空间可用不足的尴尬丨老李一瓶奶油的YouTube 划分空间 参考一瓶奶油的YouTube 系统 -> 磁盘管理 -> 磁盘 -> 修改 格…

【机器学习】不同操作系统下如何安装Jupyter Notebook和Anaconda

引言 Jupyter Notebook 是一个非常流行的开源Web应用程序&#xff0c;允许你创建和共享包含代码、方程、可视化和解释性文本的文档 文章目录 引言一、如何安装Jupyter Notebook1.1 对于Windows用户1.2 对于macOS用户1.3 对于Linux用户&#xff1a; 二、如何安装Anaconda2.1 对于…