环境准备

eureka,gateway,要路由的服务(bit-msa-pasm-api)

正确路由

context-path和application.name不一致

在这里插入图片描述

注册中心

在这里插入图片描述

Gateway网关设置

在这里插入图片描述

访问结果

直接访问bit-msa-pasm-api
在这里插入图片描述
通过网关访问访问bit-msa-pasm-api
在这里插入图片描述

路由失败

context-path和application.name一致

在这里插入图片描述

注册中心

在这里插入图片描述

Gateway网关设置

在这里插入图片描述

访问结果

直接访问bit-msa-pasm-api
在这里插入图片描述

通过网关访问访问bit-msa-pasm-api
在这里插入图片描述

路由失败-原因

若配置路由URI为lb,则注册中心服务名称不能和server.servlet.context-path名称一致,否则contextPath会被改写为空字符串;

路由失败-解决方案

gateway.discovery.locator

重写过滤链

server:
 port: 8899
spring:
 cloud:
   gateway:
     discovery:
       locator:
         #是否与服务发现组件进行结合,通过serviceId转发到具体实例
         #是否开启基于服务发现的路由规则
         enabled: true
         ##表示将请求路径的服务名配置改成小写 ,因为服务注册的时候,向注册中心注册时将服务名转成大写的了
         lowerCaseServiceId: true
         filters:
           - StripPrefix=0
     routes:
       - id: after_route
         uri: lb://bit-msa-pasm-api
         predicates:
           - Path=/bit-msa-pasm-api/service/**

方案一

在这里插入图片描述

在这里插入图片描述

方案二

在这里插入图片描述
在这里插入图片描述

包装一层前缀

server:
  port: 8899
spring:
  cloud:
    gateway:
      discovery:
        locator:
          #是否与服务发现组件进行结合,通过serviceId转发到具体实例
          #是否开启基于服务发现的路由规则
          enabled: true
          ##表示将请求路径的服务名配置改成小写 ,因为服务注册的时候,向注册中心注册时将服务名转成大写的了
          lowerCaseServiceId: true
      routes:
        - id: after_route
          uri: lb://bit-msa-pasm-api
          predicates:
            - Path=/xxx/bit-msa-pasm-api/service/**
          filters:
            - StripPrefix=1

在这里插入图片描述

在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