在将我的应用程序部署到CloudFoundry实例后,我一直试图使其运行。我正在使用的实例不允许使用http执行请求(它们只会超时),因此我必须将所有请求路由到https。
我正在使用的组件/版本是:
配置失败
EurekaClient配置(在网关和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}
我已经尝试过的事情:
lb:https://user-service
->据我所知,不会起作用uri: https://user-service.cf-instance.io
)->路由工作正常。但是我不想在配置中定义URL,它们应该由eureka返回并由网关正确建立。
预先感谢
编辑:
这是/eureka/apps
的输出
https://pastebin.com/WP3b6PQG
我目前正在努力将当前代码添加到GitHub中,我将在找到清除状态的时间后对其进行编辑。
编辑2:
您可以在my GitHub找到完整的示例(使用SpringCloudGateway,Eureka等)。
这是一个正在运行的示例,应用的配置将不使用Eureka。要使用Eureka,必须在配置服务中使用gateway-service-cloud.yml
。
- id: user-service
uri: lb://user-service
请忽略文档服务,它将无法正常工作,我首先需要重写路径。
答案 0 :(得分:0)
好的,我在解决documentation-service
的“路由”问题时找到了解决方法。
我的问题是将属性eureka.instance.securePort
设置为${server.port}
。此属性必须设置为443
(未设置任何内容时,将不应用默认值443)。将其添加到我的配置中后,在推送我的应用程序后一切正常。