Spring CloudFoundry 中的云网关

Spring Cloud Gateway in CloudFoundry

我一直在尝试将我的应用程序部署到 CloudFoundry 实例后 运行。我正在使用的实例不允许使用 http 执行请求(它们只会超时)所以我必须将所有请求路由到 https。

我用的components/versions是:

失败的配置

EurekaClient Config(在网关和gw应该路由到的后端)

eureka:
  client:
    serviceUrl:
      defaultZone: ${DISCOVERY_SERVICE_URL:http://localhost:8061}/eureka/
  instance:
    hostname: ${vcap.application.uris[0]:localhost}
    nonSecurePortEnabled: false
    securePortEnabled: true
    securePort: ${server.port}
    statusPageUrl: https://${eureka.instance.hostname}/actuator/info
    healthCheckUrl: https://${eureka.instance.hostname}/actuator/health
    homePageUrl: https://${eureka.instance.hostname}/
    secure-virtual-host-name: https://${vcap.application.application_uris[0]}

网关配置

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
      - id: user-service
        uri: lb://user-service
        predicates:
        - Path=/user/**
        filters:
        - RewritePath=/user/(?<segment>.*), /$\{segment}

我已经尝试过的东西:

但我不想在我的配置中定义 url,它们应该由 eureka 返回并由网关正确构建。

提前致谢

编辑:

这是/eureka/apps的输出 https://pastebin.com/WP3b6PQG

我目前正在努力将当前代码导入 GitHub 我会编辑这个 post 当我找到时间来获得清晰的状态时。

编辑 2:

您可以在 my GitHub 找到完整示例(使用 SpringCloudGateway、Eureka 等) 这是一个 运行ning 示例,应用的配置不会使用 Eureka。要使用 Eureka,必须采用配置服务中的 gateway-service-cloud.yml

- id: user-service uri: lb://user-service

请忽略文档服务,这还行不通,我首先需要重写路径。

好的,我在修复 documentation-service 的 "routing" 问题时找到了解决方案。

我的问题是将 属性 eureka.instance.securePort 设置为 ${server.port}。这个 属性 必须设置为 443 (没有设置时默认的 443 不应用)。将此添加到我的配置时,在推送我的应用程序后一切都按预期工作。