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

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.lryc.cn/news/601207.html

相关文章:

  • Linux驱动21 --- FFMPEG 音频 API
  • Spring Boot + @RefreshScope:动态刷新配置的终极指南
  • mysql 快速上手
  • 发布 VS Code 扩展的流程:以颜色主题为例
  • 详解力扣高频SQL50题之1164. 指定日期的产品价格【中等】
  • MCP + LLM + Agent 8大架构:Agent能力、系统架构及技术实践
  • 2025年7月25日-7月26日 · AI 今日头条
  • 【测试报告】博客系统(Java+Selenium+Jmeter自动化测试)
  • Jmeter的元件使用介绍:(八)断言器详解
  • OpenResty 高并发揭秘:架构优势与 Linux 优化实践
  • 零基础学习性能测试第六章:性能难点-Jmeter实现海量用户压测
  • 人工智能与城市:城市生活的集成智能
  • FastAPI入门:查询参数模型、多个请求体参数
  • 元宇宙背景下治理模式:自治的乌托邦
  • 北大区块链技术与应用 笔记
  • solidity从入门到精通 第六章:安全第一
  • 【前后端】使用 PM2 管理 Node 进程
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现标签条码一维码的检测(C#代码,UI界面版)
  • vue3.6更新哪些内容
  • 学习游戏制作记录(改进投掷剑的行为)7.27
  • Python 使用 asyncio 包处理并 发(避免阻塞型调用)
  • 创建属于自己的github Page主页
  • 【自动化运维神器Ansible】Ansible常用模块之archive模块详解
  • github上传本地项目过程记录
  • 【C语言网络编程基础】DNS 协议与请求详解
  • STM32的蓝牙通讯(HAL库)
  • 飞牛NAS本地化部署n8n打造个人AI工作流中心
  • 用 Flask 打造宠物店线上平台:从 0 到 1 的全栈开发实践
  • idea总结
  • JVM工具