失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微服务网关 gateway

微服务网关 gateway

时间:2021-05-05 13:49:45

相关推荐

微服务网关 gateway

使用手册:https://docs.spring.io/spring-cloud-gateway/docs/current/reference/html/

1,gateway作用

1,统一入口

2,过滤请求

3,负载均衡

2,工作图示

3,操作步骤

1,引入依赖

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>

2,配置文件

server:port: 19000spring:application:name: gateway//服务名profiles: local-dev//环境,local-dev代表使用本地的yml配置文件,nacos-dev代表使用nacos上的配置文件cloud:gateway:enabled: truediscovery:locator:lower-case-service-id: trueroutes:- id: base //路由唯一标识uri: lb://base //路由目标,HTTP表示固定地址,lb代表负载均衡predicates://断言,判断路由规则- Path=/base/**filters://路由过滤器,对请求做出处理- StripPrefix=1# 忽略认证的路由secure:ignore:uris:#- /**

4,基础配置

1,路由断言工厂

如下:此路由匹配 年 1 月 20 日 17:42 山地时间(丹佛)之后提出的任何请求。

2,过滤器

2.1,路由过滤器 filters

给所有进入网关且符合路由规则uri( )的请求添加一个请求头,

key为 X-Request-red

value为 blue

在服务中通过注解 @RequestHeader 来接收 blue 数值

2.2,默认过滤 default-filters:

对所有符合路由规则的请求过滤

如果要给响应结果添加多个响应头

如图

2.3,全局过滤 Global Filters

对所有路由都生效,且可自定义处理逻辑

步骤:

实现GlobalFilter接口

添加@Order()注解

编写处理逻辑

import org.springframework.cloud.gateway.filter.GatewayFilterChain;import org.springframework.cloud.gateway.filter.GlobalFilter;import org.springframework.core.annotation.Order;import org.springframework.http.HttpStatus;import org.springframework.http.server.reactive.ServerHttpRequest;import org.ponent;import org.springframework.util.MultiValueMap;import org.springframework.web.server.ServerWebExchange;import reactor.core.publisher.Mono;@Component@Order(1)public class AuthorizeFilter implements GlobalFilter {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain){// 1, 获取请求参数ServerHttpRequest request=exchange.getRequest();// 2,获取参数MultiValueMap<String, String> param= request.getQueryParams();String auth=param.getFirst("Authorization");// 3,验证参数值if ("admin".equals(auth)){// 4,是,放行return chain.filter(exchange);}// 5,否,拦截,并设置状态码exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);return exchange.getResponse().setComplete();}}

结论:

3,网关跨域 CORS Configuration

spring:cloud:gateway:globalcors: # 全局跨域add-to-simple-url-handler-mapping: true # 解决option请求被拦截问题cors-configurations:'[/**]':allowedOrigins: "https://docs.spring.io" # 允许哪些网站的跨域请求allowedMethods: # 允许跨域ajax的请求方式- GET- POSTmaxage: 10000 # 跨域检测的有效期allowedHeaders: "*" #允许在请求中携带头信息allowCredentials: true #允许携带cookie

如果觉得《微服务网关 gateway》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。