spring:
cloud:
gateway:
discovery:
locator:
enabled: true # 启用自动根据服务ID生成路由
lower-case-service-id: true # 设置路由的路径为小写的服务ID
# 一个请求满足多个路由的谓词条件时,请求只会被首个成功匹配的路由转发
routes: # 路由
- id: time_route
uri: https://www.baidu.com/
predicates:
# Predicate 支持设置一个时间,在请求进行转发的时候,可以通过判断在这个时间之前或者之后进行转发 可以用在限时抢购的一些场景中。
# - After=2018-01-20T06:06:06+08:00[Asia/Shanghai]
# - Before=2022-01-20T06:06:06+08:00[Asia/Shanghai]
- Between=2021-01-20T06:06:06+08:00[Asia/Shanghai], 2021-09-13T15:55:06+08:00[Asia/Shanghai]
- id: cookie_route
uri: https://www.baidu.com/
# 通过 Cookie 匹配
predicates:
- Cookie=busl, app.a
- id: header_route
uri: https://www.baidu.com/
# Header Route Predicate 和 Cookie Route Predicate 一样,也是接收 2 个参数,
# 一个 header 中属性名称和一个正则表达式,这个属性值和正则表达式匹配则执行。 \d:数字 +:出现至少1次
predicates:
- Header=X-Request-Id, \d+
- id: host_route
uri: https://www.baidu.com/
# 通过 Host 匹配
predicates:
- Host=**.jetbrains.com
- id: method_route
uri: https://www.baidu.com/
# 可以通过是 POST、GET、PUT、DELETE 等不同的请求方式来进行路由。
predicates:
- Method=POST
- id: host_route
uri: https://www.baidu.com/
# 通过请求路径匹配
predicates:
- Path=/foo/{segment}
# 通过请求参数匹配
- id: query_route
uri: https://www.baidu.com/
# 当请求中包含 keep 属性并且参数值是以 pu 开头的长度为三位的字符串才会进行匹配和路由。
# 去掉, pub. 请求汇总带有 smile 参数即会匹配路由,不带 smile 参数则不会匹配。
predicates:
- Query=smile, pub.
- id: remoteaddr_route
uri: https://blog.csdn.net
# 通过请求 ip 地址进行匹配
# Predicate 也支持通过设置某个 ip 区间号段的请求才会路由,
# RemoteAddr Route Predicate 接受 cidr 符号 (IPv4 或 IPv6) 字符串的列表(最小大小为 1),
# 例如 192.168.0.1/16 (其中 192.168.0.1 是 IP 地址,16 是子网掩码)。
predicates:
- RemoteAddr=192.168.1.104
# 组合使用
- id: host_foo_path_headers_to_httpbin
uri: https://blog.csdn.net
predicates:
- Host=**.foo.org
- Path=/headers
- Method=GET
- Header=X-Request-Id, \d+
- Query=foo, ba.
- Query=baz
- Cookie=chocolate, ch.p
- After=2018-01-20T06:06:06+08:00[Asia/Shanghai]
management:
endpoints:
web:
exposure:
include: "*"