Gateway配置网关路由和路径重写

2022-07-05 13:55:46

Gateway网关重写路由路径

请求一般都是先到达网关,网关先利用断言来判定此次请求是否符合某个路由规则,如果符合路由规则,就会按照这个路由规则,经过一系列的过滤器过滤之后,发送到指定的地方

application.yaml文件中可以配置网关的路由

spring:cloud:gateway:routes:-id: admin_routeuri: lb://xxxxxxpredicates:- Path=/api/**

但是经过网关路由之后的一些请求由于url地址会有些变动,导致404找不到网页
在这里插入图片描述
请求来到网关会判断满足/api/这个前缀要求,然后上会从nacos注册中心找到指定微服务的地址/xxxxxx,实际上这个请求会被转到http://xxxxxx:8080/api/captcha.jpg,即将网关地址转换成指定的微服务地址,然后再直接拼接上后边的地址。这就有可能导致微服务地址不一致,进而报404

此时需要根据微服务实际的URL地址重写路径,根据Spring官网文档,通过网关的过滤器,使用正则表达式可以重写路径
在这里插入图片描述
重写路径

spring:cloud:gateway:routes:-id: admin_routeuri: lb://xxxxxxpredicates:- Path=/api/**filters:- RewritePath=/api/?(?<segment>.*),/xxxxxx/$\{segment}

意思是将从网关过来的请求,去掉/api/,使用指定的url代替,即将/xxxxxx/替换掉/api/
这样访问http://localhost:88/api/captcha.jpg实际上是访问的http://localhost:8080/xxxxxx/captcha.jpg
在这里插入图片描述
这样就实现了对网关路由的重写

  • 作者:煎丶包
  • 原文链接:https://blog.csdn.net/qq_39794062/article/details/118492031
    更新时间:2022-07-05 13:55:46