当前位置: 首页 > 知识库问答 >
问题:

Spring云网关:如何配置去领事UI的路由?

欧阳俊明
2023-03-14

我尝试将spring cloud gateway配置为转发到'/Consul/ui'或仅'/Consul'下的HashiCorp Consult的标准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 rpcendpoint。

再试一次:

- 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/**是一个错误的选择,因为consult本身已经在此路由下注册,因此我发生了冲突。这至少说明了为什么云网关尝试路由到端口8300。

共有1个答案

乐正乐湛
2023-03-14

不幸的是,目前对这个问题还没有真正的答案,只有一些老生常谈的解决办法。然而,人们正在研究一种能够代理通过领事UI的解决方案。例如,参见https://github.com/hashicorp/conrul/issues/1382

 类似资料:
  • null 编辑1:在@SpencerGibb的帮助下,我们用HTTPS设置了spring云网关。但我们还面临一些额外的问题 如果在API网关和服务都启用了HTTPS,我们收到以下错误 javax.net.ssl.sslexception:在io.netty.handler.ssl.sslhandler.handshake(...)处握手超时(未知源)~[netyhandler-4.1.31.fin

  • 我不知道spring-cloud-gateway是否支持从领事注册中心读取路由,就像Zuul一样。 另外,我用--debug启动了这一行:

  • 我已经用Eureka发现服务实现了Spring Cloud Gateway,一切都很好,但我看到了一些我在编写URL时不知道如何处理的事情,如果我没有在URL的末尾放一个/,Gateway会直接使用其实际URL(在Eureka注册)重定向到应用程序。 例如: https://example.com/bar重定向到应用程序URL(http://example.app.url.com:8010/bar

  • 在下面的spring cloud gateway配置中,我试图用匹配路径结束,但它不能匹配路径: spring cloud gateway打印以下日志:

  • 请帮忙。我正在使用Spring Cloud Gateway,我不断收到以下Cors错误: CORS策略阻止从源http://localhost:4200在http://localhost:8084/users/files处访问XMLHttpRequest:对预飞行请求的响应无法通过权限改造检查:请求的资源上不存在“访问控制-允许-源”标头。 这是我的application.yml档案

  • Spring Cloud Greenwich将Spring Cloud netflix zuul置于维护模式,因此我正在尝试从zuul迁移到Spring Cloud Gateway。 和Zuul一起我有一条路 我所做的基本上是忽略接收路径中主计划之前或之后的所有内容,并重定向到api主计划。例如,和都指向同一个api(原因是是一个较大实体的子资源,该实体负责创建新的,但是可以将视为完整的资源,用于