Spring Cloud Gateway结合Eureka负载均衡无法转发HTTPS请求的求助
解决Spring Cloud Gateway负载均衡转发HTTPS请求的问题
当微服务启用SSL后,lb://MICROSERVICE-NAME配置失效的核心原因是:Eureka默认注册微服务的HTTP端口,且负载均衡客户端默认用HTTP协议调用实例。通过以下配置可让网关基于负载均衡转发HTTPS请求:
1. 配置微服务向Eureka注册HTTPS元数据
在每个启用SSL的微服务配置文件中,添加Eureka注册的HTTPS相关配置,让Eureka记录实例的HTTPS端口与协议:
eureka: instance: non-secure-port-enabled: false secure-port-enabled: true secure-port: ${server.port} # 微服务的HTTPS端口 status-page-url: https://${eureka.instance.hostname}:${server.port}/actuator/info health-check-url: https://${eureka.instance.hostname}:${server.port}/actuator/health home-page-url: https://${eureka.instance.hostname}:${server.port}/
2. 配置网关负载均衡客户端强制使用HTTPS
在网关配置文件中,指定对应微服务的调用协议为HTTPS:
spring: cloud: loadbalancer: clients: MICROSERVICE-NAME: # 替换为你的微服务名称 scheme: https
配置完成后,网关通过lb://MICROSERVICE-NAME路由时,会自动用HTTPS协议调用负载均衡后的微服务实例。
3. 处理自签名SSL证书(测试/内部环境可选)
若微服务使用自签名证书,网关需信任该证书才能完成SSL握手,可选择以下方式:
- 将微服务证书导入网关的JVM信任库;
- 测试环境下临时禁用SSL证书验证:
spring: cloud: gateway: httpclient: ssl: use-insecure-trust-manager: true
注意事项
- 不存在
lbs://协议,Spring Cloud Gateway负载均衡仍使用lb://,只需配合上述配置即可实现HTTPS负载均衡; - 确保微服务SSL配置正确、端口开放,且网关能正常访问微服务的HTTPS端口。
内容的提问来源于stack exchange,提问作者iftekher2283
相关产品推荐
相关产品推荐

