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