【问题标题】:Spring Cloud Gateway: How to configure a route to Consul UI?Spring Cloud Gateway:如何配置到 Consul UI 的路由?
【发布时间】: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 &lt;user&gt;@&lt;host&gt; 允许我在 localhost:8500 下本地打开预期的 ui。

更新: 显然/consul/** 是一个糟糕的选择,因为 consul 本身已经在这条路线下注册,因此我发生了冲突。这至少说明了为什么云网关尝试路由到 8300 端口。

【问题讨论】:

    标签: java spring consul spring-cloud-gateway


    【解决方案1】:

    不幸的是,目前这个问题没有真正的答案,但有一些 hacky 解决方法。然而,人们正在研究一种能够代理通过 consul ui 的解决方案。参见例如https://github.com/hashicorp/consul/issues/1382

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-01
      • 2021-06-12
      • 2019-06-24
      • 1970-01-01
      • 2019-10-12
      • 2023-04-02
      • 2023-01-21
      • 2019-08-03
      相关资源
      最近更新 更多