Gateway简单配置使用(一步到位)
gateway是一个分布式网关组件,其具有路由、断言、过滤等功能。也可集成其他组件来增强网关。
我是在以Nacos为注册中心和配置中心的基础上进行的。
然后导入依赖
<--网关依赖,导入该依赖后不需要再导入spring的web依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> <version>2.2.10.RELEASE</version> </dependency>
在配置中心创建配置,当然不在配置中心写配置在项目的配置文件里也行,只不过你每改一次配置都要重启一次。
配置
spring: cloud: gateway: routes: - id: host_route1 uri: http://127.0.0.1:8081 order: 1 predicates: - Path=/user/get - Weight=DEFAULT_GROUP, 10 - id: host_route2 uri: http://127.0.0.1:8082 order: 2 predicates: - Path=/user/post - Weight=DEFAULT_GROUP, 90 filters: - SetStatus=401
routes路由组:下面可分配多个路由地址,代码中我分配了两个路由
路由:由路由id、uri、order、predicates等组成
id:随意,但是要唯一
uri:你要路由到的服务地址
order:顺序优先级,当两个地址相同时,是从小到大匹配的所以会匹配1
predicates:断言
- Path=/*:匹配的路径
- Weight=:请求权重分配,当路径相同时可根据不同权重来分配请求地址 ,例子中的意思是给分组DEFAULT_GROUP的url:http://127.0.0.1:8081/user/get分配10%权重,给分组DEFAULT_GROUP的url:http://127.0.0.1:8082/user/get分配90%权重,也就是路由到第一个的概率为10%,第二个的概率为90%。
filters过滤:
- PrefixPath=/wyl:地址路径前添加一层路径,例:/wyl/user/post
- RedirectTo=302, http://127.0.0.1:8081/user/get:重定向地址,返回状态302
- SetPath=/wyl/{path}:通过模板设置路径,与PrefixPath类似,设置一个路径模板如/user/post映射到{path}上路径就是/wyl/user/post
- RewritePath=/user/post,/user/get:将/user/post路径改写成/user/get
- SetStatus=401:设置返回状态
还有更多的过滤方式可浏览官方文档