返回顶部
首页 > 资讯 > 后端开发 > Python >gateway基本配置教程
  • 950
分享到

gateway基本配置教程

gateway基本配置gateway配置 2023-05-20 05:05:54 950人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录1、gateway简介2、gateway核心概念3、路由4、断言5、过滤器5.1、过滤器介绍5.2、内置局部过滤器与使用5.3、内置全局过滤器5.4、自定义全局过滤器5.4.1、

1、gateway简介

路由转发 + 执行过滤器链。

网关,旨在为微服务架构提供一种简单有效的统一的api路由管理方式。同时,基于Filter链的方式提供了网关的基本功能,比如:鉴权、流量控制、熔断、路径重写、黑白名单、日志监控等。
基本功能如下:

  • 统一入口:暴露出网关地址,作为请求唯一入口,隔离内部微服务,保障了后台服务的安全
  • 鉴权校验:识别每个请求的权限,拒绝不符合要求的请求
  • 动态路由:动态的将请求路由到不同的后端集群

2、gateway核心概念

  • 路由(Route):由一个ID,一个目标URI(最终路由到的url地址),一组断言(匹配条件判断)和一组过滤器定义。如果断言为真,则路由匹配。
  • 断言(Predicate):通过断言匹配Http请求中的任何内容(请求头、请求参数等),如果匹配成功,则匹配断言所在路由。
  • 过滤器(Filter):在请求前后执行业务逻辑,比如鉴权、日志监控、流量控制、修改请求头、修改响应等。

3、路由

spring:
  cloud:
	gateway:
	  routes:
	  - id: manager						# 路由唯一标识
		uri: lb://manager_server		# 路由指向目的地URL或服务名,客户端请求最终被转发到的微服务
		predicates:
		- Path=/manager
@Slf4j
@Component // 让容器扫描到,等同于注册了
public class BlackListFilter implements GlobalFilter, Ordered {
	// 模拟黑名单(实际可以去数据库或者Redis中查询)
	private static List<String> blackList = new ArrayList<>();
	static {
		blackList.add("0:0:0:0:0:0:0:1"); // 模拟本机地址
	}
	
	@Override
	public Mono<Void> filter(ServerWEBExchange exchange, GatewayFilterChain chain) {
		// 思路:获取客户端ip,判断是否在黑名单中,在的话就拒绝访问,不在的话就放行
		ServerHttpRequest request = exchange.getRequest();
		ServerHttpResponse response = exchange.getResponse();
		// 从request对象中获取客户端ip
		String clientIp = request.getRemoteAddress().getHostString();
		// 拿着clientIp去黑名单中查询,存在的话就决绝访问
		if(blackList.contains(clientIp)) {
			// 拒绝访问,返回
			response.setStatusCode(httpstatus.UNAUTHORIZED); // 状态码
			log.debug("=====>IP:" + clientIp + " 在⿊名单中,将被拒绝访问!");
			String data = "Request be denied!";
			DataBuffer wrap = response.bufferFactory().wrap(data.getBytes());
			return response.writeWith(Mono.just(wrap));
		}
		// 合法请求,放行,执行后续的过滤器
		return chain.filter(exchange);
	}
	
	@Override
	public int getOrder() {
		return 0;
	}
}

5.4.2、模拟登录校验

在过滤器中检查请求中是否携带token请求头。如果token请求头存在则放行;如果token为空或者不存在则返回认证失败状态码。

@Component
public class MyGlobalFilter implements GlobalFilter,Ordered {
    @Override
    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        boolean token = exchange.getRequest().getHeaders().containsKey("token");
        System.out.println("----全局过滤器token----"+token);
        if (!token){
            exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
            ServerHttpResponse response = exchange.getResponse();
            return response.setComplete();
        }
        return chain.filter(exchange);
    }
    @Override
    public int getOrder() {
        return 1;
    }
}

6、一个简单的gateway配置实例

