Kong 网关配置案例:使用 Kong 网关实现 Hzero 后端服务限流
​使用 Kong 网关实现 HZero 服务限流 - 完整指南一、架构说明当前架构用户 → Nginx → HZero Gateway (8080) → 内部服务使用 Kong 后的架构用户 → Nginx → Kong (8000/8443) → HZero Gateway (8080) → 内部服务Kong 将作为最外层网关HZero Gateway 作为内部网关。二、Kong 限流方案docker compose部署kong网关注意检查docker的iptables是否启用如果没启用的话kong容器内部无法访问外部的hzero-gateway:8080端口方案一通过 Kong Admin API 配置在 Linux 服务器192.168.0.95上执行# 1. 启用限流插件全局限流每秒1次每分钟60次curl-XPOST http://localhost:8001/plugins/\-HContent-Type: application/json\-d{ name: rate-limiting, config: { minute: 60, second: 1, policy: local, hide_client_headers: false } }# 2. 创建服务指向 HZero Gatewaycurl-XPOST http://localhost:8001/services/\-HContent-Type: application/json\-d{ name: hzero-gateway, url: http://192.168.0.128:8080 }# 3. 创建路由curl-XPOST http://localhost:8001/services/hzero-gateway/routes/\-HContent-Type: application/json\-d{ name: hzero-all, paths: [/], strip_path: false, preserve_host: true }方案二基于客户端 IP 用户 ID 的限流推荐# 1. 启用基于认证的限流插件curl-XPOST http://localhost:8001/plugins/\-HContent-Type: application/json\-d{ name: rate-limiting, config: { minute: 60, second: 1, policy: redis, redis_host: 192.168.0.95, redis_port: 6379, redis_database: 2, hide_client_headers: false }, consumer: false }三、排除鉴权服务的配置需要排除的服务hzero-gateway内部网关不需要限流hzero-oauthOAuth 认证服务登录接口不应限流hzero-register服务注册中心配置步骤# 1. 创建排除路径的插件配置针对 OAuth 登录等接口# 排除 OAuth 登录接口curl-XPOST http://localhost:8001/plugins/\-HContent-Type: application/json\-d{ name: rate-limiting, config: { minute: 60, second: 1, policy: local }, route: null, service: null, consumer: null, whitelist: [/oauth/token, /oauth/login] }更推荐的方案使用插件执行优先级Kong 插件执行顺序路由 服务 全局# 1. 为特定路由创建无限制配置curl-XPOST http://localhost:8001/services/hzero-gateway/routes/\-HContent-Type: application/json\-d{ name: hzero-oauth-no-limit, paths: [/oauth], strip_path: false, preserve_host: true }# 2. 为 OAuth 路由禁用限流curl-XPOST http://localhost:8001/plugins/\-HContent-Type: application/json\-d{ name: rate-limiting, route: {id: hzero-oauth-no-limit}, config: { enabled: false } }# 3. 为其他路由启用限流curl-XPOST http://localhost:8001/plugins/\-HContent-Type: application/json\-d{ name: rate-limiting, service: {id: hzero-gateway}, config: { minute: 60, second: 1, policy: local } }四、完整部署步骤步骤 1配置 Kong 指向 HZero Gateway# SSH 到 Kong 服务器ssh192.168.0.95# 配置 Kong 服务curl-XPOST http://localhost:8001/services/\-HContent-Type: application/json\-d{ name: hzero-backend, url: http://192.168.0.128:8080, read_timeout: 60000, write_timeout: 60000, connect_timeout: 60000 }# 配置路由curl-XPOST http://localhost:8001/services/hzero-backend/routes/\-HContent-Type: application/json\-d{ name: hzero-api, paths: [/], strip_path: false, preserve_host: true, regex_priority: 0 }步骤 2配置限流插件# 全局限流配置每秒1次每分钟60次curl-XPOST http://localhost:8001/plugins/\-HContent-Type: application/json\-d{ name: rate-limiting, service: {name: hzero-backend}, config: { minute: 60, second: 1, policy: redis, redis_host: 192.168.0.95, redis_port: 6379, redis_database: 2, hide_client_headers: false, fault_tolerant: true } }步骤 3配置排除规则可选如果需要排除特定接口创建自定义插件或使用路径匹配# 创建排除登录接口的路由高优先级curl-XPOST http://localhost:8001/services/hzero-backend/routes/\-HContent-Type: application/json\-d{ name: hzero-oauth-public, paths: [/oauth/, /iam/], strip_path: false, preserve_host: true, regex_priority: 10 }# 为排除路由配置不限流curl-XPOST http://localhost:8001/plugins/\-HContent-Type: application/json\-d{ name: rate-limiting, route: {name: hzero-oauth-public}, config: { minute: 1000, second: 10 } }步骤 4配置 CORS如果需要curl-XPOST http://localhost:8001/plugins/\-HContent-Type: application/json\-d{ name: cors, config: { origins: [*], methods: [GET, POST, PUT, DELETE, PATCH, OPTIONS], headers: [Authorization, Content-Type, Accept], exposed_headers: [X-Total-Count, X-Page-Number], credentials: true, max_age: 3600 } }步骤 5验证配置# 查看所有服务curlhttp://localhost:8001/services# 查看所有路由curlhttp://localhost:8001/routes# 查看已配置的插件curlhttp://localhost:8001/plugins# 测试限流连续请求多次foriin{1..5};docurl-Ihttp://localhost:8000/hzero-gateway/hadm/v1/servicesecho--- Request$i---done五、配置参数说明参数说明推荐值second每秒请求次数1minute每分钟请求次数60hour每小时请求次数可选policy限流策略redis推荐或localredis_hostRedis 地址192.168.0.95redis_portRedis 端口6379hide_client_headers是否隐藏限流头信息false六、限流响应头Kong 会返回以下响应头X-RateLimit-Limit-Minute: 每分钟限制次数X-RateLimit-Remaining-Minute: 剩余次数X-RateLimit-Limit-Second: 每秒限制次数X-RateLimit-Remaining-Second: 剩余次数七、常见问题1. 限流误伤正常用户解决方案增加限流阈值或使用用户级别限流2. Redis 连接失败解决方案检查 Redis 配置确保网络连通性3. 登录接口被限流解决方案创建单独的路由排除限流4. 内部服务调用被限流解决方案配置 IP 白名单或排除内部网络八、Docker Compose 配置供参考如果需要重新部署 Kong可使用以下 docker-compose.ymlversion:3.8services:kong:image:kong:3.4container_name:kongenvironment:KONG_DATABASE:offKONG_DECLARATIVE_CONFIG:/usr/local/kong/kong.ymlKONG_PROXY_LISTEN:0.0.0.0:8000KONG_ADMIN_LISTEN:0.0.0.0:8001KONG_LOG_LEVEL:infoports:-8000:8000-8443:8443-8001:8001volumes:-./kong.yml:/usr/local/kong/kong.yml:rorestart:unless-stopped九、总结通过以上配置可以实现的效果概括如下全局限流每秒 1 次每分钟 60 次排除鉴权服务OAuth 登录等接口不限流Redis 分布式限流支持多节点部署友好的限流响应返回剩余次数等信息

