C++ 全栈知识体系C++ 全栈知识体系
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
  • 架构基础

    • 发展历程
    • 服务演化
    • ORM框架
    • RPC框架
  • 分布式系统

    • 分布式系统 - 基础
    • 分布式系统 - 设计
    • 分布式系统 - 缓存
    • 分布式系统 - 通信方式
    • 分布式系统 - 一致性
    • 分布式系统 - 锁
    • 分布式系统 - 解决高并发、高性能、高可用
  • 微服务

    • 微服务 - 简介
    • 微服务 - 学习路线
    • 微服务 - 服务网关
    • 微服务 - 通信方式
    • 微服务 - 消息队列
    • 微服务 - 保护
    • 微服务 - 分布式搜索
    • 微服务 - 分布式事务
    • 微服务 - 多级缓存
    • 微服务 - 幂等性设计
  • 中间件

    • 消息队列 - ZeroMQ

      • ZeroMQ - 经典例子
      • ZeroMQ - 基础
      • ZeroMQ - 进阶
      • ZeroMQ - 高级请求-应答模式
    • RPC调用 - Dubbo

      • Dubbo - 框架学习
    • 配置中心 - Consul

      • Consul - 概述
      • Consul - 学习内容
      • Consul - 安装与使用
      • Consul - 服务健康检查
      • Consul - 常用的API
      • Consul - 存储个K/V
    • 配置中心 - Apollo

      • Apollo - 概述
      • Apollo - 设计
      • Apollo - Docker部署
      • Apollo - 使用配置中心
    • 监控平台 - Cat

      • Cat - 概述
      • Cat - Docker快速部署
      • Cat - C++客户端的docker镜像
    • 数据处理管道 - Logstash

      • Logstash - Elastic 总览
      • Logstash - 工作原理
      • Logstash - docker部署
      • Logstash - 实践
    • 服务网关 - Kong

      • Kong - 概述
      • Kong - Docker快速部署
      • Kong - C++客户端的docker镜像

Kong - Konga 插件使用

  • Basic-Auth验证

身份认证插件

Basic-Auth验证

1、通过以下请求在服务上配置这个插件:

curl -X POST http://localhost:8001/services/demo/plugins \
    --data "name=basic-auth"  \
    --data "config.hide_credentials=true"

2、在路由上启用插件:

curl -X POST http://localhost:8001/routes/demoroute/plugins \
    --data "name=basic-auth"  \masu
    --data "config.hide_credentials=true"

3.添加玩上述插件后,直接访问,提示无鉴权:

basic-auth-1

4.创建用户并设置凭证:

create_consumer

设置凭证如下:

create_credentials

  1. 使用凭证进行访问:

basic-auth-2

对应HTTP报文:

GET / HTTP/1.1
Host: 139.196.82.84:9950
Connection: keep-alive
X-Forwarded-For: 183.208.23.168
X-Forwarded-Proto: http
X-Forwarded-Host: 139.196.82.84
X-Forwarded-Port: 8000
X-Forwarded-Path: /demo
X-Forwarded-Prefix: /demo
X-Real-IP: 183.208.23.168
name: test-basic-auth
User-Agent: PostmanRuntime/7.26.8
Accept: */*
Postman-Token: e997b328-9755-4fd8-ade3-c64c1d746186
Accept-Encoding: gzip, deflate, br
X-Consumer-ID: b07d5dfc-8112-465a-aaab-760ab0b2e7db
X-Consumer-Username: test-basic-auth
X-Credential-Identifier: test
X-Credential-Username: test

限流配置

Kong 提供了 Rate Limiting插件,实现对请求的限流功能,避免过大的请求量,将后端服务击垮。

1、在服务上启用插件,设置每秒最多访问5次

$ curl -X POST http://localhost:8001/services/demo/plugins \
    --data "name=rate-limiting"  \
    --data "config.second=5" \
    --data "config.hour=10000"

2、在路由上启用插件

$ curl -X POST http://localhost:8001/routes/demoroute/plugins \
    --data "name=rate-limiting"  \
    --data "config.second=5" \
    --data "config.hour=10000"

3、在消费者中启用插件

$ curl -X POST http://localhost:8001/routes/demoroute/plugins \
    --data "name=rate-limiting" \
    --data "consumer_id={consumer_id}"  \
    --data "config.second=5" \
    --data "config.hour=10000"

4、在API上启用插件

$ curl -X POST http://kong:8001/apis/{api}/plugins \
    --data "name=rate-limiting"  \
    --data "config.second=5" \
    --data "config.hour=10000"

备注:

  • config.second :开发人员每秒可以生成的HTTP请求量。
  • config.hour:开发人员每小时可以生成的HTTP请求量。
  • config.limit_by : 汇总限额时将使用的实体:consumer( 默认 ), credential, ip
  • config.policy : 用于检索和增加限制的限速策略。local,cluster,redis
  • config.hide_client_headers : 隐藏头信息。默认:false
  • 如果config.policy选了redis则需要配置:config.redis_host,config.redis_port,config.redis_password,config.redis_timeout,config.redis_database

不断访问,提示API频率超过限制:

rate-limiting-1

黑白名单限制

1.服务配置插件

curl -X POST http://localhost:8001/services/demo/plugins \
    --data "name=ip-restriction"  \
    --data "config.whitelist=192.168.32.84"

2.路由配置插件(暂时不可用)

curl -X POST http://localhost:8001/routes/b93e5045-2006-4812-925c-70619fc4bcb1/plugins \
    --data "name=ip-restriction"  \
    --data "config.whitelist=192.168.32.84"

3.设置后访问

ip-restriction-1

4.删除限制后,可以正常访问

Last Updated:
Contributors: klc407073648
Prev
Kong - 概述
Next
Kong - C++客户端的docker镜像