gzip

Summary

Name

The gzip plugin dynamically set the gzip behavior of Nginx.

This plugin requires APISIX to run on APISIX-OpenResty.

Attributes

NameTypeRequirementDefaultValidDescription
typesarray[string] or “optional[“text/html”]dynamically set the gzip_types directive, special value ““ matches any MIME type
min_lengthintegeroptional20>= 1dynamically set the gzip_min_length directive
comp_levelintegeroptional1[1, 9]dynamically set the gzip_comp_level directive
http_versionnumberoptional1.11.1, 1.0dynamically set the gzip_http_version directive
buffers.numberintegeroptional32>= 1dynamically set the gzip_buffers directive
buffers.sizeintegeroptional4096>= 1dynamically set the gzip_buffers directive
varybooleanoptionalfalsedynamically set the gzip_vary directive

How To Enable

Here’s an example, enable this plugin on the specified route:

  1. curl -i http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{ "uri": "/index.html", "plugins": { "gzip": { "buffers": { "number": 8 } } }, "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:1980": 1 } }}'

Test Plugin

Use curl to access:

  1. curl http://127.0.0.1:9080/index.html -i -H "Accept-Encoding: gzip"HTTP/1.1 404 Not FoundContent-Type: text/html; charset=utf-8Transfer-Encoding: chunkedConnection: keep-aliveDate: Wed, 21 Jul 2021 03:52:55 GMTServer: APISIX/2.7Content-Encoding: gzip
  2. Warning: Binary output can mess up your terminal. Use "--output -" to tellWarning: curl to output it to your terminal anyway, or consider "--outputWarning: <FILE>" to save to a file.

Disable Plugin

When you want to disable this plugin, it is very simple, you can delete the corresponding JSON configuration in the plugin configuration, no need to restart the service, it will take effect immediately:

  1. curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '{ "uri": "/index.html", "upstream": { "type": "roundrobin", "nodes": { "127.0.0.1:1980": 1 } }}'

This plugin has been disabled now. It works for other plugins.