Spring Cloud Gateway:如何配置到 Consul UI 的路由?
Spring Cloud Gateway: How to configure a route to Consul UI?
我尝试配置 spring 云网关转发到标准 ui 的 HashiCorp Consul,在“/consul/ui”或只是“/consul”下。但是我不知道如何正确地做到这一点。 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 徽标,但整个页面都无法加载。
我当然也试过其他一些组合,none成功了。
注意:consul /ui 端点传送状态 302,然后转发到实际页面。
注意:我在网关中使用 SSL。
注意:ssh -N -f -L 8500:localhost:8500 <user>@<host>
允许我在 localhost:8500 下本地打开预期的 ui。
更新:
显然 /consul/**
是一个糟糕的选择,因为 consul 本身已经在这条路线下注册了,因此我发生了冲突。这至少清楚了,为什么云网关尝试路由到端口 8300。
不幸的是,目前这个问题没有真正的答案,但有一些 hacky 解决方法。但是,人们正在研究一种能够代理 pass consul ui 的解决方案。参见例如https://github.com/hashicorp/consul/issues/1382
我尝试配置 spring 云网关转发到标准 ui 的 HashiCorp Consul,在“/consul/ui”或只是“/consul”下。但是我不知道如何正确地做到这一点。 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 徽标,但整个页面都无法加载。
我当然也试过其他一些组合,none成功了。
注意:consul /ui 端点传送状态 302,然后转发到实际页面。
注意:我在网关中使用 SSL。
注意:ssh -N -f -L 8500:localhost:8500 <user>@<host>
允许我在 localhost:8500 下本地打开预期的 ui。
更新:
显然 /consul/**
是一个糟糕的选择,因为 consul 本身已经在这条路线下注册了,因此我发生了冲突。这至少清楚了,为什么云网关尝试路由到端口 8300。
不幸的是,目前这个问题没有真正的答案,但有一些 hacky 解决方法。但是,人们正在研究一种能够代理 pass consul ui 的解决方案。参见例如https://github.com/hashicorp/consul/issues/1382