第 10 章 内置插件插件是代理请求和响应的生命周期内执行的lua代码,既可以添加到服务和路由中,也可以关联到特定的消费者。10.1 插件分类主要有7类:1.身份验证2.安全防护3.流量控制4.无服务器架构5.分析监控6.信息转换器7.日志记录10.2 环境准备 10.3 身份验证 10.3.1 基本身份验证在服务或者路由中添加 基本身份验证(Basic Auth)插件后,如果客户端想访问,就需要提供用户名和密码。此插件会检查请求报文中的Proxy-Authorization和Authorization 是否存在有效的访问凭证,可以很方便的实现身份验证,且不需要重新开发。这个插件也可以结合ACL 插件,通过将消费者列入白名单或者黑名单来限制其对服务或路由的访问。 10.3.2 密钥身份验证 在服务或路由中添加密钥身份验证(API KEYS)插件后,当客户端发起访问请求后,需要在指定的请求头或查询字符串中提供提前分配好的密钥。10.3.3 HMAC 身份验证 在服务或者路由中添加HMAC(基于散列值的消息验证码)身份插件后,此插件不仅会验证客户端身份的有效性,还会对请求数据进行签名验证,以防止请求参数被篡改或者请求再次访问(重放攻击)。客户端发起访问请求时,需要在 Proxy-Authorization 或 Authorization 头中发送数字签名。10.3.4 OAuth 2.0 是一种网络开放协议,为用户资源的安全授权提供了标准。OAuth 2.0 身份验证插件支持 OAuth 2.0 定义的以下四种授权模式:1.隐式授权模式2.客户端凭据模式3.授权码模式4.资源拥有者密码凭据模式10.4 安全防护 10.4.1 IP 限制 IP 限制 是通过将 ip 地址列入白名单或黑名单来限制其对服务的访问。可以设置单ip地址或者多ip地址,或者以CIDR(无分类域间路由选择)的方式设置ip范围。10.4.2 机器人检测机器人检测可以保护服务不受大多数常见机器人(如爬虫工具/web测试工具/漏洞扫描工具)的攻击,读者可以通过自定义客户端请求标识将这些机器人列入白名单和黑名单。 10.4.3 CORS  插件 CORS(跨域资源共享)可以直接添加到服务或者路由中。10.5 流量控制 使用流量插件可以很方便的管理入站和出站流量,从而达到限流和限频的目的。10.5.1 请求大小限制 此插件用于阻止请求大小大于指定配置的请求(以M为单位)。10.5.2 终止请求 此插件通过返回指定的http状态码和消息来终止传入的请求。并且允许你在升级,维护站点时或者在其他情况下,暂停客户端的访问。10.6 无服务器架构 使用无服务器架构插件可以很方便的集成调用FaaS(Function as a service,函数即调用)。将介绍3种无服务器架构,分别为外置亚马逊 AWS Lambda,
微软云 Azure Functions,内置 Serverless Function。10.6.1 AWS Lambda 10.6.2 Azure Functions 10.6.3 Serverless Functions 此插件在kong的access阶段动态的运行Lua代码,从而在无服务器的环境下调用FaaS。它可以动态的改变请求头,动态的生成html页面或实现自定义的逻辑等。插件之所以可以动态的运行Lua代码是因为其内部用了 loadstring 函数,将会在首次调用该函数时加载 Lua 代码并进行内部编译。Serverless Functions 提供了 Pre Function 和 Post Function 两个独立的插件,它们在插件链中以不同的优先级运行。1.Pre Function : 在 kong 的 access 阶段,在其他插件之前运行,即最先运行。2.Post Function : 在 kong 的 access 阶段,在其他插件之后运行,即最后运行。10.7 分析监控 使用分析监控插件可以很方便的可视化检查和监视微服务的流量和各种监控指标。10.7.1 Prometheus 10.7.2 Zipkin 10.8 信息转换器 使用 信息转换插件,可以任意的添加,删除,修改 所有的请求和响应信息。10.8.1 请求转换器 10.8.2 响应转换器 10.8.3 Correlation ID 10.9 日志记录 使用日志记录插件,可以很方便的记录在 传输,请求和响应过程中的所有上下文数据信息。10.9.1 UDP 日志 10.9.2 HTTP 日志 10.9.3 Kafka 日志 10.9.4 MySQL 日志 

