要说明一下,我的gateway已经配置成https访问了,如果把下游服务的https去掉或者路由的时候用https代替lb都是可以成功调用的
在网关中就用lb协议就可以了,getaway会依据注册中心中返回的secure值自动判断下游微服务的协议模式,但是有一种情况,微服务注册到注册中心的secure属性默认为false;因此你需要检查你的微服务是否注册时把这个值注册成了secure=true.
路由到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证书。