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

Spring Cloud Gateway Eureka Docker路由不正确

狄河
2023-03-14

我有一个类似的问题。它仍然没有答案。。。

我有一个Eureka服务器、一个Spring Cloud网关和其他基于Spring的服务。当我把所有东西都放在本地运行时,一切都很好。

现在,我正在尝试将所有内容都放在容器中。我已经知道如何使业务服务服务和网关到达eureka服务器。但是现在当网关尝试路由到其他服务时,我面临一个问题。从Spring网关访问业务服务的路由是错误的。

网关的application.yml.如您所见,它使用负载均衡器uri:

server:
  port: 8080
spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
        - id: cognito
          uri: lb://cognito
          predicates:
            - Path=/cognito/**
          filters:
            - RewritePath=/cognito/(?<path>.*), /$\{path}

码头工人写作。yml。在所有文件中,[host.docker.internal]唯一写入的位置是:

services:
  apigateway:
    ports:
      - "8080:8080"
    command: mvn clean spring-boot:run
    links:
      - "eureka"
    depends_on:
      - "eureka"
    environment:
      server.port: 8080
      eureka.client.serviceUrl.defaultZone: http://host.docker.internal:8761/eureka
  eureka:
    ports:
      - "8761:8761"
    command: mvn clean spring-boot:run
    ports:
      - "8085:8085"
    command: mvn clean spring-boot:run
    links:
      - "eureka"
    depends_on:
      - "eureka"
environment:
  server.port: 8085
  eureka.client.serviceUrl.defaultZone: http://host.docker.internal:8761/eureka

执行过程中发生了什么:

apigateway_1  | java.lang.IllegalStateException: Could not create URI object: Malformed IPv6 address at index 8: http://[host.docker.internal:8761]:8085/auth
apigateway_1  |         at org.springframework.web.util.HierarchicalUriComponents.toUri(HierarchicalUriComponents.java:521) ~[spring-web-5.3.9.jar!/:5.3.9]
apigateway_1  |         Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
apigateway_1  | Error has been observed at the following site(s):
apigateway_1  |         |_ checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
apigateway_1  |         |_ checkpoint ⇢ HTTP POST "/cognito/auth" [ExceptionHandlingWebHandler]

eureka spring gateway duo没有正确路由到cognito容器的地址。如何纠正它????

共有1个答案

竺绍辉
2023-03-14

问题出在认知服务的application.yml。在那里我选择了实例的名称,我不应该。我应该只使用preferIpAddress=true。

之前:

eureka:
    instance:
        hostname: localhost

之后:

eureka:
    instance:
        preferIpAddress: true

和docker创作。yml我为eureka服务(比如说:eureka服务)输入了主机名,然后添加了环境var。客户服务URL。默认区域:http://eureka-service:8761/eureka

就是这样!

 类似资料:
  • 我意识到以前有人问过我这个问题,请容忍我,因为我还在学习这个问题。我想我已经尝试了所有的解决方案,但是没有运气。 问题是:当重定向到时,它没有呈现预期的组件() 我已经实现了一个,如下所示; privaterout.js 这就是我使用它的地方; index.js 在这个问题中要补充几点: 我确认重定向确实发生在(我通过将

  • 我是新的反应,不知道为什么这不会起作用。 我的路由器代码在这里: 因此,这段代码所发生的情况是: localhost/显示良好

  • 在我的React项目中,我有: 没有标题的登录组件 问题:我应该如何构建我的路由器从登录页面开始,当我点击登录时,路由器会把我带到仪表板?

  • 利用 pipeline 进行中间件的层层处理后,接下来 laravel 就会利用请求的 url 来寻找与其对应的路由,laravel 采用对路由注册的 uri 进行正则编译,然后利用 request 的 url 进行正则匹配来寻找正确的路由。 前期准备 在上一篇文章中,我们了解了 Pipeline 的原理,我们知道它调用了 dispatchToRouter() 这个函数: protected fu

  • 考虑以下事项: 我有一个应用模板,一个HeaderTemboard,和参数化的路由集与相同的处理程序(在应用模板)。我希望在没有找到东西的时候能够服务404路线。例如, /CA/SanFrancisco应该由区域查找和处理,而 /SanFranciscoz应该是404。 下面是我如何快速测试路线的。 问题是 /SanFranciscoz总是由区域页面处理,但我希望它是404。此外,如果我向第一个路

  • 我有一个名为Dashboard的父组件,它被呈现为路由,如下所示: 我试着嘲笑每个人在嵌套路由上的解决方案,但我似乎无法解决我的问题。