springcloud项目部署Nginx+Gateway+其他服务

一. 部署 Nginx

  • Nginx 是一个高性能的 Web 服务器和反向代理服务器。它常用于将流量从公共互联网引导到内部的应用程序服务器。
  • 你可以在服务器上安装 Nginx,并根据你的需求进行配置。通常的配置包括监听端口、定义服务器块、配置反向代理、设置 SSL/TLS 等。
  • 配置完成后,你可以启动 Nginx,并确保它能够正常处理流量。
  • 明白它在整体项目中承担的作用:反向代理,负载均衡以及部署静态资源,这也是本章所用到的

我这边将其分为四步:

第一步:

        创建目录

mkdir -p /data/nginx/logs/
mkdir -p /data/nginx/conf/
mkdir -p /data/nginx/html/
第二步:

        编写配置文件,方法有很多,可以手搓,拷贝后修改等等

# 定义负载均衡的 upstream
upstream backend_service1 {server backend1.example.com;server backend2.example.com;# 在这里添加更多的后端服务器
}upstream backend_service2 {server backend3.example.com;server backend4.example.com;# 在这里添加更多的后端服务器
}server {listen 80;server_name yourdomain.com;# 配置第一个 Spring Cloud 微服务location /service1/ {proxy_pass http://backend_service1;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 配置第二个 Spring Cloud 微服务location /service2/ {proxy_pass http://backend_service2;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 其他配置项# 可以在这里添加其他 Nginx 配置,比如 SSL 证书、日志等
}
第三步:

        docker拉取镜像(当然如果有特殊要求,也可以解压用自己的)安装nginx并启动

cd /data/lanxum/nginxdocker pull nginx  #默认拉取最新docker create --restart always --network=host --name nginx -v $PWD/html:/usr/share/nginx/html -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/var/log/nginx nginxdocker start nginx

二. 部署 Gateway

yaml配置:

你可以根据实际需求调整这些配置,并将其保存为 application.yml 文件,用于配置 Spring Cloud Gateway。确保在项目的依赖中添加 Spring Cloud Gateway 相关的依赖,以便这些配置能够生效。

启动gateway:

        就有很多方式了,直接java -jar也可以启动(前提是你配置了java环境)或者将jar包打成images再做成容器等等,此处采用了shell脚本(原理也是java -jar) 

上面省略了注册中心的部署,第二期,从注册中心开始!!!

这期先到这里,如果感兴趣可以参考第二期!!!

  • Gateway 是一个 API 网关,用于管理和转发来自客户端的 API 请求到相应的后端服务。
  • 你可以选择使用不同的 API 网关,如 Kong、Apigee、AWS API Gateway 等,根据你的需求进行配置和部署。
  • 配置 Gateway 包括定义 API、设置路由、认证和授权、监控和日志等。
    spring:cloud:gateway:routes:- id: service1-routeuri: http://service1predicates:- Path=/service1/**- Header=X-Service-ID, service1filters:- StripPrefix=1- id: service2-routeuri: http://service2predicates:- Path=/service2/**- Header=X-Service-ID, service2filters:- StripPrefix=1- id: service3-routeuri: http://service3predicates:- Path=/service3/**- Header=X-Service-ID, service3filters:- StripPrefix=1- id: service4-routeuri: http://service4predicates:- Path=/service4/**- Header=X-Service-ID, service4filters:- StripPrefix=1- id: service5-routeuri: http://service5predicates:- Path=/service5/**- Header=X-Service-ID, service5filters:- StripPrefix=1# 全局过滤器,用于处理跨域请求default-filters:- name: DedupeResponseHeaderargs:name: Access-Control-Allow-Originstrategy: RETAIN_FIRST- name: AddResponseHeaderargs:name: Access-Control-Allow-Originvalue: "*"- name: AddResponseHeaderargs:name: Access-Control-Allow-Methodsvalue: "GET, POST, PUT, DELETE, OPTIONS"- name: AddResponseHeaderargs:name: Access-Control-Allow-Headersvalue: "Content-Type, Authorization"- name: AddResponseHeaderargs:name: Access-Control-Max-Agevalue: "3600"- name: AddResponseHeaderargs:name: Access-Control-Allow-Credentialsvalue: "true"server:port: 8080
    

    以上是一个 Gateway 的 YAML 配置文件示例,包含五个服务、根据 ID 转发到不同的服务、具有负载均衡和跨域处理。

  • 解释yaml:
  • Routes

    • routes 定义了五个路由,每个路由对应一个服务 (service1service5)。
    • 每个路由有两个 predicates:PathHeaderPath 用于匹配请求路径,Header 用于匹配请求头中的 X-Service-ID,将请求转发到相应的服务。
    • filters 中的 StripPrefix=1 用于去掉请求路径中的第一个路径段(例如,将 /service1/path 转换为 /path)。
  • Global Filters

    • default-filters 定义了一些全局过滤器,用于处理跨域请求(CORS)。
    • DedupeResponseHeader 用于删除重复的 Access-Control-Allow-Origin 响应头。
    • AddResponseHeader 用于添加 CORS 相关的响应头,包括允许的来源、方法、头部和凭证等。
  • Server Port

    • server.port 设置为 8080,定义 Gateway 服务监听的端口。

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

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

