Skip to main content

Buffering

The buffering middleware limits the size of requests that can be forwarded to services.

With buffering, Traefik Hub API Gateway reads the entire request into memory (possibly buffering large requests into disk), and rejects requests that are over a specified size limit.

This can help services avoid large amounts of data (multipart/form-data for example), and can minimize the time spent sending data to a Service.


Configuration Example

apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: buffering
namespace: apps
spec:
buffering:
maxRequestBodyBytes: 2000000
memRequestBodyBytes: 1000
maxResponseBodyBytes: 3000000
retryExpression: "IsNetworkError() && Attempts() < 2"

Configuration Options

FieldDescriptionDefaultRequired
maxRequestBodyBytesMaximum allowed body size for the request (in bytes).
If the request exceeds the allowed size, it is not forwarded to the Service, and the client gets a 413 (Request Entity Too Large) response.
0No
memRequestBodyBytesThreshold (in bytes) from which the request will be buffered on disk instead of in memory with the memRequestBodyBytes option.1048576No
maxResponseBodyBytesMaximum allowed response size from the Service (in bytes).
If the response exceeds the allowed size, it is not forwarded to the client. The client gets a 500 (Internal Server Error) response instead.
0No
memResponseBodyBytesThreshold (in bytes) from which the response will be buffered on disk instead of in memory with the memResponseBodyBytes option.1048576No
retryExpressionReplay the request using retryExpression.
More information here
""No

retryExpression

The retry expression is defined as a logical combination of the functions below with the operators AND (&&) and OR (||).
At least one function is required:

  • Attempts() number of attempts (the first one counts).
  • ResponseCode() response code of the Service.
  • IsNetworkError() whether the response code is related to networking error.