Traefik使用本地插件时提示Middleware不存在如何解决
Traefik 本地插件引用报错解决方案
问题核心原因
你只完成了本地插件的静态注册,缺少动态middleware实例声明步骤:Traefik加载本地插件只是完成了插件类型的注册,不会自动生成可用的middleware实例,需要你手动声明绑定插件的middleware实例后才能被路由引用。
具体修复步骤
- 新增middleware实例声明配置
你使用的是Docker provider,直接新增对应Docker Label即可:
# docker-compose labels配置示例 - "traefik.http.middlewares.my-plugin-middleware.plugin.myplugin.Headers.Foo=CustomBar"
配置规则为:traefik.http.middlewares.<自定义middleware名>.plugin.<静态配置中声明的本地插件名>.<插件参数>,对应你之前的配置,本地插件名就是myplugin。
如果使用动态配置文件,写法如下:
[http.middlewares.my-plugin-middleware.plugin.myplugin] Headers.Foo = "CustomBar"
- 调整路由的middleware引用配置
直接使用你上面自定义的middleware名即可,无需加额外前缀:
traefik.http.routers.myrouter.middlewares="my-plugin-middleware"
- 排查拼写错误
你报错日志中出现的testplugin-mypluginn@docker多了一个末尾的n,先检查所有配置项是否存在拼写错误。 - 确认插件挂载路径正确性(2.5.x版本必填)
Docker部署时必须把本地插件的代码目录,完全挂载到容器内对应moduleName的路径下:
# 示例挂载参数,对应你的moduleName=test.com/traefik/myplugin -v ./你的本地插件代码目录:/plugins-local/src/test.com/traefik/myplugin
路径必须完全匹配moduleName的层级,少一级都会导致插件实例化失败。
内容的提问来源于stack exchange,提问作者Jeyvison
相关产品推荐
相关产品推荐

