我有一个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
和app1
两者都有app2
冲突。我希望路由以源主机为条件-以前,我们能够使用Apache做到这一点。
我怀疑有一种方法可以通过Spring Zuul来实现,因为Spring中的模式是要覆盖您想要的东西,但是我不确定确切需要覆盖/配置什么。
如何实现动态路由(特别是对于入站主机)?
答案 0 :(得分:0)
您是否正在使用尤里卡进行发现?
如果是这样,则无需指定通往任何动态服务的路由。
例如,如果您在server.port=0
上有application.properties
的服务,则eureka将为每个新实例分配一个随机端口。因此,可以说您的服务名称是用户服务,在实例化它时,eureka将其分配给端口40000(例如)。
因此,当客户端使用网关API时,它将查找以下内容:http://localhost:8080/user-service/...。该服务由URL上的用户服务标识,它是在运行时创建的,您无需在任何.yml
或.properties
文件中编写此规则。