Skip to content

前面的几个例子中,我们自定义过 traefik 的全局配置。除了全局配置,还定义了一个 仅内网可访问的 ip白名单 中间件,在指定 应用路由 下使用这个中间件。

这两个用法,应该足够应对目前所有的需求了。试一下给自己凭空创造一个需求:按 某个 http 请求头 限流。

配置 traefik 中间件

首先翻一下 traefik 官网文档,找到 https://doc.traefik.io/traefik/middlewares/http/ratelimit/ 。从这个文档里,可以总结出来我们希望的配置示例。

yaml
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: test-ratelimit
  namespace: xxx
spec:
  rateLimit:
    sourceCriterion:
        requestHeaderName: token
    average: 100
    period: 1m
    burst: 200

按 请求头中的 token 字段分组,没有 token 字段的都归到同一个组下。每 1分钟 一个周期,限制平均 100 个请求。支持突发请求数量达到 200。

period 可以不配,默认是 1 秒。

sourceCriterion 可以不配,默认是按 ip。

配置 应用路由 注解

@see ip 白名单

traefik.ingress.kubernetes.io/router.middlewares    xxx-test-ratelimit@kubernetescrd

未实践

以上配置,只是理论,还没实践自测过。