10.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 内置插件相关推荐

  1. 云原生微服务网关 Kong 和Kong 管理UI Konga快速安装攻略

    前言 在微服务架构中,由于系统和服务的细分,导致系统结构变得非常复杂, 为了跨平台,为了统一集中管理api,同时为了不暴露后置服务.甚至有时候需要对请求进行一些安全.负载均衡.限流.熔断.灰度等中间操 ...

  2. 干货 | 基于开源体系的云原生微服务治理实践与探索

    作者简介 CH3CHO,携程高级研发经理,负责微服务.网关等中间件产品的研发工作,关注云原生.微服务等技术领域. 一.携程微服务产品的发展历程 携程微服务产品起步于2013年.最初,公司基于开源项目S ...

  3. 基于开源体系的云原生微服务治理实践与探索

    作者:董艺荃|携程服务框架负责人 携程微服务产品的发展历程 携程微服务产品起步于 2013 年.最初,公司基于开源项目 ServiceStack 进行二次开发,推出 .Net 平台下的微服务框架 CS ...

  4. 云原生微服务架构实战精讲第二节 云原生和Kubernete

    第03讲:云原生应用的 15 个特征 本课时我将带你学习云原生应用. 微服务架构只是一种软件架构风格,并不限制所采用的实现技术,开发团队可以自由选择最合适的技术来实现.在第 01 课时介绍微服务架构的 ...

  5. 基于netty的微服务网关_基于Rx-netty和Karyon2的云就绪微服务

    基于netty的微服务网关 Netflix Karyon提供了一个干净的框架来创建可用于云的微服务. 在您的组织中,如果您使用包含Eureka的Netflix OSS堆栈进行服务注册和发现,使用Arc ...

  6. 基于Rx-netty和Karyon2的云就绪微服务

    Netflix Karyon提供了一个干净的框架来创建可用于云的微服务. 在您的组织中,如果您使用包含Eureka的Netflix OSS堆栈进行服务注册和发现,使用Archaius进行资产管理,那么 ...

  7. Java 云原生微服务框架 Quarkus 入门实践

    点击上方"芋道源码",选择"设为星标" 管她前浪,还是后浪? 能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | ...

  8. 云原生微服务架构实战精讲第八节 访问控制与更新策略

    第24讲:服务调用失败的处理策略与实践 在微服务架构的应用中,微服务之间一般有两种类型的交互方式,一种是使用消息中间件的异步消息模式,也就是第 14 课时中提到的事件驱动设计,微服务之间进行交互的是消 ...

  9. 云原生微服务架构实战精讲第七节 调度算法与司机乘客行程查询

    第19讲:如何实现行程派发与调度算法 第 18 课时介绍了司机模拟器如何发布位置更新事件,以及行程派发服务如何处理这些事件,并维护所有可用的司机信息,本课时紧接着第 18 课时的内容,主要介绍行程派发 ...

  10. Spring Cloud微服务网关Zuul过滤链和整合OAuth2+JWT入门实战

    一.Spring Cloud Zuul 过滤链 1.1 工作原理 Zuul的核心逻辑是由一系列的Filter来实现的,他们能够在进行HTTP请求或者相应的时候执行相关操作.Zuul Filter的主要 ...

最新文章

  1. pandas以前笔记
  2. 如何获取微信openId
  3. python导入pandas出错_构建d时如何解决python-pandas导入错误
  4. 用神经网络分类陀螺和遥远星体
  5. Linux系统调用--getrlimit/setrlimit函数详解
  6. Excel进行粗糙的快速更换图片背景颜色
  7. 不戴眼镜听不清?Google用视觉信号分离语音 | 附论文
  8. 基础数据结构和算法概念
  9. Ollydbg逆向分析并修改helloworld程序
  10. 百度竞价数据分析技巧!
  11. Unity获取组件的几种方式(拖拽法、标签法、名字法)
  12. 知道自己无知才会进步
  13. 卜若的代码笔记-python系列-神经网络篇-第十四章:基于keras框架的男女性别识别
  14. 密码管理方案之SafeInCloud+坚果云同步
  15. js实现:百钱买百鸡, 求红白黑球的个数
  16. 教你一招更改视频竖版与横版的技巧
  17. 节点污点 Taint 和容忍度 Toleration在生产中的使用
  18. ssm毕设项目益学-校园学习互助y0ig7(java+VUE+Mybatis+Maven+Mysql+sprnig)
  19. [C语言] 发牌洗牌
  20. 1046: 奇数的乘积 Python

热门文章

  1. SonarLint各种提示的意思
  2. 一个按钮会随着鼠标移动而变化的小工具
  3. mysqldump导出数据
  4. 《代码大全2》读书笔记 Week9
  5. Python画一个国旗
  6. 纯CSS3技术 加载中
  7. 【SAS BASE】PROC FREQ
  8. [转]Android ANR 分析解决方法
  9. 如何在TP-LINk WR340G中禁用端口
  10. 由UIview获得其controller