相关文章

中老年人交友市场的现状与趋势分析

随着社会的发展和人口老龄化的加剧,中老年人的社交需求日益增长,这为交友市场带来了新的机遇和挑战。本文将从中老年人的社交需求出发,对当前中老年人交友市场的现状、问题及未来发展趋势进行深入分析。 一、中老年人交友市场的现状 1. 市场…

华为云会议对接,华为云会议事件消息订阅

最近做了一个对接华为云视频会议接口,订阅华为云会议事件消息的功能。做之前在网上搜索了一番,居然发现没有一个这方面的资料。决定整理一下分享出来,留给有缘人 具体的需求是,我们的app上集成了华为云会议sdk,在用户开…

【CTF-Web】XXE学习笔记(附ctfshow例题)

XXE 文章目录 XXE0x01 前置知识汇总XMLDTD (Document Type Definition) 0x02 XXE0x03 XXE危害0x04 攻击方式1. 通过File协议读取文件Web373(有回显)Web374(无回显) Web375Web376Web377Web378 0x01 前置知识汇总 XML 可扩展标记语言(eXtensi…

Android音频焦点

什么是音频焦点? 音频焦点是 API 8 中引入的一个概念。它用于传达这样一个事实:用户一次只能专注于一个音频流,例如收听音乐或播客,但不能同时关注两者。在某些情况下,多个音频流可以同时播放,但只有一个是…

2021职称继续教育--实行高水平对外开放,积极参与全球经济治理体系改革,开拓合作共赢新局面

单选题(共7题,每题5分) 1、根据本讲,我国目前已有()个省份设立了自贸区。 C、21 2、根据本讲,“一带一路”的官方翻译为()。 A、The Belt and Road Initiative 3、根据…

故障诊断 | 基于KAN故障诊断模型

效果一览 文章概述 故障诊断 | 基于 KAN故障诊断模型。KAN是一种全新的神经网络架构,它与传统的MLP架构不同,能够用更少的参数量在Science领域取得惊人的表现,并且具备可解释性,有望成为深度学习模型发展的一个重要方向。运用KAN&…

从0开始学web之信息收集

web1~源代码 web1:where is flag?直接右键源代码找到。 web2~源代码 无法查看源代码确实右键不了,F12用不了, 但是还可以在URL前加上view-source: web3~HTTP响应 web3:where is flag?右键源代码没有,那就看看HTTP 头,F12抓…

数据大屏方案 : 实现数据可视化的关键一环_光点科技

在数字时代的浪潮中,数据已经成为企业决策和操作的重要基础。因此,“数据大屏方案”逐渐成为业界关注的焦点。这类方案通过将复杂的数据集合以直观的形式展现出来,帮助决策者快速把握信息,做出更加明智的决策。 数据大屏的定义及作…

什么是银行虚拟户?

虚拟银行账户是一种不同于传统银行账户的银行服务形式。又称银行云账户,主要是一个结算账户,可以作为企业开立多个不同名称子账户的主账户。 这些子账户可以用于各种用途,包括企业核算、佣金支付等。,同时保证转账和报送的同音性…

机器学习-9-python中的pipeline以及sklearn中的pipeline

参考探秘Python的Pipeline魔法 参考sklearn之pipeline:pipeline函数/make_pipeline函数的简介及其区别联系、使用技巧、案例应用之详细攻略 参考Python函数式编程之pipeline——很酷有没有 1 什么是Pipeline? pipeline 管道借鉴于Unix Shell的管道操作——把若干个命令串起…

nginx 配置 gzip压缩及去除 html 缓存

server{listen 80;server_name test.exmaple.cn;gzip on; # 是否开启gzip# gzip_buffers 32 4K; # 缓冲(压缩在内存中缓冲几块? 每块多大?)gzip_comp_level 6; # 推荐6 压缩级别(级别越高,压的越小,越浪费CPU计算资源)gzip_min_length 1k; # 开始压缩的最小长度(再小就…

Java-数组内存解析

文章目录 1.内存的主要结构:栈、堆2.一维数组的内存解析3.二维数组的内存解析 1.内存的主要结构:栈、堆 2.一维数组的内存解析 举例1:基本使用 举例2:两个变量指向一个数组 3.二维数组的内存解析 举例1: 举例2&am…

java生产制造执行系统MES源码:系统环境:Java EE 8、Servlet 3.0、Apache Maven 3 2;

MES系统技术选型 系统环境:Java EE 8、Servlet 3.0、Apache Maven 3 2; 主框架:Spring Boot 2.2.x、Spring Framework 5.2.x、Spring Security 5.2.x 3 持久层:Apache MyBatis 3.5.x、Hibernate Validation 6.0.x、Alibaba Dru…

Ai绘画怎么正确使用关键词?

在AI绘画的过程中,关键词(提示词)是非常重要的组成部分,下面我以AI绘画常用的Stable Diffusion为例,来介绍下AI绘画怎么使用提示词吧! 一、提示词是什么 提示词(Prompt)就是我们对…

SOLIDWORKS 2024:零件亮点的升级与突破

随着科技的不断发展,工程设计软件也在持续进步,以更好地满足工程师和设计师的需求。SOLIDWORKS,作为一款广泛使用的三维CAD软件,一直在不断地推出新版本,以提供更强大、更便捷的功能。今天,我们将深入探讨S…

查找list集合中,持续时间>=ContinueTime的数据集合,保存在新的list中

在给定的包含时间戳的list中,查找连续continueNum次的且时间间隔为needDiff的集合。 eg:相邻两个数据的时间戳间隔为1分钟,且超过30分钟有数据 /**** param list 包含时间戳(10位)的list* param continueNum 至少持续…

初步研究Pose_300W_LP datasets.py

mat文件参数解读 Color_para:颜色参数,用于描述图像的颜色属性,比如图像的亮度、对比度等信息。 亮度属性、对比度属性、饱和度属性(颜色越鲜艳)、色调属性(色调越偏向蓝色)、色温属性&#xf…

Leecode热题100---二分查找---34:在排序数组中查找元素的第一个和最后一个的位置

题目: 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 方法1、枚举 思路:通过正向枚举和反向枚举找到对应…

【EI会议】第二届计算机、物联网与智慧城市国际会议

第二届计算机、物联网与智慧城市国际会议 快速通道 投稿链接:loading 截稿时间:9月15日 检索:EI检索 一、会议信息 大会官网:www.ciotsc.org 会议地点:湖南株洲 会议时间:2023年11月15日-17日 二、征稿主…