java - Spring Cloud 网关: How to configure a route to Consul UI?

标签 java spring consul spring-cloud-gateway

我尝试将 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/

相关文章:

docker 和领事 : Pinging services works but curl always returns couldn't connect to host error

jhipster - 微服务始终连接到 localhost 以获取 consul

java - AOT 检测是什么意思?

java - 用于在 Java 中获取元音出现的正则表达式?

java - 为什么 Spring Social Authentication 是 NULL?

java - transient 域实例jpa&spring

java - Swagger 递归地解决类型的依赖关系(无限循环)

ssl - Hashicorp Consul - 如何从 Kubernetes 集群中的 Pod 中执行经过验证的 TLS

java - 如何在 Eclipse 中从 Java 编辑器显示 scala 文档?

java - 我的子弹出现在错误的地方