1、转发http配置-普通方式
server:
port: 8088
spring:
application:
name: api-gateway
cloud:
gateway:
routes:
-id: url-proxy-1
uri: https://blog.csdn.net
predicates:
-Path=/csdn
上面这段配置的意思是,配置了一个 id 为 url-proxy-1的URI代理规则,路由的规则为:
当访问地址 http://localhost:8088/csdn/123.jsp
时,会路由到地址 https://blog.csdn.net/123.jsp
字段说明
- id:我们自定义的路由 ID,保持唯一
- uri:目标服务地址
- predicates:路由条件,Predicate 接受一个输入参数,返回一个布尔值结果。该接口包含多种默认方法来将 Predicate 组合成其他复杂的逻辑(比如:与,或,非)。
- path: 监听需要转发的地址,
2、转发http配置-使用注册中心地址
2.1、直接转发
server:
port: 8088
spring:
cloud:
gateway:
routes:
- id: http1
uri: "lb://serviceName" #http转发配置,通过nacos注册中心调用 serviceName
predicates:
- Path=/**
其中 "lb://serviceName"
表示 使用注册中心的地址进行转发,lb
是loadbalancer
的简写,lb://
后面一定要填写正确的服务名称,是通过spring.application.name
配置的名称,当然也可以直接写 serviceName
;
注意: 当 Path 为`/,且uri为
“lb://serviceName”` 时表示监听所有服务的地址进行路由转发**
2.2、转发指定的path
spring:
cloud:
gateway:
routes:
- id: sdfsd
uri: "lb:ws://blade-system"
predicates:
- Path=/blade-system/websocket/**
discovery:
locator:
enabled: true
loadbalancer:
retry:
enabled: true
假设2个服务的IP地址
- spring gateway 的服务ip地址为:
http://192.168.1.10:8000
- blade-system服务的ip为:
http://192.168.1.10:9000
当我访问 http://192.168.1.10:8000/blade-system/websocket/topic
时,会路由到 blade-system服务的地址: http://192.168.1.10:9000/websocket/topic
3、转发websocket配置
spring gatewat 默认情况下是不转发websocket请求的,所以需要我们自行配置转发规则;
spring:
cloud:
gateway:
routes:
- id: http1
uri: "ws://127.0.0.1:8081" #websocket配置,直接地址使用方式
predicates:
- Path=/websocket_1
- id: websocket1
#uri: "lb:ws://serviceName" #websocket配置,通过nacos注册中心调用serviceName
predicates:
- Path=/websocket_2
4、转发多个地址
因为routes本身就是个列表,转发多个就直接配置多个路由即可
spring:
cloud:
gateway:
routes:
- id: http1 # 配置第一个路由
uri: "lb://serviceName" #http转发配置,通过nacos注册中心调用serviceName使用方式2
predicates:
- Path=/**
- id: websocket1 # 配置第二个路由
uri: "lb:ws://serviceName" #websocket配置,通过nacos注册中心调用serviceName使用方式2
predicates:
- Path=/websocket