springcloud gateway 路由配置问题

发布于 2022-09-12 03:34:21 字数 1789 浏览 17 评论 0

使用nacos作为配置和注册中心,spring cloud版本是Hoxton.SR3,
spring-cloud-alibaba版本是2.2.1.RELEASE,nacos版本是1.3.1-BETA。

gateway使用了像下面这样的路由配置:

      routes:
        - id: service-one
          uri: lb://service-one
          predicates:
            - Path=/service/**

请求/service/** 404,但是请求/service-one/**就没问题,这是什么情况?

这是工程结构:
image

这是gateway的启动类:

@SpringBootApplication
@EnableDiscoveryClient
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

这是gateway的配置文件:

server:
  port: 8001

spring:
  application:
    name: gateway
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
      discovery:
        server-addr: 127.0.0.1:8848
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
        - id: service-one
          uri: lb://service-one
          predicates:
            - Path=/service/**

这是service-one的启动类:

@SpringBootApplication
@EnableFeignClients
@RestController
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @RequestMapping("/test/map")
    public Map<String, String> test() {
        Map<String, String> map = new HashMap<>();
        map.put("hello", "nihao");
        return map;
    }
}

这是service-one的配置文件:

server:
  port: 8002

spring:
  application:
    name: service-one
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
      discovery:
        server-addr: 127.0.0.1:8848

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

少钕鈤記 2022-09-19 03:34:21

需要把前缀的service去掉,或者是在service-one这个服务里uri加上service
gateway的filters里的

StripPrefixGatewayFilterFactory

      routes:
        - id: service-one
          uri: lb://service-one
          predicates:
            - Path=/service/**
          filters:
            - StripPrefix=1
触ぅ动初心 2022-09-19 03:34:21

额,不是服务启动写入到nacos,gateway读取到nacos中到路由吗

好像Route是用ID来区分到,你尝试吧ID的service-one换成service试试

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文