我尝试将 Spring Cloud Gateway 配置为转发到“/consul/ui”或“/consul”下 HashiCorp Consul 的标准 ui。然而我不知道如何正确地做到这一点。 Consul 正在标准配置下运行。我有一个外部 IP 地址和 10.2.0.2 上的本地网络接口(interface)。我尝试过:
routes:
- id: consul
uri: "http://127.0.0.1:8500"
predicates:
- Path=/consul/
curl -L 127.0.0.1/consul/ui 但是给了我一个 500,因为根据日志,网关不匹配/consul,而是/consul/**,然后决定路由到 10.2.0.2:8300,这是 Consuls rpc 端点。
再次尝试:
- id: consul
uri: "http://127.0.0.1:8500"
predicates:
- Path=/consul/**
filters:
- StripPrefix=1
...与另一个完全一样。 另一种有希望的方法:
- id: consul
uri: "http://127.0.0.1:8500"
predicates:
- Path=/consul/**
filters:
- RewritePath=/consul/(?<segment>.*), /ui/$\{segment}
使用curl -L 实际上可以在命令行上使用。但是,在浏览器中我只能看到 consul Logo ,但整个页面无法加载。
我当然也尝试过其他一些组合,但没有成功。
注意:consul/ui 端点会发送状态 302,然后转发到实际页面。
注意:我在网关中使用 SSL。
注:ssh -N -f -L 8500:localhost:8500 <user>@<host>
允许我在 localhost:8500 下本地打开预期的 ui。
更新:
显然/consul/**
这是一个糟糕的选择,因为领事本身已经在这条路线下注册,因此我遇到了冲突。这至少说明了为什么云网关尝试路由到端口 8300。
最佳答案
不幸的是,目前这个问题还没有真正的答案,但有一些古怪的解决方法。然而,人们正在研究一种能够代理传递 consul ui 的解决方案。参见例如https://github.com/hashicorp/consul/issues/1382
关于java - Spring Cloud 网关: How to configure a route to Consul UI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60021383/