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

Traefik v2 如何通过中间件在请求头中添加唯一Trace ID

解决方案
  • 你可以直接使用Traefik v2.x内置的requestid中间件实现需求,该中间件会自动生成UUID格式的唯一请求ID,无需额外引入第三方服务或插件。
  • 该中间件支持自定义请求头名称,你可以直接将头名设置为优先需要的Trace-ID,也可以同时配置多个ID头满足不同场景需求。

修改后的完整配置

version: "3.3"

services:
  traefik:
    image: traefik:v2.4
    container_name: traefik
    environment:
      - TRAEFIK_ENTRYPOINTS_WEB=web
      - TRAEFIK_ENTRYPOINTS_WEB_ADDRESS=:80
      - TRAEFIK_API_INSECURE=true # 启用Dashboard
      - TRAEFIK_PROVIDERS_DOCKER=true # 启用Docker Provider
      - TRAEFIK_LOG_LEVEL=INFO # 设置日志级别为INFO
      - TRAEFIK_ACCESSLOG=true # 启用访问日志
    ports:
      - 80:80
      - 8080:8080
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

  headers:
    image: akalipetis/headers:latest # 该镜像会打印所有HTTP Headers
    container_name: headers
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.headers.middlewares=testTraceId"
      # 配置requestid中间件,生成唯一UUID并存入Trace-ID头
      - "traefik.http.middlewares.testTraceId.requestid.header=Trace-ID"
      # 如果需要同时添加X-Request-ID、X-Trace-ID头,取消注释以下4行配置即可
      # - "traefik.http.middlewares.testTraceId.requestid.header=X-Request-ID"
      # - "traefik.http.middlewares.copyId.headers.customrequestheaders.Trace-ID={X-Request-ID}"
      # - "traefik.http.middlewares.copyId.headers.customrequestheaders.X-Trace-ID={X-Request-ID}"
      # - "traefik.http.routers.headers.middlewares=testTraceId,copyId"
      - "traefik.http.services.headers.loadbalancer.server.port=8000"
      - "traefik.http.routers.headers.rule=Host(`headers.localhost`)"
      - "traefik.http.routers.headers.entrypoints=web"

配置生效后,所有访问headers.localhost的请求都会自动携带唯一UUID格式的Trace-ID请求头,每个请求的ID互不重复。

内容的提问来源于stack exchange,提问作者Janshair Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:00:00