参考资料
SpringCloud中替代Zuul的存在
1 | <dependency> |
注意不能添加starter-web依赖,否则会冲突
基本配置(基于yml)
1 | server: |
进阶配置(基于yml)
限流
1 | <!-- spring data redis reactive 依赖 --> |
1 | spring: |
1 | package com.ruoyi.gateway.config; |
通过时间匹配
1 | ## 在某某时间之后/之前/之间发生转发 |
通过Cookie匹配
1 | ## 匹配Cookie为[name,ymt]的请求,注意的是不能设置多个Cookie |
测试:curl localhost:8999 --cookie "name=ymt"
成功转发
通过 Header 属性匹配
1 | ## 匹配Header为[name=X-Request-Id,value=任意数字]的请求,可以为正则表达 |
测试:curl http://localhost:8080 -H "X-Request-Id:666666"
通过HOST匹配
1 | predicates: |
测试:curl http://localhost:8080 -H "Host: www.ityouknow.com"
测试:curl http://localhost:8080 -H "Host: md.ityouknow.com"
通过请求方式匹配
1 | predicates: |
测试:curl -X POST http://localhost:8080
通过请求路径匹配
1 | predicates: |
测试:curl http://localhost:8080/foo/xx
通过请求参数匹配
1 | ## 请求参数包含smile的请求进行转发,注意的是这只有GET请求可以拦截,POST就算包涵smile参数,请求也是拦截不到的 |
测试curl localhost:8080?smile=x&id=2
1 | ## 这样只要当请求中包含 keep 属性并且参数值是以 pu 开头的长度为三位的字符串才会进行匹配和路由 |
测试:curl localhost:8080?keep=pub
通过请求 ip 地址进行匹配
1 | predicates: |
测试:curl localhost:8080
多种拦截配合
1 | predicates: |
有多个条件的存在,必须全部满足之后才会进行转发
测试:curl -X GET "localhost:8999?&smile=1" --cookie "name=ymt"