跳到正文
Træfɪk

Buffering

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

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

这可以帮助服务避免处理大量数据(例如 multipart/form-data),并尽量减少向服务发送数据所花费的时间。

提示

挂载此中间件后,Traefik 会先缓冲请求体,再转发请求。 因此,Traefik 可以使用固定的 Content-Length 向上游发送请求,而不必以流式方式发送原始分块请求体。

配置示例

# Sets the maximum request body to 2MB
http:
  middlewares:
    limit:
      buffering:
        maxRequestBodyBytes: 2000000
# Sets the maximum request body to 2MB
[http.middlewares]
  [http.middlewares.limit.buffering]
    maxRequestBodyBytes = 2000000
# Sets the maximum request body to 2MB
labels:
  - "traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=2000000"
// Sets the maximum request body to 2MB
{
  // ...
  "Tags": [
    "traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=2000000"
  ]
}
# Sets the maximum request body to 2MB
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: limit
spec:
  buffering:
    maxRequestBodyBytes: 2000000

配置选项

字段 说明 默认值 必填
maxRequestBodyBytes 请求体允许的最大大小,单位为字节。
如果请求超过允许的大小,就不会转发给服务,客户端会收到 413(请求实体过大)响应。
0 表示不限制。
0 否
memRequestBodyBytes 请求由内存缓冲切换为磁盘缓冲的阈值,单位为字节。 1048576 否
maxResponseBodyBytes 服务响应允许的最大大小,单位为字节。
如果响应超过允许的大小,就不会转发给客户端,客户端会改为收到 500(服务器内部错误)响应。
0 表示不限制。
0 否
memResponseBodyBytes 响应由内存缓冲切换为磁盘缓冲的阈值,单位为字节。 1048576 否
retryExpression 使用 retryExpression 重放请求。
更多信息见此处。
"" 否

retryExpression 重试表达式

重试表达式通过 AND(&&)和 OR(||)运算符,对以下函数进行逻辑组合。
至少需要一个函数:

  • Attempts():尝试次数(包括第一次)。
  • ResponseCode():服务的响应状态码。
  • IsNetworkError():响应状态码是否与网络错误有关。

版权所有 © 头文件软件工作室

文档由 HeadFile Studio 翻译。

Traefik v3.7 中文快照 · 原文版权归 Traefik Labs 及贡献者所有 · MIT 许可证