You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Traefik v2 Docker路径路由前缀剥离全局配置问题求助

解决方案

错误原因说明

你之前的启动参数报错是因为Traefik Docker Provider没有providers.docker.middleware这个配置项,无法直接在Docker Provider参数中定义中间件,所有中间件需要先在动态配置中定义,再通过全局默认中间件参数引用。

配置修改步骤

1. 新增动态配置文件

你已经在启动参数中配置了--providers.file.directory=/etc/traefik/dynamic,我们直接用这个目录加载通用中间件配置。
先在本地创建动态配置目录./traefik/dynamic,在目录下新建default-middlewares.yaml文件,内容如下:

http:
  middlewares:
    strip-service-prefix:
      stripPrefixRegex:
        regex:
          - "^/[^/]+"

这个中间件会自动剥离请求路径的第一层前缀,刚好匹配你/app1、/app2的场景。

2. 修改docker-compose.yml配置

需要做两处调整:

  • 挂载本地动态配置目录到Traefik容器对应路径
  • 新增Docker Provider默认中间件参数,引用上面定义的前缀剥离中间件

修改后的完整配置如下:

version: "3"
services:
  traefik:
    image: "traefik:v2.5.4"
    command:
      - --entrypoints.web.address=:80
      - --providers.docker=true
      - --api
      - --api.insecure=true
      - --api.dashboard=true
      - --providers.file.directory=/etc/traefik/dynamic
      - --providers.docker.defaultRule=Host(`app.mydomain.com`) && PathPrefix(`/{{ index .Labels "com.docker.compose.service" }}`)
      # 新增:全局默认中间件,引用file provider定义的前缀剥离中间件
      - --providers.docker.defaultMiddlewares=strip-service-prefix@file
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      # 新增:挂载本地动态配置目录
      - "./traefik/dynamic:/etc/traefik/dynamic:ro"

  app1:
    image: containous/whoami:v1.3.0
  app2:
    image: containous/whoami:v1.3.0
  app3:
    image: containous/whoami:v1.3.0

验证效果

启动服务后执行curl http://app.mydomain.com/app2/foo,查看whoami返回的Path字段值为/foo即配置生效。

官方文档查询方法

  1. 找Docker Provider配置项:查看Docker Provider文档的Configuration章节,可以找到defaultMiddlewares参数,作用是为所有Docker自动发现的路由默认绑定指定中间件,无需逐个容器配置label。
  2. 找中间件配置:查看HTTP Middlewares章节,找到StripPrefixRegex中间件的定义规则和正则写法。
  3. 找中间件引用规则:查看中间件文档的命名空间章节,不同Provider提供的中间件需要加对应后缀,文件Provider提供的中间件后缀为@file。

内容的提问来源于stack exchange,提问作者Paul Sweeney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:15:02