Kong API网关配置踩坑记
在为微服务架构部署Kong API网关时,遇到了几个令人头疼的配置问题,分享一下实际踩坑经验。
问题一:路由匹配优先级混乱
最初配置了多个路由规则,发现请求总是命中错误的路由。通过curl -X GET http://localhost:8001/routes查看路由列表后发现,Kong按照路径长度排序,而非我们期望的精确匹配优先。
解决方案:
# 创建路由时明确指定priority
curl -X POST http://localhost:8001/routes \
-d 'name=user-service' \
-d 'paths[]=/api/users' \
-d 'service.id=service-id' \
-d 'priority=100'
# 确保精确匹配的路由优先级更高
问题二:JWT认证配置失败
在集成JWT认证插件时,客户端请求头格式不正确导致认证失败。Kong要求使用Authorization: Bearer <token>格式。
实际验证步骤:
# 正确的请求格式
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
http://localhost:8000/api/users
# 错误示例(会失败)
curl -H "token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
http://localhost:8000/api/users
问题三:超时设置不当导致服务雪崩
默认的连接超时设置为60秒,在高并发场景下导致大量连接堆积。通过修改全局配置解决:
# kong.yml
nginx:
proxy_connect_timeout: 5
proxy_send_timeout: 10
proxy_read_timeout: 10
这些配置经验在实际生产环境中验证有效,建议在部署前充分测试路由优先级和超时设置。

讨论