在SpringCloud Gateway网关配置(一)中,介绍了路由同时满足http(80端口)和https(443端口)方式访问的配置。

但是在实际工作中,发现后端微服务也会出现既有HTTP的服务,又有HTTPS的服务。

研究Gateway源码发现,涉及获取后端微服务访问协议的地方LoadBalancerClientFilter中有如下代码:

org.springframework.cloud.gateway.filter.LoadBalancerClientFilter

经过断点调试发现该配置与负载均衡配置相关。

做如下配置:

#网关路由配置
spring:
  cloud:
    gateway:
      filter:
      routes:
        - id: service-demo
          uri: lb://service-demo
          predicates:
            - Path=/service-demo/**
          filters:
            - StripPrefix=1

#设置路由转发以https方式转发,true则以https方式转发false以http方式转发
service-demo:
  ribbon:
    IsSecure: true

测试发现配置生效,配置中的service-demo为服务名称。所以只要配置不同服务对应的IsSecure值即可支持对应服务的访问方式。

本次配置中SpringBoot版本:2.1.11.RELEASE,SpringCloud版本:Greenwich.SR4

自此配置完成。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