让spring gateway 支持contextPath

1. 需求

公司环境中把服务部署到了k8s中,通过对服务进行健康检测自动自动重启故障服务;
    所有服务都采用了 actuator/health 
    
    因为spring gateway是采用webflux,无法通过server.servlet.contextPath来配置(业务服务都统一进行了配置)
    业务服务的访问路径: http://ip:8080/user/actuator/health 
    网关的访问路径:      http://ip:8080/actuator/health 
    业务服务路径带了contextPath,而网关的没有
    导致检测脚本可能需要额外的进行判断,不是很友好。
    需要想办法将网关与业务的路径调整到一致。

2. 问题

为了解决这个问题,有两种思路:
    1. 所有业务服务不再配置 contextPath
    
    2. 让网关支持contextPath
    ---
    写这篇文章肯定是选择2了。 
    因为我们的业务服务比较多,而且还有已经稳定运行使用的服务,所以无法简单的调整。

3. 解决

使用的版本如下:
   spring-cloud-gateway:2.1.2
   spring-boot : 2.1.6 
   ---
   题外话: 好像spring-boot 2.3 已经支持webflux设置contextPath了。
   
   思路:
    网关本身没有contextPath,可以通过在路由中增加一条本地路由,通过自己转发自己,达到能处理contextPath
   
   配置:

spring:cloud:gateway:routes:# 网关本身没有contextPath,通过自己转发自己,达到能处理contextPath- id: selfuri: http://localhost:${server.port}predicates:- Path=/${spring.application.name}/**filters:- StripPrefix=1order: -11000

让spring gateway 支持contextPath相关推荐

  1. Spring Gateway路由网关

    文章目录 简介 routes 路由服务 配置文件方式 Java DSL方式 predicates 路由断言 filters 过滤功能 自定义过滤器 简介 https://mp.weixin.qq.co ...

  2. Spring Gateway locator 自动路由兼容context-path

    背景 基于Spring Gateway和Eureka 结合的微服务开发方式, 如果使用自动路由解析,可以将微服务上的eureka服务ID当成路由的key,从而能够根据网关地址+服务ID实现服务的自动转 ...

  3. 关于 springcloud gateway 设置 context-path 的问题

    大家好,我是烤鸭: 今天说一下遇到的问题,关于 springcloud gateway 设置 context-path 的问题. 1.  使用场景 由于没有申请二级域名,网关使用的地址是 xxx.co ...

  4. 对比Eureka和Nacos 的区别 Zuul和Spring Gateway的区别

    目录 Eureka与Nacos的区别 1.功能差异 2.部署安装 3.稳定及扩展 4.总结 Spring gateway与zuul的区别 1. 产品对比 2 性能对比 3总结 Eureka与Nacos ...

  5. GateWay坑——context-path

    GateWay坑--context-path 环境准备 正确路由 context-path和application.name不一致 注册中心 Gateway网关设置 访问结果 路由失败 context ...

  6. Spring Gateway聚合Swagger在线文档

    Spring Gateway聚合Swagger在线文档 为什么需要聚合? 如何聚合? 单个服务如何聚合Swagger? 1.添加依赖 2.基础配置类 3.Swagger文档信息装配类 4.微服务添加引 ...

  7. MyEclipse中删除对Struts、hibernate、spring的支持

    注:本文转载自:http://blog.csdn.net/j04110414/article/details/9900033,版权归其所有 一.首先是撤消MyEclipse对Struts的支持 关键的 ...

  8. http invoker_Http Invoker的Spring Remoting支持

    http invoker Spring HTTP Invoker是Java到Java远程处理的重要解决方案. 该技术使用标准的Java序列化机制通过HTTP公开服务,并且可以看作是替代方法,而不是He ...

  9. Spring测试支持和上下文缓存

    Spring为单元测试和集成测试提供了全面的支持-通过注释来加载Spring应用程序上下文,并与JUnit和TestNG等单元测试框架集成. 由于为每个测试加载大型应用程序上下文需要时间,因此Spri ...

最新文章

  1. 密码学研究-数字签名
  2. 成熟的男人思考的东西
  3. 一文解开java中字符串编码的小秘密
  4. AutoML数据增广
  5. JS检测浏览器是否最大化
  6. jstl有什么优势(简单介绍)
  7. 线性表的链式存储实现
  8. PHP 工厂模式浅析
  9. html怎么转为rp,html rp标签怎么用
  10. 记录因安装npcap带来的无线连接上不了网的问题
  11. 【Python】Python绘制CIE1931色度图并标点
  12. java.lang.ClassCastException: Ljava.lang.Object; cannot be cast to com.entity.Advertisem异常
  13. 易到用车最艰难时刻,未来赌什么?
  14. echart中饼图或者南丁格尔玫瑰图是否显示label或lableLine
  15. 类对象初始化和Initializer_list的
  16. Docker常用软件安装之MYSQL
  17. 计算机c语言基础字符,2008计算机二级考试:C语言基础教程-C语言字符型数据
  18. CVE-2022-26923域提权漏洞
  19. 教你用软件制作自己的系统主题包
  20. 最小拍无差控制器MATLAB求解,最小拍控制器设计.doc

热门文章

  1. 量化交易参考书目-董可人
  2. CAN/以太网转换器 CAN与以太网互联互通
  3. 贿赂囚犯 Bribe the prisoners ( 动态规划+剪枝)
  4. 办公电脑开不了机该怎么办?旧时光 oldtimeblog
  5. 麦当劳启动“夏日追光计划”
  6. 麦当劳中国内地首推植物肉产品,上海、广州、深圳限时尝新
  7. 电脑桌面便签怎么新增便签设置提醒时间?
  8. 如何将U盘作为虚拟光驱使用呢?
  9. 输入2个大写英文字母,调用函数CharSwap将其转换成小写字母并交换
  10. 网络安全之 ARP 欺骗防护