Kong:一个开源的API网关 | 作者:Aryak Deshpande - Medium
作者:API传播员 · 2025-11-23 · 阅读时间:4分钟
Kong 是一款轻量级、快速且灵活的开源 API 网关和反向代理工具,支持多种部署模式如本地、云端和混合模式,并提供路由、限流、身份验证等核心功能。它允许使用 Golang 或 Lua 编写自定义插件,并可通过 Docker 部署,帮助降低云网关成本,适用于现代 API 管理场景。
Kong:一个开源的 API 网关
Kong 是一款轻量级、快速且灵活的开源 API 请求。它支持多种部署模式,包括本地、云端和混合模式,适用于各种场景。
Kong 的主要功能
Kong 提供了丰富的功能,以下是其核心特性:
- 路由:支持灵活的请求路由。
- 限流:提供请求速率限制功能。
- 身份验证:支持多种身份验证方式。
- IP 白名单/黑名单:增强安全性。
- 请求转换:支持传入和传出的请求转换。
- 日志记录:记录请求日志,便于追踪和分析。
- 指标监控:提供详细的性能指标。
Kong 的一大亮点是支持使用 Golang 或 Lua 编写自定义插件,满足企业的特定需求。此外,Kong 还内置了大量插件,能够处理第三方 API 请求或对请求进行转换和预处理,例如解密有效负载数据。
Kong 的优势
如果您的组织正在使用 AWS Lambda 或其他付费云网关解决方案,Kong 可以帮助您显著降低成本,每月节省高达 1000 美元。它支持声明式 YAML 配置,并可运行在独立模式或集群模式下。
Kong 提供两种运行模式:
- 无数据库模式:适用于轻量级场景。
- 数据库模式:支持 Postgres 数据库(较新版本已移除对 Apache Cassandra 的支持)。
此外,Kong 是 Kubernetes 原生工具,支持容器化部署,能够无缝集成到现代云原生架构中。
使用 Docker 部署 Kong
以下是通过 Docker 部署 Kong 的步骤:
1. 创建 Docker 网络和容器
docker network create kong-net
docker run --rm --network=kong-net
-e "KONG_DATABASE=postgres"
-e "KONG_PG_HOST=127.0.0.1"
-e "KONG_PG_PASSWORD=kong"
-e "KONG_PASSWORD=kong"
kong/kong-gateway:2.8.1.0-alpine kong migrations bootstrapdocker run -d --name kong-gateway
--network=kong-net
-e "KONG_DATABASE=postgres"
-e "KONG_PG_HOST=127.0.0.1"
-e "KONG_PG_USER=kong"
-e "KONG_PG_PASSWORD=kong"
-e "KONG_PG_DATABASE=kong"
-e "KONG_PG_PORT=5432"
-e "KONG_PROXY_ACCESS_LOG=/dev/stdout"
-e "KONG_ADMIN_ACCESS_LOG=/dev/stdout"
-e "KONG_PROXY_ERROR_LOG=/dev/stderr"
-e "KONG_ADMIN_ERROR_LOG=/dev/stderr"
-e "KONG_ADMIN_LISTEN=0.0.0.0:8001"
-e "KONG_ADMIN_GUI_URL=http://localhost:8002"
-e KONG_LICENSE_DATA
-p 8000:8000
-p 8449:8443
-p 8001:8001
-p 8444:8444
-p 8002:8002
-p 8445:8445
-p 8003:8003
-p 8004:8004
kong/kong-gateway:2.8.1.1-alpine
2. 添加服务
curl -i -X POST
--url http://localhost:8001/services/
--data 'name=service-a'
--data 'url=http://127.0.0.1:9091'
curl -i -X POST
--url http://localhost:8001/services/
--data 'name=service-b'
--data 'url=http://127.0.0.1:9082'
3. 添加路由
curl -X POST
--url "http://localhost:8001/services/service-a/routes"
--data 'paths[]=/a'
curl -X POST
--url "http://localhost:8001/services/service-b/routes"
--data 'paths[]=/b'
4. 创建消费者
curl -X POST
--url "http://localhost:8001/consumers/"
--data "username=aryak"
5. 添加 OAuth 2.0 插件
curl -X POST
--url http://localhost:8001/plugins/
--data "name=oauth2"
--data "config.scopes[]=email"
--data "config.scopes[]=phone"
--data "config.scopes[]=address"
--data "config.mandatory_scope=true"
--data "config.enable_authorization_code=true"
--data "config.enable_client_credentials=true"
--data "config.enable_implicit_grant=true"
--data "config.enable_password_grant=true"
6. 生成消费者凭据
curl -X POST
--url "http://localhost:8001/consumers/aryak/oauth2/"
--data "name=service-a"
--data "redirect_uris[]=http://localhost:8000"
7. 生成访问令牌
curl -X POST
--url "https://localhost:8449/a/oauth2/token"
--data "grant_type=client_credentials"
--data "scope=email address"
--data "client_id=rXVj9YffHl4OhE5UNOOrX19DgQc3ULhu"
--data "client_secret=ufYBBVWFtlSXcJ9Fdf6UNvppMvv3VDF0"
--insecure
返回结果示例:
{"expires_in":7200,"access_token":"xMlIkw4b1hvPShf8v8sINrwkkXLA9FTn","token_type":"bearer"}
默认情况下,访问令牌的有效期为 2 小时,您可以根据需求进行配置。
自定义插件开发
Kong 提供了强大的插件开发工具包,支持用户根据需求对请求和响应进行转换。如果需要插件的源代码,请随时与作者联系。
通过本文的介绍,您可以快速上手 Kong 的基本功能和部署流程。Kong 的灵活性和强大的插件支持,使其成为现代 API 管理的理想选择。
原文链接: https://medium.com/@aryak.deshpande0512/kong-an-open-source-api-gateway-ffc91f474216
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
最新文章
- 如何测试实时视频流API性能 – FastPix
- 如何用 OpenAPI 在 Express 中构建更好的 API
- 使用 Intersection Observer API 实现懒加载 – LogRocket 博客
- API在社交媒体中的应用
- 实战拆解:如何使用 ChatGPT Agent 实现自动化多步骤任务
- 使用AI进行API设计
- 深入解析API Gateway:微服务架构中的关键组件及其重要功能
- 如何获取巴法云开放平台 API Key 密钥(分步指南)
- 没有中国银行卡怎么用微信支付?探索国际用户的支付新思路
- Python字典(dict)完全指南
- OWASP API十大漏洞及DAST如何保护您 …
- API安全在物联网(IoT)中的关键作用
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册