当前位置: 首页 > web >正文

spring gateway 配置http和websocket路由转发规则

1、转发http配置-普通方式

server:port: 8088
spring:application:name: api-gatewaycloud:gateway:routes:-id: url-proxy-1uri: https://blog.csdn.netpredicates:-Path=/csdn

上面这段配置的意思是,配置了一个 id 为 url-proxy-1的URI代理规则,路由的规则为:
当访问地址 http://localhost:8088/csdn/123.jsp 时,会路由到地址 https://blog.csdn.net/123.jsp

字段说明
  • id:我们自定义的路由 ID,保持唯一
  • uri:目标服务地址
  • predicates:路由条件,Predicate 接受一个输入参数,返回一个布尔值结果。该接口包含多种默认方法来将 Predicate 组合成其他复杂的逻辑(比如:与,或,非)。
  • path: 监听需要转发的地址,

2、转发http配置-使用注册中心地址

2.1、直接转发
server:port: 8088
spring:cloud:gateway:routes:- id: http1uri: "lb://serviceName" #http转发配置,通过nacos注册中心调用 serviceNamepredicates: - Path=/**

其中 "lb://serviceName" 表示 使用注册中心的地址进行转发,lbloadbalancer的简写,lb://后面一定要填写正确的服务名称,是通过spring.application.name配置的名称,当然也可以直接写 serviceName;

注意: 当 Path 为/**,且uri为 "lb://serviceName" 时表示监听所有服务的地址进行路由转发

2.2、转发指定的path
spring:cloud:gateway:routes:- id: sdfsduri: "lb:ws://blade-system"predicates:- Path=/blade-system/websocket/**discovery:locator:enabled: trueloadbalancer:retry:enabled: true

假设2个服务的IP地址

  • spring gateway 的服务ip地址为:http://192.168.1.10:8000
  • blade-system服务的ip为:http://192.168.1.10:9000

当我访问 http://192.168.1.10:8000/blade-system/websocket/topic 时,会路由到 blade-system服务的地址: http://192.168.1.10:9000/websocket/topic

3、转发websocket配置

spring gatewat 默认情况下是不转发websocket请求的,所以需要我们自行配置转发规则;

spring:cloud:gateway:routes:- id: http1uri: "ws://127.0.0.1:8081" #websocket配置,直接地址使用方式predicates: - Path=/websocket_1- id: websocket1#uri: "lb:ws://serviceName" #websocket配置,通过nacos注册中心调用serviceNamepredicates: - Path=/websocket_2

4、转发多个地址

因为routes本身就是个列表,转发多个就直接配置多个路由即可

spring:cloud:gateway:routes:- id: http1   # 配置第一个路由uri: "lb://serviceName" #http转发配置,通过nacos注册中心调用serviceName使用方式2predicates: - Path=/**- id: websocket1 # 配置第二个路由uri: "lb:ws://serviceName" #websocket配置,通过nacos注册中心调用serviceName使用方式2predicates: - Path=/websocket
http://www.xdnf.cn/news/16566.html

相关文章:

  • NodeJs接入腾讯云存储COS
  • Ubuntu Linux 如何配置虚拟内存 —— 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录8
  • USB设备调试
  • 全面理解JVM虚拟机
  • RK3568 Linux驱动学习——U-Boot使用
  • 六、搭建springCloudAlibaba2021.1版本分布式微服务-admin监控中心
  • Linux 基础命令大全
  • 内存泄漏问题排查
  • Context Engineering Notes
  • 【Golang】Go语言运算符
  • 迷宫生成与路径搜索(A算法可视化)
  • Triton IR
  • Libevent(4)之使用教程(3)配置
  • 如何使用ozone调试elf文件?
  • Dify 本地化部署深度解析与实战指南
  • LangChain实现RAG
  • 力扣 hot100 Day57
  • 第四科学范式(数据密集型科学):科学发现的新范式
  • Qt C++动态库SDK在Visual Studio 2022使用(C++/C#版本)
  • IIS发布.NET9 API 常见报错汇总
  • Java面试实战:从基础到架构的全方位技术交锋
  • add新增管理员功能、BaseController类的简介--------示例OJ
  • PDF转图片实用指南:如何批量高效转换?
  • AI入门学习-模型评估示例讲解
  • Deja Vu: 利用上下文稀疏性提升大语言模型推理效率
  • 【java】 IntelliJ IDEA高效编程设置指南
  • Day06–哈希表–242. 有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和
  • EMCCD相机与电可调变焦透镜的同步控制系统设计与实现
  • 基于Matlab自适应阈值分割算法的图像处理研究
  • 《Java 程序设计》第 7 章 - 继承与多态