Kong 网关服务部署及配置案例:代理 Hzero 后端服务完整配置步骤及自定义429错误消息

📅 发布时间:2026/7/4 1:50:38 👁️ 浏览次数:
Kong 网关服务部署及配置案例:代理 Hzero 后端服务完整配置步骤及自定义429错误消息
Kong 网关代理 HZero 后端服务配置步骤1. Kong 网关部署1.1 环境准备Linux 服务器192.168.0.95Docker 环境Docker Compose1.2 部署步骤创建 Docker Compose 文件version:3.8services:kong:image:kong:3.9.1container_name:kongports:-8000:8000# 代理端口-8443:8443# HTTPS 代理端口-8001:8001# Admin API 端口-8444:8444# HTTPS Admin API 端口environment:-KONG_DATABASEoff-KONG_PROXY_ACCESS_LOG/dev/stdout-KONG_ADMIN_ACCESS_LOG/dev/stdout-KONG_PROXY_ERROR_LOG/dev/stderr-KONG_ADMIN_ERROR_LOG/dev/stderr-KONG_ADMIN_LISTEN0.0.0.0:8001,0.0.0.0:8444 ssl-KONG_DECLARATIVE_CONFIG/kong/config/kong.ymlvolumes:-./kong.yml:/kong/config/kong.yml:rorestart:unless-stopped启动 Kong 容器docker-composeup-d验证 Kong 启动状态curl-ihttp://192.168.0.95:80012. 服务配置2.1 添加 HZero Gateway 服务# 使用 Admin API 添加服务curl-XPOST http://192.168.0.95:8001/services\--datanamehzero-gateway\--dataurlhttp://192.168.0.128:80802.2 配置路由# 为服务添加路由curl-XPOST http://192.168.0.95:8001/services/hzero-gateway/routes\--datapaths[]/\--datanamehzero-gateway-route3. 限流插件配置3.1 添加 rate-limiting 插件# 添加限流插件设置 1 秒 1 次1 分钟 60 次curl-XPOST http://192.168.0.95:8001/services/hzero-gateway/plugins\--datanamerate-limiting\--dataconfig.minute60\--dataconfig.second1\--dataconfig.policylocal\--dataconfig.limit_byip3.2 自定义错误消息# 获取插件 IDPLUGIN_ID$(curl-shttp://192.168.0.95:8001/services/hzero-gateway/plugins|jq-r.data[] | select(.name rate-limiting) | .id)# 更新错误消息curl-XPATCH http://192.168.0.95:8001/plugins/$PLUGIN_ID\--dataconfig.error_message你的请求过于频繁请稍后再试4. 配置验证4.1 测试请求# 测试正常请求curl-ihttp://192.168.0.95:8000/hzero-gateway/iam/v1/tenants/having-custom-menu?page0size10# 测试限流连续发送多个请求curl-ihttp://192.168.0.95:8000/hzero-gateway/iam/v1/tenants/having-custom-menu?page0size10sleep0.5curl-ihttp://192.168.0.95:8000/hzero-gateway/iam/v1/tenants/having-custom-menu?page0size104.2 预期响应正常请求返回 200 OK 或业务相关状态码限流触发返回 429 Too Many Requests响应体为{message:你的请求过于频繁请稍后再试,request_id:[唯一请求ID]}5. 排障过程5.1 常见问题及解决方案问题 1Kong 配置后请求无响应症状访问 Kong 代理地址无响应或超时排查步骤检查 Kong 服务是否正常运行curl -i http://192.168.0.95:8001检查后端服务是否可访问curl -i http://192.168.0.128:8080检查服务和路由配置curl -s http://192.168.0.95:8001/services和curl -s http://192.168.0.95:8001/routes解决方案确保后端 HZero Gateway 服务已启动并运行检查网络连接确保 Kong 容器能访问后端服务验证服务 URL 配置正确问题 2后端服务返回 503 错误症状Kong 返回 503 Service Unavailable排查步骤直接访问后端服务curl -i http://192.168.0.128:8080检查后端服务日志确认服务依赖如 Eureka、数据库是否正常解决方案启动 HZero Gateway 服务确保服务已注册到 Eureka检查数据库连接配置问题 3限流插件不生效症状超过限制后仍能正常请求排查步骤检查插件配置curl -s http://192.168.0.95:8001/services/hzero-gateway/plugins验证插件是否启用检查限流策略配置解决方案确保插件配置正确检查limit_by参数是否设置合理验证policy配置是否适合当前环境6. 监控与维护6.1 查看限流统计# 查看插件状态curl-shttp://192.168.0.95:8001/plugins/$PLUGIN_ID# 查看服务健康状态curl-shttp://192.168.0.95:8001/health6.2 调整限流策略根据实际业务需求可以调整限流参数# 更新限流配置curl-XPATCH http://192.168.0.95:8001/plugins/$PLUGIN_ID\--dataconfig.minute120\--dataconfig.second27. 完整配置示例7.1 Kong 声明式配置文件 (kong.yml)_format_version:3.0services:-name:hzero-gatewayurl:http://192.168.0.128:8080routes:-name:hzero-gateway-routepaths:-/plugins:-name:rate-limitingconfig:minute:60second:1policy:locallimit_by:iperror_message:你的请求过于频繁请稍后再试7.2 测试脚本importrequestsimporttime urlhttp://192.168.0.95:8000/hzero-gateway/iam/v1/tenants/having-custom-menu?page0size10print(Testing rate limiting with custom error message...)print()foriinrange(5):print(fRequest{i1}:)responserequests.get(url)print(fStatus code:{response.status_code})print(fHeaders:{dict(response.headers)})print(fResponse:{response.text[:200]}...iflen(response.text)200elsefResponse:{response.text})print(------------------------------------------------------------)time.sleep(0.5)print(Test completed!)8. 总结跟着我上面讲的步骤进行以上配置顺利的话Kong 网关就会代理 HZero 后端服务并实现了请求路由将所有请求转发到 HZero Gateway 服务限流保护限制每个 IP 1 秒只能请求 1 次1 分钟不超过 60 次自定义错误消息当触发限流时返回友好的中文错误提示完整监控通过 Kong Admin API 可随时查看和调整配置