首页 > 解决方案 > 自定义 Spring Zuul 动态路径

问题描述

我有一个 Spring Boot 应用程序,它利用 Zuul 反向代理路由多个微服务。以前,我们使用 Apache,它可以解释所需的主机。

我的伪配置:

zuul:
  routes:
    app1:
      path: /path/conflict/**
      url: https://microservice1.mydomain.com/
    app2:
      ## only route for certain hosts!
      path: /path/conflict/**
      url: https://microservice2.mydomain.com/ 

显然,这是一个无效的配置,因为和path都存在冲突。我希望路由以源主机为条件——以前,我们可以用 Apache 做到这一点。app1app2

我怀疑有一种方法可以通过 Spring Zuul 实现这一点,因为 Spring 中的模式是覆盖你想要的东西,但我不确定需要覆盖/配置什么。

如何实现动态路由(特别是对于入站主机)?

标签: springspring-bootnetflix-zuul

解决方案


您是否使用尤里卡进行发现?

如果您是:您不需要指定任何动态服务的路由。

例如,如果您有一个带有server.port=0on 的服务application.properties,eureka 将为每个新实例分配一个随机端口。因此,假设您的服务名称是用户服务,当您实例化它时,eureka 将其分配给端口 40000(例如)。

因此,当客户端使用网关 API 时,它会查找如下内容:http://localhost:8080/user-service/ ... 。该服务由 URL 上的用户服务标识,它是在运行时创建的,您不需要在任何文件中编写此.yml规则.properties


推荐阅读