1. 首页
  2. 软件开发
  3. JAVA
  4. Spring Boot集成gateway网关(针对于https访问的项目)

Spring Boot集成gateway网关(针对于https访问的项目)

  • 发布于 2024-08-14
  • 0 次阅读

本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net

Spring Boot 集成 gateway 网关(针对于 https 访问的项目)

什么是 gateway?

Gateway: 是 Spring 官方基于 Spring Spring Boot 和 Project Reactor 等技术开发的网关,Gateway 旨在为微服务架构提供一种简单而有效的统一的 API 路由管理方式。Gateway 作为 Spring Cloud 生态系中的网关,目标是替代 ZUUL,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了关基本的功能,例如:安全,监控 / 埋点,和限流等。

一、路由转发功能:

  1. 引入依赖,注意与自己项目版本对应避免冲突,我这里使用 2.0.4 版本,具体可参考下文
<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
            <version>2.0.4.RELEASE</version>
        </dependency>

2022.x 分支

适配 Spring Boot 3.0,Spring Cloud 2022.x 版本及以上的 Spring Cloud Alibaba 版本按从新到旧排列如下表(最新版本用 * 标记): (注意,该分支 Spring Cloud Alibaba 版本命名方式进行了调整,未来将对应 Spring Cloud 版本,前三位为 Spring Cloud 版本,最后一位为扩展版本,比如适配 Spring Cloud 2022.0.0 版本对应的 Spring Cloud Alibaba 第一个版本为:2022.0.0.0,第个二版本为:2022.0.0.1,依此类推)

Spring Cloud Alibaba VersionSpring Cloud VersionSpring Boot Version
2022.0.0.0*Spring Cloud 2022.0.03.0.2
2022.0.0.0-RC2Spring Cloud 2022.0.03.0.2
2022.0.0.0-RC1Spring Cloud 2022.0.03.0.0

2021.x 分支

适配 Spring Boot 2.4,Spring Cloud 2021.x 版本及以上的 Spring Cloud Alibaba 版本按从新到旧排列如下表(最新版本用 * 标记):

Spring Cloud Alibaba VersionSpring Cloud VersionSpring Boot Version
2021.0.5.0*Spring Cloud 2021.0.52.6.13
2021.0.4.0Spring Cloud 2021.0.42.6.11
2021.0.1.0Spring Cloud 2021.0.12.6.3
2021.1Spring Cloud 2020.0.12.4.2

2.2.x 分支

适配 Spring Boot 为 2.4,Spring Cloud Hoxton 版本及以下的 Spring Cloud Alibaba 版本按从新到旧排列如下表(最新版本用 * 标记):

Spring Cloud Alibaba VersionSpring Cloud VersionSpring Boot Version
2.2.10-RC1*Spring Cloud Hoxton.SR122.3.12.RELEASE
2.2.9.RELEASESpring Cloud Hoxton.SR122.3.12.RELEASE
2.2.8.RELEASESpring Cloud Hoxton.SR122.3.12.RELEASE
2.2.7.RELEASESpring Cloud Hoxton.SR122.3.12.RELEASE
2.2.6.RELEASESpring Cloud Hoxton.SR92.3.2.RELEASE
2.2.1.RELEASESpring Cloud Hoxton.SR32.2.5.RELEASE
2.2.0.RELEASESpring Cloud Hoxton.RELEASE2.2.X.RELEASE
2.1.4.RELEASESpring Cloud Greenwich.SR62.1.13.RELEASE
2.1.2.RELEASESpring Cloud Greenwich2.1.X.RELEASE
2.0.4.RELEASE(停止维护,建议升级)Spring Cloud Finchley2.0.X.RELEASE
1.5.1.RELEASE(停止维护,建议升级)Spring Cloud Edgware1.5.X.RELEASE

这里附上原文参考地址:版本说明 · alibaba/spring-cloud-alibaba Wiki · GitHub

  1. 编写 yml 配置文件(具体配置可参考官网:Spring Cloud Gateway 中文文档 (springdoc.cn))
server:
  port: 9999
spring:
  application:
    name: gateway-service
  cloud: #配置spring cloud相关属性
    gateway: #配置gateway相关属性
      routes: # 网关路由配置
        - id: gateway_service # 路由id,自定义,只要唯一即可
          uri: https://localhost:8081 # 路由的目标地址 
          predicates: # 路由断言,也就是判断请求是否符合路由规则的条件
            - Path=/order/** # 按照路径匹配,可自行增加
  1. 编写 boostrap 文件,也可见官网配置(该文件会在启动时优先加载)
server:
  ssl:
    enabled: true #启用SSL支持,将使用HTTPS协议
    key-alias: xxx #密钥库中的默认密钥别名。换成自己的
    key-store-password: xxx #密钥库密码
    key-store: classpath:xxx #这里指定了p12格式的密钥库文件
    key-store-type: PKCS12 #密钥格式

#不验证后端服务的SSL证书,这在开发测试阶段常用来跳过证书验证
spring:
  cloud:
    gateway:
      httpclient:
        ssl:
          useInsecureTrustManager: true
  1. 启动服务

  1. 通过 apifox 进行接口测试

①编辑网关地址(注意是 https)

②请求转发,由于 path 配置的是 / order/** 所以这里用 order/xx,类推自行配置

③可正确转发请求,路由转发配置成功,至此 gateway 接入成功,其余功能均可简单配置后使用。至于为什么没数据那是因为博主传的参没结果哦~

二、过滤器功能

  1. 该功能包含诸多情形,具体见下图:


2. 实现该功能只需在配置文件中 routes 属性下添加 filters 属性即可,根据个人使用情形查看官网 Spring Cloud Gateway 中文文档 (springdoc.cn))使用方式自行选择使用何种,如请求头添加信息、添加参数等等。这里不做过多赘述。