目录一、添加pom依赖二、配置yml文件三、自定义过滤器四、跨域统一配置五、gateway整合sentinel服务保护(1)添加sentinel依赖(2)开启你的sentinel服务(3)添加sentinel配置一、添加pom依赖
在gateway服务里添加依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>注gateway依赖已经集成了web依赖再次添加web依赖会报错。
二、配置yml文件
gateway的核心配置介绍:
这里注意predicates断言的子项要用等于号赋值,因为他底层已用了反射来进行解析,断言的意思是当我们访问某个标识的字段时gateway会判断当前要路由的对象属于哪个id,如:
localhost:8080/stock_serv其中stock_serv为断言前缀,gateway通过他来配置对应的路由,又由于对应路由上一般不会有对应的标识存在,如:
localhost:8080/stock_serv/test的路由,实际上我应该要访问的是localhost:8080/test的路由,所以还需设置一个过滤器filters其子项也必须使用等于号,固定写法
-StripPrefix=1#去掉第一层前缀
就可以在转发是将前缀断言去掉,访问到正确路径了。下面是集成了Nacos注册中心的配置:
server:port:8088spring:application:name:api-gatewaycloud:nacos:server-addr:localhost:8848#nacos的服务配置discovery:cluster-name:Service_cluster_1#集群group:Service_group_1#分组名username:nacos#用户名password:nacos#密码namespace:public#环境分类#gateway的配置gateway:#路由规则routes:-id:server3_route#路由的唯一标识,路由到对应的服务#uri:http://localhost:8003/#需要转发的地址uri:lb://SERVICE-3#注册到nacos后,这里直接写路由服务的服务名#lbloadbalancenacos里的本地负载均衡策略#断言规则,用于路由规则的匹配predicates:-Path=/server3_serv/**#localhost:8088/server3_serv/order/add路由到如下路径#localhost:8003/server3_serv/order/add#由于server1的访问路径里没有/server3_serv/路径,所以这里需要过滤掉该路径filters:-StripPrefix=1#转发之前去掉第一层的路径,过滤调用附加路径#localhost:8003/order/add#-id:server1_route这里注意配置到nacos里和直接使用在uri的写法上有些区别,nacos里的只需要lb://服务名即可。
访问服务localhost:8088/server3_serv/test,相当于访问了localhost:8003/test的路径,效果如下:
三、自定义过滤器四、跨域统一配置也可以通过配置类的方式来解决:
五、gateway整合sentinel服务保护(1)添加sentinel依赖<!--sentinel启动器--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId></dependency>(2)开启你的sentinel服务
(3)添加sentinel配置
spring:cloud:#sentinel配置sentinel:transport:dashboard:127.0.0.1:8080访问后可以看到已监控到该网关了。