快捷搜索: 王者荣耀 脱发

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

Gateway网关重写路由路径

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

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

spring:
  cloud:
    gateway:
      routes:
        - id: admin_route
          uri: lb://xxxxxx
          predicates:
            - Path=/api/**

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

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

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

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

经验分享 程序员 微信小程序 职场和发展