spring - 自定义 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 做到这一点。app1
app2
我怀疑有一种方法可以通过 Spring Zuul 实现这一点,因为 Spring 中的模式是覆盖你想要的东西,但我不确定需要覆盖/配置什么。
如何实现动态路由(特别是对于入站主机)?
解决方案
您是否使用尤里卡进行发现?
如果您是:您不需要指定任何动态服务的路由。
例如,如果您有一个带有server.port=0
on 的服务application.properties
,eureka 将为每个新实例分配一个随机端口。因此,假设您的服务名称是用户服务,当您实例化它时,eureka 将其分配给端口 40000(例如)。
因此,当客户端使用网关 API 时,它会查找如下内容:http://localhost:8080/user-service/ ... 。该服务由 URL 上的用户服务标识,它是在运行时创建的,您不需要在任何文件中编写此.yml
规则.properties
。
推荐阅读
- java - DJava.library.path 不起作用,但将目录添加到 PATH 有效
- java - 不幸的是应用程序已停止,我该如何解决?
- typescript - 如何强制 npm 仅实例化来自两个不同项目的依赖项的一份副本
- php - 在 php:php-fpm docker image 中启用 php 模块
- android - Android 获取相邻单元格的 MCC + MNC 字符串
- clojure - 可以将 Clojure 规范设为私有吗?
- google-cloud-sql - 我可以使用 cloudsql-proxy 连接到运行 postgres 的自定义 VM 吗?
- javascript - 选项卡单击在悬停时附加了上下文菜单时不起作用
- java - 如何找到以下代码的最坏情况复杂性?
- javascript - 在 Node.JS 中,我将如何使用 Google Sheets API 向上“移动”整个值范围?