Traefik Buffering 中间件文档
Buffering(缓冲)
buffering 中间件限制可以转发到服务的请求大小。
通过 buffering,Traefik 将整个请求读入内存(可能将大型请求缓冲到磁盘),并拒绝超过指定大小限制的请求。
这可以帮助服务避免接收大量数据(例如 multipart/form-data),并能最小化向服务发送数据所花费的时间。
配置示例
YAML 格式:
yaml
# 将最大请求体设置为 2MB
http:
middlewares:
limit:
buffering:
maxRequestBodyBytes: 2000000TOML 格式:
toml
# 将最大请求体设置为 2MB
[http.middlewares]
[http.middlewares.limit.buffering]
maxRequestBodyBytes = 2000000Labels 格式:
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 的商业支持。