Compressor (proto)
This extension has the qualified name envoy.filters.http.compressor
Note
This extension is intended to be robust against untrusted downstream traffic. It assumes that the upstream is trusted.
Tip
This extension extends and can be used with the following extension category:
This extension must be configured with one of the following type URLs:
Compressor configuration overview.
extensions.filters.http.compressor.v3.Compressor
[extensions.filters.http.compressor.v3.Compressor proto]
{
"content_length": {...},
"content_type": [],
"disable_on_etag_header": ...,
"remove_accept_encoding_header": ...,
"runtime_enabled": {...},
"compressor_library": {...},
"request_direction_config": {...},
"response_direction_config": {...},
"choose_first": ...
}
- content_length
(UInt32Value) Minimum response length, in bytes, which will trigger compression. The default value is 30.
- content_type
(repeated string) Set of strings that allows specifying which mime-types yield compression; e.g., application/json, text/html, etc. When this field is not defined, compression will be applied to the following mime-types: “application/javascript”, “application/json”, “application/xhtml+xml”, “image/svg+xml”, “text/css”, “text/html”, “text/plain”, “text/xml” and their synonyms.
- disable_on_etag_header
(bool) If true, disables compression when the response contains an etag header. When it is false, the filter will preserve weak etags and remove the ones that require strong validation.
- remove_accept_encoding_header
(bool) If true, removes accept-encoding from the request headers before dispatching it to the upstream so that responses do not get compressed before reaching the filter.
Attention
To avoid interfering with other compression filters in the same chain use this option in the filter closest to the upstream.
- runtime_enabled
(config.core.v3.RuntimeFeatureFlag) Runtime flag that controls whether the filter is enabled or not. If set to false, the filter will operate as a pass-through filter, unless overridden by CompressorPerRoute. If not specified, defaults to enabled.
- compressor_library
(config.core.v3.TypedExtensionConfig, REQUIRED) A compressor library to use for compression. Currently only envoy.compression.gzip.compressor is included in Envoy.
Tip
This extension category has the following known extensions:
- request_direction_config
(extensions.filters.http.compressor.v3.Compressor.RequestDirectionConfig) Configuration for request compression. Compression is disabled by default if left empty.
- response_direction_config
(extensions.filters.http.compressor.v3.Compressor.ResponseDirectionConfig) Configuration for response compression. Compression is enabled by default if left empty.
Attention
If the field is not empty then the duplicate deprecated fields of the
Compressor
message, such ascontent_length
,content_type
,disable_on_etag_header
,remove_accept_encoding_header
andruntime_enabled
, are ignored.Also all the statistics related to response compression will be rooted in
<stat_prefix>.compressor.<compressor_library.name>.<compressor_library_stat_prefix>.response.*
instead of<stat_prefix>.compressor.<compressor_library.name>.<compressor_library_stat_prefix>.*
.
- choose_first
(bool) If true, chooses this compressor first to do compression when the q-values in Accept-Encoding are same. The last compressor which enables choose_first will be chosen if multiple compressor filters in the chain have choose_first as true.
extensions.filters.http.compressor.v3.Compressor.CommonDirectionConfig
[extensions.filters.http.compressor.v3.Compressor.CommonDirectionConfig proto]
{
"enabled": {...},
"min_content_length": {...},
"content_type": []
}
- enabled
(config.core.v3.RuntimeFeatureFlag) Runtime flag that controls whether compression is enabled or not for the direction this common config is put in. If set to false, the filter will operate as a pass-through filter in the chosen direction, unless overridden by CompressorPerRoute. If the field is omitted, the filter will be enabled.
- min_content_length
(UInt32Value) Minimum value of Content-Length header of request or response messages (depending on the direction this common config is put in), in bytes, which will trigger compression. The default value is 30.
- content_type
(repeated string) Set of strings that allows specifying which mime-types yield compression; e.g., application/json, text/html, etc. When this field is not defined, compression will be applied to the following mime-types: “application/javascript”, “application/json”, “application/xhtml+xml”, “image/svg+xml”, “text/css”, “text/html”, “text/plain”, “text/xml” and their synonyms.
extensions.filters.http.compressor.v3.Compressor.RequestDirectionConfig
[extensions.filters.http.compressor.v3.Compressor.RequestDirectionConfig proto]
Configuration for filter behavior on the request direction.
{
"common_config": {...}
}
extensions.filters.http.compressor.v3.Compressor.ResponseDirectionConfig
[extensions.filters.http.compressor.v3.Compressor.ResponseDirectionConfig proto]
Configuration for filter behavior on the response direction.
{
"common_config": {...},
"disable_on_etag_header": ...,
"remove_accept_encoding_header": ...
}
- disable_on_etag_header
(bool) If true, disables compression when the response contains an etag header. When it is false, the filter will preserve weak etags and remove the ones that require strong validation.
- remove_accept_encoding_header
(bool) If true, removes accept-encoding from the request headers before dispatching it to the upstream so that responses do not get compressed before reaching the filter.
Attention
To avoid interfering with other compression filters in the same chain use this option in the filter closest to the upstream.
extensions.filters.http.compressor.v3.ResponseDirectionOverrides
[extensions.filters.http.compressor.v3.ResponseDirectionOverrides proto]
Per-route overrides of ResponseDirectionConfig. Anything added here should be optional, to allow overriding arbitrary subsets of configuration. Omitted fields must have no affect.
extensions.filters.http.compressor.v3.CompressorOverrides
[extensions.filters.http.compressor.v3.CompressorOverrides proto]
Per-route overrides. As per-route overrides are needed, they should be added here, mirroring the structure of Compressor. All fields should be optional, to allow overriding arbitrary subsets of configuration.
{
"response_direction_config": {...}
}
- response_direction_config
(extensions.filters.http.compressor.v3.ResponseDirectionOverrides) If present, response compression is enabled.
extensions.filters.http.compressor.v3.CompressorPerRoute
[extensions.filters.http.compressor.v3.CompressorPerRoute proto]
{
"disabled": ...,
"overrides": {...}
}
- disabled
(bool) If set, the filter will operate as a pass-through filter. Overrides Compressor.runtime_enabled and CommonDirectionConfig.enabled.
- overrides
(extensions.filters.http.compressor.v3.CompressorOverrides) Per-route overrides. Fields set here will override corresponding fields in Compressor.