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():响应状态码是否与网络错误有关。