[v10.0.x] api: ignore /api/gnet proxy when gzipping responses (#71521)

api: ignore /api/gnet proxy when gzipping responses (#71437)

This PR adds /api/gnet to the list of ignored paths in the gzip middleware.

Without this, when gzip is enabled (`server.enable_gzip = true`), responses
from the gnet proxy are double compressed: once by grafana.com and once by
Grafana itself. With this change we only do one round of compression for these
endpoints.

To test this out, try a request like this with `server.enable_gzip = true`
(after setting `GCOM_TOKEN` to a valid grafana.com token; you may need to
change the 'bsull' slug, too):

    curl -v --user admin:admin \
        -H "X-Api-Key: $GCOM_TOKEN" \
        -H 'Accept-Encoding: gzip' \
        localhost:3000/api/gnet/instances/bsull/provisioned-plugins/grafana-ml-app | gzip -d

Note that there are two Content-Encoding: gzip headers before this PR, and
the output is still compressed even after the `gzip -d`. After this PR things
look as expected.

(cherry picked from commit 51c94bccd7)

Co-authored-by: Ben Sully <ben.sully@grafana.com>
This commit is contained in:
grafana-delivery-bot[bot]
2023-07-13 08:36:20 +01:00
committed by GitHub
co-authored by Ben Sully
parent 7fdfc4d609
commit 1f058705be
+1
View File
@@ -45,6 +45,7 @@ var gzipIgnoredPaths = []matcher{
prefix("/api/datasources"),
prefix("/api/plugins"),
prefix("/api/plugin-proxy/"),
prefix("/api/gnet/"), // Already gzipped by grafana.com.
prefix("/metrics"),
prefix("/api/live/ws"), // WebSocket does not support gzip compression.
prefix("/api/live/push"), // WebSocket does not support gzip compression.