https://www.cnblogs.com/grasp/p/11506426.html
这里引用别人的,,且试验过 ,没问题
server:
port: 9527
spring:
application:
name: cloud-gateway
cloud:
gateway:
routes:
- id: payment_routh #路由的ID,没有固定规则但要求唯一,建议配合服务名
uri: lb://CLOUD-PAYMENT-SERVICE #匹配后提供服务的路由地址
predicates:
# - Path=/payment/get/** # 断言,路径相匹配的进行路由
# - Between=2020-08-18T09:57:59.384+08:00[Asia/Shanghai],2020-08-18T10:03:00.384+08:00[Asia/Shanghai]
- Cookie=keyName, .*cook.* # 浏览器中 设置cookie, 或者 cmd中: curl http://localhost:9527/payment/get/1 --cookie "keyName="cookie" 这里判断cookie的 keyName是否包含"cook" 是的话就路由到对应的服务上去
# - Header=X-Request-Id, \d+ # cmd中: curl http://localhost:9527/payment/get/1 -H "X-Request-Id:123" 这里发送请求,getway判断Header中请求头是否是X-Request-Id, 且值是否是数字,是的话就路由到 服务上去,负载均衡
# - Host=**.baidu.com # cmd中: curl http://localhost:9527/payment/get/1 -H "Host: www.baidu.com" 这里发送请求,getway判断请求中的 host是否是**.baidu.com,是的话就路由到 服务上去,负载均衡
# - Method=GET # 这里请求是否是 GET PUT POST DELETE请求, 是的话就路由到对应服务商
# - Path=/payment/** # 这里表示请求路径是否符合要求 http://127.0.0.1:9527/payment/get/1, 是符合的,所以路由到对应的服务上去
# - Query=username, .*lvcai.* # 这里表示可以传二个值, 第二个值可以是正则表达式 , cmd中: curl http://localhost:9527/payment/get/1?username="lvcai" 这里判断userame是否包含"lvcai",是的话,就路由到对应服务上去
- id: payment_routh2
uri: lb://CLOUD-PAYMENT-SERVICE
predicates:
- Path=/payment/lb/** #断言,路径相匹配的进行路由
eureka:
instance:
hostname: cloud-gateway-service
client:
service-url:
register-with-eureka: true
fetch-registry: true
defaultZone: http://eureka7001.com:7001/eureka
getway的 filters实现限流功能:
https://blog.csdn.net/u014677702/article/details/85888403