【发布时间】:2023-03-09 01:56:01
【问题描述】:
我尝试将spring cloud gateway配置为转发到'/consul/ui'或只是'/consul'下的HashiCorp Consul的标准ui。但是,我不知道如何正确地做到这一点。 Consul 以标准配置运行。我在 10.2.0.2 上有一个外部 IP 地址和一个本地网络接口。我试过了:
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 徽标,但没有加载整个页面。
我当然也尝试了一些其他的组合,都没有奏效。
注意:consul /ui 端点传递一个状态 302,然后转发到实际页面。
注意:我在网关中使用 SSL。
注意:ssh -N -f -L 8500:localhost:8500 <user>@<host> 允许我在 localhost:8500 下本地打开预期的 ui。
更新:
显然/consul/** 是一个糟糕的选择,因为 consul 本身已经在这条路线下注册,因此我发生了冲突。这至少说明了为什么云网关尝试路由到 8300 端口。
【问题讨论】:
标签: java spring consul spring-cloud-gateway