Skip to content

Commit

Permalink
enable automatic gzip compression of responses
Browse files Browse the repository at this point in the history
This unconditionally enables envoys gzip http_filter[1], which will
compress responses if the request indicates it can handle it (via a
"accept-encoding: gzip" request header).

I've enabled it with no options, which means it gets the defaults, as
listed at [2]. In envoy 1.7.0, they're:

    {
      "memory_level": 5,
      "content_length": 30",
      "compression_level": "DEFAULT",
      "compression_strategy": "DEFAULT",
      "content_type": [“application/javascript”, “application/json”, “application/xhtml+xml”, “image/svg+xml”, “text/css”, “text/html”, “text/plain”, “text/xml”],
      "disable_on_etag_header": false,
      "remove_accept_encoding_header": false,
      "window_bits": 12
    }

Note the list of content types that will be compressed. It's possible
some users will want to customise this list, but for now I haven't
exposed that option.

Fixes #310

[1] https://www.envoyproxy.io/docs/envoy/latest/configuration/http_filters/gzip_filter
[2] https://www.envoyproxy.io/docs/envoy/latest/api-v2/config/filter/http/gzip/v2/gzip.proto

Signed-off-by: James Healy <james@yob.id.au>
  • Loading branch information
yob committed Oct 4, 2018
1 parent bc565b7 commit 7321a9a
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 0 deletions.
4 changes: 4 additions & 0 deletions internal/contour/listener.go
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ const (

router = "envoy.router"
grpcWeb = "envoy.grpc_web"
gzip = "envoy.gzip"
httpFilter = "envoy.http_connection_manager"
accessLog = "envoy.file_access_log"
)
Expand Down Expand Up @@ -295,6 +296,9 @@ func httpfilter(routename, accessLogPath string) listener.Filter {
}),
}),
"http_filters": lv(
st(map[string]*types.Value{
"name": sv(gzip),
}),
st(map[string]*types.Value{
"name": sv(grpcWeb),
}),
Expand Down
1 change: 1 addition & 0 deletions internal/e2e/lds_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1095,6 +1095,7 @@ func httpfilter(routename string) listener.Filter {
}},
UseRemoteAddress: &types.BoolValue{Value: true},
HttpFilters: []*envoy_config_v2_http_conn_mgr.HttpFilter{
{Name: "envoy.gzip"},
{Name: "envoy.grpc_web"},
{Name: "envoy.router"},
},
Expand Down

0 comments on commit 7321a9a

Please sign in to comment.