spring - 自定义 Spring Zuul 动态路径

标签 spring spring-boot netflix-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/ 

显然,这是一个无效配置,因为 app1app2 都存在 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/

相关文章:

java - Spring JPA 一对一映射获取 null

java - 无法在 Swagger 上查看根 API 端点

java - Spring Security 匿名用户可以访问每个 url

java - Spring data jpa - 更新父级时,如何从数据库中删除与其关联的子级(基于id)并添加新的子级

java - 为什么java中一个类无法识别另一个类的getter方法?

spring - 为仅 REST 应用程序禁用 Spring MVC View 解析

java - Spring Boot YARN 不运行在 Hadoop 2.8.0 客户端无法访问 DataNode

amazon-web-services - Netflix Zuul/Ribbon/Eureka与AWS ELB/ALB&ECS

java - ZuulException 转发错误,ClientException null

java - 根据查询参数动态更改 Zuul 中路由的 url