Compression and Decompression Nginx
Общие сведения
Nginx поддерживает сжатие и распаковку ответов для клиентов, которые не поддерживают сжатие. Сжатие во время выполнения может привести к потерям производительности, nginx не выполняет сжатие повторно.
Включение сжатия:
gzip on
Nginx по умолчанию поддерживает сжатие text/html, чтобы включить дополнительные типы:
gzip_types text/plain application/xml;
Минимальный размер ответа для сжатия 20 байт, чтобы изменить этот размер:
gzip_min_length 1000;
Ответы поступающие с прокси-сервера, по умолчанию не сжимаются. Разумно сжимать ответы от прокси сервера, которые не кэшируются. Для этой цели директива gzip_proxied имеет параметры, которые предписывают NGINX проверять поле заголовка Cache-Control в ответе и сжимать ответ, если значение no-cache, no-store, or private.
gzip_proxied no-cache no-store private expired auth;
В целом, конфигурация сервера может выглядеть следующим образом:
server {
gzip on;
gzip_types text/plain application/xml;
gzip_proxied no-cache no-store private expired auth;
gzip_min_length 1000;
...
}
Некоторые клиенты сервера не поддерживают ответы с помощью метода кодирования от nginx, в то же время это выгодно другим клиентам. Чтобы угодить обоим типам клиента nginx может распаковывать данные на лету для клиентов которые не поддерживают функцию декодирования.
Чтобы включить функцию декодирования на лету:
location /storage/ {
gunzip on;
...
}