spring cloud gateway如何路由到https的下游服务

现在我有一个微服务架构的项目,网关用的是spring cloud gateway,下游服务都配置成只支持https访问的,spring cloud gateway的路由策略需要使用负载均衡;请教一下各位,有没有实现过的,因为官网上只列举了用直连策略的,路由的时候把http改成https;我现在能想到的方案就是使用VIP代理真实的服务器IP,但如果没有VIP的话能做到么?
  • 官网的教程

img

  • 我这边使用gateway自带的lb的配置

img

  • 调用接口时返回的错误

img

要说明一下,我的gateway已经配置成https访问了,如果把下游服务的https去掉或者路由的时候用https代替lb都是可以成功调用的

在网关中就用lb协议就可以了,getaway会依据注册中心中返回的secure值自动判断下游微服务的协议模式,但是有一种情况,微服务注册到注册中心的secure属性默认为false;因此你需要检查你的微服务是否注册时把这个值注册成了secure=true.

img

路由到https的下游服务可以使用spring cloud gateway的负载均衡功能实现。可以在配置文件中配置路由规则,将请求转发到后端的https服务上。例如,可以使用以下配置:


spring:
  cloud:
    gateway:
      routes:
        - id: route_name
          uri: https://upstream_server
          predicates:
            - Host=**.yourhost.org
          filters:
            - RewritePath=/foo/(?<segment>.*), /$\{segment}

在上面的配置中,uri字段指定了后端服务的地址,它必须使用https协议。如果没有VIP的话,可以直接使用真实服务器的IP地址来配置路由规则。
需要注意:
如果使用负载均衡策略路由到https的后端服务,还需要为网关配置SSL证书,以便网关能够正确处理https请求。可以参考spring cloud gateway的文档,了解如何配置SSL证书。