zuul网关有哪些作用_springcloud注册中心

zuul网关有哪些作用_springcloud注册中心zuul一般有两大作用,1是类似于Nginx的网址重定向,但zuul的重定向的一般是整个springcloud里在Eureka注册中心的模块.zuul:ignored-services:’*’sensitiveHeaders:Access-Control-Allow-Originignored-headers:Access-Control-Allow-Credentials,Access…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

zuul一般有两大作用,1是类似于Nginx的网址重定向,但zuul的重定向的一般是整个spring cloud里在Eureka注册中心的模块.

zuul网关有哪些作用_springcloud注册中心

zuul:

ignored-services: ‘*’

sensitiveHeaders: Access-Control-Allow-Origin

ignored-headers: Access-Control-Allow-Credentials,Access-Control-Allow-Origin,Vary,X-Frame-Options,token

routes:

oauth:

path: /api-o/**

serviceId: oauth-center

api-u:

path: /api-u/**

serviceId: user-center

backend:

path: /api-b/**

serviceId: manage-backend

log:

path: /api-l/**

serviceId: log-center

file:

path: /api-f/**

serviceId: file-center

sms:

path: /api-n/**

serviceId: notification-center

**的意思是可以匹配任何多级目录的意思.

*为单级目录

sensitiveHeaders过滤客户端附带的headers,如:

sensitiveHeaders: X-ABC

如果在发请求时带了X-ABC,那么X-ABC不会往下游服务传递。此处为禁止跨域请求头向下传递

ignored-headers会过滤服务之间通信附带的headers

附带服务的跨域配置

/*** 跨域配置*/@Configurationpublic classCrossDomainConfig {

/*** 跨域支持**@return*/@BeanpublicCorsFilter corsFilter() {

finalUrlBasedCorsConfigurationSource source = newUrlBasedCorsConfigurationSource();finalCorsConfiguration config = newCorsConfiguration();config.setAllowCredentials(true);// 允许cookies跨域config.addAllowedOrigin(“*”);// #允许向该服务器提交请求的URI,*表示全部允许config.addAllowedHeader(“*”);// #允许访问的头信息,*表示全部config.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了config.addAllowedMethod(“*”);// 允许提交请求的方法,*表示全部允许source.registerCorsConfiguration(“/**”,config);return newCorsFilter(source);}

}

2、zuul更重要的功能为过滤请求.

public class AccessFilter extends ZuulFilter {

@Override

public String filterType() {

return null;

}

@Override

public int filterOrder() {

return 0;

}

@Override

public boolean shouldFilter() {

return false;

}

@Override

public Object run() throws ZuulException {

return null;

}

}

我们自定义一个过滤类,继承于ZuulFilter,一般要实现上面四个方法.

filterType:过滤器的类型.

pre:可以在请求被路由之前调用

route:在路由请求时候被调用

post:在route和error过滤器之后被调用

error:处理请求时发生错误时被调用

org.springframework.cloud.netflix.zuul.filters.support.FilterConstants

中有这四种对应

public static final String ERROR_TYPE = “error”;

public static final String POST_TYPE = “post”;

public static final String PRE_TYPE = “pre”;

public static final String ROUTE_TYPE = “route”;

filterOrder:过滤器的执行顺序.当请求在一个阶段存在多个过滤器时,需要根据该方法返回的值来依次执行.

shouldFilter:判断该过滤器是否需要执行.

比如我们需要一个过滤条件,当包含”*-anon/internal*”的uri不允许外网通过网关调用,只允许微服务间在内网调用.我们可以这么写.

@Override

public boolean shouldFilter() {

RequestContext requestContext = RequestContext.getCurrentContext();

HttpServletRequest request = requestContext.getRequest();

return PatternMatchUtils.simpleMatch(“*-anon/internal*”, request.getRequestURI());

}

最后就是run:过滤器的具体逻辑.

@Override

public Object run() {

RequestContext requestContext = RequestContext.getCurrentContext();

requestContext.setResponseStatusCode(HttpStatus.FORBIDDEN.value());

requestContext.setResponseBody(HttpStatus.FORBIDDEN.getReasonPhrase());

requestContext.setSendZuulResponse(false);

return null;

}

返回403 Forbidden错误,通过requestContext.setSendZuulResponse(false)不进行路由.

请注意以上是只防外网的,内网的调用可以使用feign.比如说

@FeignClient(“manage-backend”)

public interface BackendClient {

@GetMapping(“/backend-anon/internal/blackIPs”)

Set findAllBlackIPs(@RequestParam(“params”) Map params);

}

它是指向manage-backend模块的,而且@GetMapping(“/backend-anon/internal/blackIPs”)包含了”*-anon/internal*”,即外网无法访问这个接口.具体实现为

@RestController

public class BlackIPController {

@Autowired

private BlackIPService blackIPService;

/**

* 添加黑名单ip

*

* @param ip

*/

@LogAnnotation(module = LogModule.ADD_BLACK_IP)

@PreAuthorize(“hasAuthority(‘ip:black:save’)”)

@PostMapping(“/blackIPs”)

public void save(@RequestBody BlackIP blackIP) {

blackIP.setCreateTime(new Date());

blackIPService.save(blackIP);

}

/**

* 删除黑名单ip

*

* @param ip

*/

@LogAnnotation(module = LogModule.DELETE_BLACK_IP)

@PreAuthorize(“hasAuthority(‘ip:black:delete’)”)

@DeleteMapping(“/blackIPs/{ip}”)

public void delete(@PathVariable String ip) {

blackIPService.delete(ip);

}

/**

* 查询黑名单

*

* @param params

* @return

*/

@PreAuthorize(“hasAuthority(‘ip:black:query’)”)

@GetMapping(“/blackIPs”)

public Page findBlackIPs(@RequestParam Map params) {

return blackIPService.findBlackIPs(params);

}

/**

* 查询黑名单

* 可内网匿名访问

*

* @param params

* @return

*/

@GetMapping(“/backend-anon/internal/blackIPs”)

public Set findAllBlackIPs(@RequestParam Map params) {

Page page = blackIPService.findBlackIPs(params);

if (page.getTotal() > 0) {

return page.getData().stream().map(BlackIP::getIp).collect(Collectors.toSet());

}

return Collections.emptySet();

}

}

中的

@GetMapping(“/backend-anon/internal/blackIPs”)

public Set findAllBlackIPs(@RequestParam Map params) {

Page page = blackIPService.findBlackIPs(params);

if (page.getTotal() > 0) {

return page.getData().stream().map(BlackIP::getIp).collect(Collectors.toSet());

}

return Collections.emptySet();

}

当然它是属于manage-backend模块.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170626.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • arcgis附图制作_怎么制作图片的浮雕效果

    arcgis附图制作_怎么制作图片的浮雕效果ArcGIS制作地图时可以制作出很多很炫的效果,比如地图阴影、地图晕渲效果、浮雕效果、三维效果等等。本实验讲解在ArcGIS中制作浮雕效果地图,效果如下所示:1.加载矢量数据加载实验数据包data44.rar中的秦安县乡镇矢量数据:2.缓冲区分析点击【地理处理】下拉菜单,点击【缓冲区】。输入要素选择秦安县乡镇数据,选择输出要素路径,线性单位输入-0.4,单位为千米,侧类型选择两侧,融合类型选择ALL,点击确定。缓冲区效果:3.欧氏距离分析欧氏距离工具用于计算每个像元到最近.

    2022年9月5日
    2
  • ubuntu16.04分区方案设置(新装的ubuntu没有网络驱动)

    linux分区设置。法一:Swap(相当于电脑内存):逻辑分区、大小设置为电脑内存大小,2G,4G;/boot(引导分区):主分区:大小设置为200M;/home(用户存储数据用):逻辑分区,要尽可能大,100G空间可以设置为85G,留10G给主分区即可。/.(主分区):主分区,用于存放系统,相当于win7的C盘,10G即可。法二:/.(主分区):主分区,只分这一个区,…

    2022年4月14日
    50
  • 分析如何用万能表测试MOS管好坏的小窍门

    分析如何用万能表测试MOS管好坏的小窍门   现在家电、照明、汽车电子等领域行业开关管均采用性能优异的MOS管取代过去的大功率晶体三极管,使整体的效率、可靠性、故障率均大幅的下降。       虽说是大幅降低,但也会出现损坏的情况,由于MOS管和大功率晶体三极管在结构、特性有着本质上的区别,在应用上驱动电路也比晶体三极管复杂,致使维修人员对电路、故障的分析倍感困难。怎么对MOS管进行检测呢?一起来了解下  MOS…

    2022年6月17日
    20
  • vue、css修改滚动条样式

    vue、css修改滚动条样式vue、css修改滚动条样式样式为/*滚动条*/body*::-webkit-scrollbar{ width:10px; height:10px;}body*::-webkit-scrollbar-track{ background:#fff; border-radius:2px;}body*::-webkit-scrollbar-thumb{ background:rgb(205,206,206); border-radius:10px;}

    2022年8月31日
    3
  • 面向对象三大特性

    面向对象三大特性及详解:三大特性都有那些?首先我们先来了解一下有关三大特性的解释:封装继承多态继承特性详解在整个面向对象的过程中有以上的三个特性,一下子不可能都了解完,今天先来了解一下其

    2022年3月29日
    37
  • STM32独立看门狗

    STM32独立看门狗参考正点原子视频看门狗在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称:看门狗看门狗的意义在启动正常运行的时候,系统不能复位在系统跑飞(程序异常执行)的情况,系统复位,程序重新执行独立看门狗(IWDG)由专用的低速时钟(L

    2022年5月24日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号