traefik/docs/content/middlewares/http/compress.md
2023-03-20 15:38:08 +01:00

4.3 KiB

title description
Traefik Compress Documentation Traefik Proxy's HTTP middleware lets you compress responses before sending them to the client. Read the technical documentation.

Compress

Compress Responses before Sending them to the Client {: .subtitle }

Compress

The Compress middleware uses gzip compression.

Configuration Examples

# Enable gzip compression
labels:
  - "traefik.http.middlewares.test-compress.compress=true"
# Enable gzip compression
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: test-compress
spec:
  compress: {}
# Enable gzip compression
- "traefik.http.middlewares.test-compress.compress=true"
"labels": {
  "traefik.http.middlewares.test-compress.compress": "true"
}
# Enable gzip compression
labels:
  - "traefik.http.middlewares.test-compress.compress=true"
# Enable gzip compression
http:
  middlewares:
    test-compress:
      compress: {}
# Enable gzip compression
[http.middlewares]
  [http.middlewares.test-compress.compress]

!!! info

Responses are compressed when the following criteria are all met:

* The response body is larger than the configured minimum amount of bytes (default is `1024`).
* The `Accept-Encoding` request header contains `gzip`.
* The response is not already compressed, i.e. the `Content-Encoding` response header is not already set.

If the `Content-Type` header is not defined, or empty, the compress middleware will automatically [detect](https://mimesniff.spec.whatwg.org/) a content type.
It will also set the `Content-Type` header according to the detected MIME type.

Configuration Options

excludedContentTypes

excludedContentTypes specifies a list of content types to compare the Content-Type header of the incoming requests and responses before compressing.

The responses with content types defined in excludedContentTypes are not compressed.

Content types are compared in a case-insensitive, whitespace-ignored manner.

labels:
  - "traefik.http.middlewares.test-compress.compress.excludedcontenttypes=text/event-stream"
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: test-compress
spec:
  compress:
    excludedContentTypes:
      - text/event-stream
- "traefik.http.middlewares.test-compress.compress.excludedcontenttypes=text/event-stream"
"labels": {
  "traefik.http.middlewares.test-compress.compress.excludedcontenttypes": "text/event-stream"
}
labels:
  - "traefik.http.middlewares.test-compress.compress.excludedcontenttypes=text/event-stream"
http:
  middlewares:
    test-compress:
      compress:
        excludedContentTypes:
          - text/event-stream
[http.middlewares]
  [http.middlewares.test-compress.compress]
    excludedContentTypes = ["text/event-stream"]

minResponseBodyBytes

minResponseBodyBytes specifies the minimum amount of bytes a response body must have to be compressed.

The default value is 1024, which should be a reasonable value for most cases.

Responses smaller than the specified values will not be compressed.

labels:
  - "traefik.http.middlewares.test-compress.compress.minresponsebodybytes=1200"
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: test-compress
spec:
  compress:
    minResponseBodyBytes: 1200
- "traefik.http.middlewares.test-compress.compress.minresponsebodybytes=1200"
"labels": {
  "traefik.http.middlewares.test-compress.compress.minresponsebodybytes": 1200
}
labels:
  - "traefik.http.middlewares.test-compress.compress.minresponsebodybytes=1200"
http:
  middlewares:
    test-compress:
      compress:
        minResponseBodyBytes: 1200
[http.middlewares]
  [http.middlewares.test-compress.compress]
    minResponseBodyBytes = 1200