← 中文资源

简体中文版本

组合 Traefik 中间件实现纵深防御

把限流、安全头与熔断组合为带标签的可复用中间件链,使每个被路由的服务都继承同样的保护。

阅读英文原文

概述

各服务各自配置保护会导致不一致,部分路由缺头或缺限流,单个慢后端还可能级联。把保护抽成命名中间件并组成显式顺序的链,可让能力以标签或 CRD 形式统一施加。

关键步骤

  1. 定义重试、限流、请求头与熔断等单个中间件。
  2. 按有意为之的顺序把它们组合为链。
  3. 通过标签或 CRD 把链附加到服务。
  4. 借助金丝雀路由验证头与状态行为。

验证

  • 所有路由都继承同一套保护。
  • 链的顺序符合设计。
  • 健康检查不被限流。
  • 安全头与限流头在响应中可见。

注意事项

  • 中间件链为每请求增加延迟,并可能使响应被改动的位置不易排查。
  • 各提供方的标签语法差异使链在跨提供方复用时需借助 CRD。

适用范围

本条目围绕「组合 Traefik 中间件实现纵深防御」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。

http:
  middlewares:
    chain1:
      chain:
        middlewares: [secure-headers, rate-limit, cb]
  services:
    app:
      loadBalancer:
        servers: [{ url: "http://127.0.0.1:3000" }]