Skip to content

Traefik Buffering 中间件文档

Buffering(缓冲)

buffering 中间件限制可以转发到服务的请求大小。

通过 buffering,Traefik 将整个请求读入内存(可能将大型请求缓冲到磁盘),并拒绝超过指定大小限制的请求。

这可以帮助服务避免接收大量数据(例如 multipart/form-data),并能最小化向服务发送数据所花费的时间。

配置示例

YAML 格式:

yaml
# 将最大请求体设置为 2MB
http:
  middlewares:
    limit:
      buffering:
        maxRequestBodyBytes: 2000000

TOML 格式:

toml
# 将最大请求体设置为 2MB
[http.middlewares]
  [http.middlewares.limit.buffering]
    maxRequestBodyBytes = 2000000

Labels 格式:

yaml
# 将最大请求体设置为 2MB
labels:
  - "traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=2000000"

Kubernetes 格式:

yaml
# 将最大请求体设置为 2MB
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: limit
spec:
  buffering:
    maxRequestBodyBytes: 2000000

配置选项

字段描述默认值必填
maxRequestBodyBytes允许的最大请求体大小。超过限制将返回 413 响应。-1(无限制)
memRequestBodyBytes在开始将请求缓冲到磁盘前,内存中允许的最大请求体大小。1048576
maxResponseBodyBytes允许的最大响应体大小。-1(无限制)
memResponseBodyBytes在开始将响应缓冲到磁盘前,内存中允许的最大响应体大小。1048576
retryExpression在响应过程中遇到错误时,按表达式触发重试。IsNetworkError() && Attempts() <= 2

提示

maxRequestBodyBytes 是最常用的配置项。其他配置项用于高级场景,例如处理非常大的请求/响应或网络抖动时重试。


在生产环境使用 Traefik OSS?

如果你在工作中使用 Traefik,可以考虑为其添加企业级 API 网关能力或获取 Traefik OSS 的商业支持。

基于 MIT 协议发布