我有一个 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/
显然,这是一个无效配置,因为 app1
和 app2
都存在 path
冲突。我希望路由以源主机为条件——以前,我们可以使用 Apache 做到这一点。
我怀疑有一种方法可以通过 Spring Zuul 实现这一点,因为 Spring 中的模式是覆盖你想要的东西,但我不确定到底需要覆盖/配置什么。
如何实现动态路由(特别是对于入站主机)?
最佳答案
您是否使用 Eureka 进行发现?
如果你是:你不需要指定到任何动态服务的路由。
例如,如果您在 application.properties
上有一个带有 server.port=0
的服务,eureka 将为每个新实例分配一个随机端口。因此,假设您的服务名称是 user-service,当您实例化它时,eureka 将它分配给端口 40000(例如)。
因此,当客户端使用网关 API 时,它会查找如下内容:http://localhost:8080/user-service/ ……该服务由 URL 上的用户服务标识,它是在运行时创建的,您不需要在任何 .yml
或 .properties
文件中编写此规则。
关于spring - 自定义 Spring Zuul 动态路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55072164/