[![](https://konghq.com/wp-content/uploads/2018/05/kong-logo-github-readme.png)](https://konghq.com/)
>[info] 本文档基于1.2.x版本以上,低版本请自行查看官方文档
## 什么是Kong
[Mashape](https://www.mashape.com/)于2015年开源他们的API层:[Kong](http://getkong.org/)
Kong是一个云原生、快速、可伸缩及高性能的API网关(在客户端和(微)服务间转发API通信的API网关,通过插件扩展功能)
Kong是一个在Nginx中运行的Lua应用程序,可以通过lua-nginx模块实现, Kong不是用这个模块编译Nginx,而是与OpenRestry一起发布,OpenRestry已经包含了lua-nginx-module,OpenRestry是Nginx的一组扩展功能模块
## 为什么是Kong
Kong是一个Api Gateway,通过插件的形式提供负载均衡、日志记录、Http基本认证、密钥认证、API请求限流、请求转换及Prometheus等功能。
Kong可以很轻松扩展功能,模块化,可以运行在任何基础设施上
[![](https://konghq.com/wp-content/uploads/2018/05/kong-benefits-github-readme.png)](https://konghq.com/)
## 术语
* Route:是请求的转发规则,按照Hostname和PATH,将请求转发给Service
* Services:是多个Upstream的集合,是Route的转发目标
* Consumer:是API的用户,里面记录用户的一些信息
* Plugin:是插件,plugin可以是全局的,绑定到Service,绑定到Router,绑定到Consumer
* Certificate:是https证书
* Sni:是域名与Certificate的绑定,指定了一个域名对应的https证书
* Upstream:是负载均衡策略
* Target:是最终处理请求的Backend服务
## kong与 nginx.conf 对应关系
![](https://img.kancloud.cn/ad/42/ad421c6be29d413a2c59f4dbfdce4cce_1326x513.png)
## kong的特性
* 云原生
* 动态负载均衡
* 基于哈希负载均衡
* 断路器
* 健康检查
* 服务发现
* Serverless
* WebSockets
* OAuth 2.0、日志、请求转换、认证、速率限制、
* 监控
* [...](https://docs.konghq.com/hub/)
## kong可视化管理
可视化管理平台推荐(基于Spring Boot+vue 框架开发):[kongx](https://gitee.com/raoxy/kongx)
![](https://img.kancloud.cn/f1/3c/f13c89adff46fd13242e17dc7a3f4422_1912x929.png)
* Kong Manage:Upstream,Service,Route,Plugin,Consumer等
* 同步Kong配置:同步不同环境间的kong配置,便于多环境同一项目配置管理;
* 系统管理:具有完善的权限管理系统,包括:用户管理、菜单管理、角色管理及用户组管理等功能;
* 参数管理:具有良好的扩展性,基于平台的参数管理可扩展多环境及服务管理;包括:环境管理、参数参数等
* 日志管理:平台具有完善的日志审计功能,包括:同步日志、操作日志;
- 1. 概述
- 2. 快速安装
- 2.1 环境准备
- 2.2 开始安装
- 2.3 启动/关闭kongx
- 2.4 使用kongx
- 3. 使用指南
- 3.0 mockbin配置示例
- 3.0.1 不含upstream的配置
- 3.0.2 含upstream的配置
- 3.1 Gateway
- 3.1.1 Upstreams
- 3.1.1.1 新增/修改upstreams
- 3.1.1.2 管理targets
- 3.1.1.3 设置健康检查
- 3.1.1.4 upstream视图
- 3.1.2 Services
- 3.1.2.1 新建/修改service
- 3.1.2.2 添加服务路由
- 3.1.2.3 添加服务插件
- 3.1.2.4 同步services
- 3.1.2.5 services视图
- 3.1.3 Routes
- 3.1.3.1 路由列表
- 3.1.3.2 修改路由
- 3.1.3.3 批量修改HOSTS
- 3.1.4 Plugins
- 3.1.4.1 新增插件
- 3.1.4.2 插件列表
- 3.1.5 Consumers
- 3.1.5.1 新建/修改consumers
- 3.1.6 Kong Shell
- 3.1.6.1 shell安装
- 3.1.6.2 使用Shell
- 3.2 系统管理
- 3.2.1 用户管理
- 3.2.2 角色管理
- 3.2.3 用户组管理
- 3.2.4 菜单管理
- 3.3 参数管理
- 3.3.1 环境管理
- 3.3.2 系统参数
- 3.3.3 如何增加多个环境?
- 3.4 日志管理
- 3.4.1 操作日志
- 3.4.2 同步日志
- 3.5 工具箱
- 3.5.1 Kong Shell
- 3.5.2 切换工作台
- 3.6 网关流水线
- 3.6.1 Pipeline
- 4. 最佳实践
- 4.1 灰度插件canary使用
- 4.2 kong与consul集成
- 4.2.1 使用kong提供dns服务
- 4.2.2 使用dnsmasq提供dns服务
- 4.2.3 使用consul自主发现服务
- 4.3 kong健康检查
- 4.3.1 简介
- 4.3.2 健康检查(主动检查)
- 4.3.3 断路器(被动检查)
- 4.3.4 总结
- 4.4 认证插件之key-auth
- 4.5 认证插件之basic-auth
- 4.6 认证插件之oauth2-auth
- 4.7 认证插件之jwt
- 4.8 kong自定义access_log格式
- 4.8.1 前言
- 4.8.2 配置文本格式
- 4.8.3 配置JSON格式
- 4.9 kong的访问监控
- 4.9.1 解决方案
- 4.9.2 方案实施
- 4.9.3 接入grafana报表
- 5. 常见问题
- 5.1 默认账号及密码
- 5.2 新增用户默认密码为123456
- 5.3 如何设置超级管理员
- 5.4 密码忘记了咋办
- 6. Kong
- 6.1 Kong简介
- 6.2 kong安装指南
- 6.2.1 kong安装-RPM
- 6.2.2 kong安装-源码
- 6.2.3 kong基于yum源安装
- 6.3 Admin API
- 6.3.1 API支持两种内容类型
- 6.3.2 声明式配置(Declarative Configuration)
- 6.3.3 获取实体schema
- 6.3.4 services
- 6.3.5 Routes
- 6.3.6 Consumers
- 6.3.7 Plugins
- 6.3.8 Certficate
- 6.3.9 CA certficate(1.3.x+以上版本)
- 6.3.10 SNI
- 6.3.11 Upstreams
- 6.3.12 Targets
- 6.4 Kong使用
- 6.4.1 DB-LESS模式
- 6.4.2 DB模式