Kong声明式配置模式下启用rate-limiting插件报未启用错误
问题根因
报错由两处配置错误共同导致:
- Kong的插件加载白名单未包含
rate-limiting:Kong采用显式启用插件的机制,只有在KONG_PLUGINS环境变量中声明的插件才会被加载,你当前配置的插件列表仅包含request-transformer,cors,key-auth,acl,缺失限流插件。 - 声明式配置
kong.yml存在YAML缩进错误:rate-limiting插件对应的config配置块缩进层级错误,和插件条目本身平级,没有归属到该插件的配置项下。 - 日志中出现的
the "user" directive makes sense only if the master process runs with super-user privileges为非阻断性警告,是容器非root用户启动导致的,不影响服务功能,无需处理。
修复步骤
1. 更新docker-compose.yml的插件加载配置
找到Kong服务下的KONG_PLUGINS环境变量配置,将rate-limiting加入插件列表,修改后配置如下:
environment: KONG_DATABASE: "off" KONG_DECLARATIVE_CONFIG: /var/lib/kong/kong.yml KONG_DNS_ORDER: LAST,A,CNAME KONG_PLUGINS: request-transformer,cors,key-auth,acl,rate-limiting
后续如果需要启用其他官方内置插件或自定义插件,都必须添加到这个逗号分隔的列表中,否则Kong解析配置时会直接抛出插件未启用的错误。
2. 修正kong.yml的缩进错误
调整rate-limiting插件下config块的缩进,让其成为该插件的子配置项,修正后的完整插件配置段如下:
services: - name: api-v1 url: http://api-service:{PORT} routes: - name: api-v1 paths: - /api/ plugins: - name: cors - name: key-auth config: hide_credentials: false - name: acl config: hide_groups_header: true allow: - admin - anon - name: rate-limiting config: # 每秒允许的HTTP请求数 second: 5 # 每小时允许的HTTP请求数 hour: 10000 policy: local fault_tolerant: true hide_client_headers: false
3. 重启服务验证配置
配置修改完成后,执行命令重建启动Kong容器:
docker-compose up -d --force-recreate kong
启动后查看容器日志,若不再出现插件未启用的解析错误,即代表修复完成。
内容的提问来源于stack exchange,提问作者Aditya Mishra
相关产品推荐
相关产品推荐

