我尝试将spring云网关配置为将HashiCorp领事的标准ui转发到“/ Consul /ui”或仅仅“/consul”下。然而,我不知道如何正确地做到这一点。领事正在按标准配置运行。我有一个外部ip地址和10.2.0.2的本地网络接口。我试过:
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,即领事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实际上可以在命令行上工作。然而,在浏览器中,我只看到领事徽标,但整个页面没有加载。
我当然也尝试过其他的组合,都没有用。
注意:领事/ui端点传递状态302,然后转发到实际页面。
注意:我在网关中使用SSL。
注意:ssh -N -f -L 8500:localhost:8500 <user>@<host>允许我在localhost:8500下本地打开预期的ui。
更新:显然是一个糟糕的选择,因为领事本身已经在这条路线下注册了,因此我有了冲突。这至少说明了为什么云网关尝试路由到端口8300。
发布于 2020-02-08 21:22:06
不幸的是,目前对这个问题没有真正的答案,但有一些棘手的解决办法。然而,人们正在研究一种解决方案,以便能够代理通过领事ui。参见例如https://github.com/hashicorp/consul/issues/1382
https://stackoverflow.com/questions/60021383
复制相似问题