KONG更新插件时通过服务关联端点PATCH返回not found问题咨询
问题根因
- 插件绑定关系不匹配:通过
/services/{service}/plugins/{plugin_id}端点操作的前提是目标插件直接绑定到该服务,若你之前创建插件时未指定服务关联参数(service.id),生成的是全局插件,自然无法通过服务关联路径访问到。 - 路径参数错误:服务名称存在大小写错误、特殊字符未转义,或填写的插件ID不属于当前服务绑定的插件列表。
- 版本适配问题:当前运行的Kong网关版本与参考的2.5.x Admin API版本不一致,低版本对服务维度的插件操作路径支持存在差异。
解决步骤
- 首先查询指定服务绑定的全量插件列表,确认目标插件ID在返回结果中:
curl http://{HOST}:8001/services/{服务名称或ID}/plugins
若查询结果中无对应插件ID,说明该插件未绑定到当前服务,无法通过当前路径操作。
- 确认插件绑定关系正确后,使用以下格式执行PATCH更新操作,示例为禁用指定插件:
curl -X PATCH http://{HOST}:8001/services/{服务名称或ID}/plugins/{目标插件ID} \ --data "enabled=false"
如需修改插件配置,追加对应的config.*参数即可。
- 若需将全局插件调整为服务绑定插件,先删除原全局插件,再通过服务维度创建插件:
# 删除原全局插件 curl -X DELETE http://{HOST}:8001/plugins/{原插件ID} # 创建绑定到指定服务的插件实例 curl -X POST http://{HOST}:8001/services/{服务名称或ID}/plugins \ --data "name=request-termination" \ --data "config.status_code=403" \ --data "config.message=So long and thanks for all the fish!"
创建完成后即可通过服务关联端点更新该插件配置。
内容的提问来源于stack exchange,提问作者user1555190
相关产品推荐
相关产品推荐