spring:
  cloud:
    gateway:
      discovery:
        locator:
          # 表明Gateway开启服务注册和发现的功能,并且spring cloud Gateway自动根据服务发现为每一个服务创建了一个router,这个router将以服务名开头的请求路径转发到对应的服务
          enabled: true
          # 将请求路径上的服务名配置为小写(因为服务注册的时候,向注册中心注册时将服务名转成大写的了)
          lower-case-service-id: true
      routes:
	  # 系统管理
      - id: sys-mgt
        uri: lb://sysmgt
        predicates:
        - Path=/sys-mgt/** 	#以sys-mgt开头的请求都负载到sysmgt服务
		- Method=GET		#只匹配GET请求
        filters:
        - RewritePath=/sys-mgt/(?<segment>.*), /$\{segment} #过滤掉url里的sys-mgt,例如http://ip:port/sys-mgt/test -> http://ip:port/test
		- PrefixPath=/mgt									#为请求添加/mgt前缀,再结合RewritePath过滤器,http://ip:port/sys-mgt/test -> http://ip:port/mgt/test

到此这篇关于gateway基本配置的文章就介绍到这了,更多相关gateway基本配置内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: gateway基本配置教程

本文链接: https://lsjlt.com/news/214033.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • gateway基本配置教程
    目录1、gateway简介2、gateway核心概念3、路由4、断言5、过滤器5.1、过滤器介绍5.2、内置局部过滤器与使用5.3、内置全局过滤器5.4、自定义全局过滤器5.4.1、...
    99+
    2023-05-20
    gateway基本配置 gateway配置
  • Oracle19c安装与基本配置教程(超详细!)
    目录前言oracle安装oracle19c下载oracle解压与启动oracle具体安装步骤测试连接navicat连接oracle创建用户,指定默认表空间Oracle19卸载总结前言 安装有出错的风险,卸载也是比较麻烦的...
    99+
    2023-01-16
    安装oracle19c oracle19c数据库安装 oracle19c使用教程
  • Rainbond上部署API Gateway Kong及环境配置教程
    目录什么是Kong从应用市场快速安装注意事项配置Kong环境变量注入Nginx配置注入单个Nginx配置通过注入的Nginx指令包含文件Kong应用怎么制作数据库自动初始化部署Kon...
    99+
    2024-04-02
  • CentOS中的net-snmpd安装和基本配置教程
    这篇文章主要讲解了“CentOS中的net-snmpd安装和基本配置教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CentOS中的net-snmpd安装和基本配置教程”吧!安装代码如下:...
    99+
    2023-06-10
  • redis基本配置
    1.下载编译安装cd /usr/srcwget http://download.redis.io/releases/redis-3.2.3.tar.gztar -xf redis-3.2...
    99+
    2024-04-02
  • H3C基本配置
    一、基本配置pc1配置 <h3c>system-view[h3c]sysname pc1[h3c]int g0/0[pc1-GigabitEthernet0/0]ip add 192.168.2.100 255.255.25...
    99+
    2023-01-31
    基本配置 H3C
  • CentOS下Redis数据库的基本安装与配置教程
    Redis 是一个开源的多平台数据存储软件,使用 ANSI C 编写,直接在内存使用数据集,这使得它得以实现非常高的效率。Redis 支持多种编程语言,包括 Lua, C, Java, Python, Pe...
    99+
    2022-06-04
    数据库 教程 CentOS
  • Vue各种loader的基本配置与使用示例教程
    目录webpack中的loader  loader概述  打包处理css文件  打包处理less文件  打包处理图片  打包处理js...
    99+
    2023-01-07
    Vue loader 基本配置与使用
  • MySQL的基本配置
    本篇内容介绍了“MySQL的基本配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!query_cache_...
    99+
    2024-04-02
  • php-fpm基本配置
    php配置文件: php.ini: display_errors = Off #关闭错误提示 expose_php = Off #隐藏php版本 #禁用危险函数,禁用之后composer 会有问题,使用composer的请单独配置禁用函数...
    99+
    2023-09-23
    php 开发语言 服务器
  • ospfv3的基本配置
     R1     #ipv6 unicast-routing     #int s1/1     #ipv6 address 2002::1:1/122     #ipv6 ospf 1 area 0     #no shutdown    ...
    99+
    2023-01-31
    基本配置
  • H3C PPPOE 基本配置
    实验TOP:     说明:两端都使用ppp的chap认证。 配置: server 端的配置: ================================ [H3C]local-user server [H3C-luser-...
    99+
    2023-01-31
    基本配置 H3C PPPOE
  • BGP基本配置(H3C)
                               BGP基本实验 一.实验拓扑图 二 实验步骤 [R1]bgp 30[R1-bgp]router-id 1.1.1.1[R1-bgp]peer 10.0.1.6 as-nu[R1-bgp]...
    99+
    2023-01-31
    基本配置 BGP H3C
  • Python OpenGL基本配置
    参考:http://pyopengl.sourceforge.net 一、pip 安装 PyOpenGL pip install PyOpenGL PyOpenGL_accelerate 二、测试代码 from OpenGL....
    99+
    2023-01-31
    基本配置 Python OpenGL
  • Linux中selinux基础配置教程详解
    selinux(Security-Enhanced Linux)安全增强型linux,是一个Linux内核模块,也是Linux的一个安全子系统。 三种模式: Enforcing:强制模式,在selinux运作时,已经...
    99+
    2022-06-04
    Linux selinux 配置 selinux配置 Linux selinux
  • vue基础ESLint Prettier配置教程详解
    目录引言前言安装 VsCode 插件配置 VsCode "Workspace.json"配置 vue 的 "package.json"配置 v...
    99+
    2024-04-02
  • oracle的环境配置-基本配置
    宿主机IP地址:10.1.1.x  网关:10.1.1.1虚拟机节点IP地址(本地workstation上创建):10.1.1.101~253  网关:10.1.1.1教师机(VNC):...
    99+
    2024-04-02
  • dbcp基本配置和重连配置
    转自:http://agapple.iteye.com/blog/772507 最近在看一些dbcp的相关内容,顺便做一下记录,免得自己给忘记了。 ...
    99+
    2024-04-02
  • 配置gateway+nacos动态路由管理流程
    目录配置gateway+nacos动态路由第一步:首先是设置配置文件的配置列表第二步:配置监听nacos监听器第三步:配置nacos的yml文件nacos的智能路由实现与应用一. 概...
    99+
    2024-04-02
  • Mongodb 基本安装配置
     下载软件,版本 mongodb-linux-x86_64-2.0.2.tgz 解压缩后的目录:mongodb-linux-x86_64-2.0.2...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作