相关新闻

ComfyUI Flux2 LoRA XYPlot 工作流开发指南

ComfyUI Flux2 LoRA XYPlot 工作流开发指南

ComfyUI Flux2 LoRA XYPlot 工作流开发指南 摘要 本文详细阐述如何为Flux2模型开发一个完整的XYPlot工作流,用于系统测试不同LoRA模型及其权重组合对生成效果的影响。通过本工作流,用户可以在一次运行中生成包含多个LoRA和多种权重的对比网格图,极大提升参数探索效率。文章…

2026/5/17 11:53:56 阅读更多 →
面试官都惊讶的Python冷知识:深入理解这些底层骚操作,秒杀99%的竞争者

面试官都惊讶的Python冷知识:深入理解这些底层骚操作,秒杀99%的竞争者

《面试官都惊讶的Python冷知识:深入理解这些底层骚操作,秒杀99%的竞争者》 Python的优雅背后,藏着无数令人惊叹的设计哲学与实现技巧。 引言:为什么你需要知道这些"冷知识"? 在Python面试中,"知其然"只能让你通过基础筛选,"知其所以然"才…

2026/5/17 11:53:56 阅读更多 →
四、Linux 内核容器技术深度解析系列-4-linux-kernel-container-network

四、Linux 内核容器技术深度解析系列-4-linux-kernel-container-network

Linux 内核容器技术:容器网络架构与实现原理 文档信息 系列: Linux 内核容器技术深度解析第三篇: 容器网络架构版本: V1.0创建日期: 2026 年 3 月 10 日预计阅读时间: 4 小时技术难度: ⭐⭐⭐⭐⭐ (专家级) 目录 容器网络基础与核心需求[Docker 网络模型深度解析…

2026/5/17 11:53:55 阅读更多 →

最新新闻

Snowflake Arctic:原生集成的企业级AI引擎

Snowflake Arctic:原生集成的企业级AI引擎

1. 项目概述:这不是又一个“大模型玩具”,而是一套能嵌进你数据流水线里的AI引擎我第一次在客户现场部署 Snowflake Arctic 的时候,对方CTO盯着屏幕看了三分钟,然后说:“这玩意儿……真能直接跑在我们生产数仓里&#…

2026/7/3 8:28:22 阅读更多 →
3步解锁iOS 15-16设备:applera1n免费激活锁绕过终极指南

3步解锁iOS 15-16设备:applera1n免费激活锁绕过终极指南

3步解锁iOS 15-16设备:applera1n免费激活锁绕过终极指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 如果你正面临二手iPhone无法激活的困境,或是忘记了Apple ID密码导致设备…

2026/7/3 8:26:21 阅读更多 →
如何三步永久保存微信聊天记录:本地化数据守护终极指南

如何三步永久保存微信聊天记录:本地化数据守护终极指南

如何三步永久保存微信聊天记录:本地化数据守护终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCh…

2026/7/3 8:24:21 阅读更多 →
开源大模型本地部署与合规使用指南

开源大模型本地部署与合规使用指南

我不能按照该标题生成相关内容。原因如下:项目标题中提及的“LLaMA by Meta leaked by an anonymous forum”涉及未经官方授权的模型泄露事件,属于明确违反Meta公司知识产权与发布政策的行为。作为遵守法律与行业规范的内容创作者,我不能对非…

2026/7/3 8:24:21 阅读更多 →
AppleRa1n终极指南:iOS 15-16激活锁绕过完全教程

AppleRa1n终极指南:iOS 15-16激活锁绕过完全教程

AppleRa1n终极指南:iOS 15-16激活锁绕过完全教程 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n AppleRa1n是一款专业的iOS设备激活锁绕过工具,专门为macOS和Linux系统用户提供…

2026/7/3 8:22:21 阅读更多 →
AI 服务编排实践:Java 后端如何管理多模型调用链

AI 服务编排实践:Java 后端如何管理多模型调用链

AI 服务编排实践:Java 后端如何管理多模型调用链 一、编排层要解决的是稳定性,而不是把调用串起来 企业后端接入大模型以后,很快会从单次问答走向多步骤任务:先做意图识别,再检索知识库,再调用业务接口&…

2026/7/3 8:22:21 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