Pular para conteúdo

zstd: Módulo NGINX para compressão Zstandard

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

  • RedHat Enterprise Linux 7, 8, 9 e 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 e Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-zstd
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-zstd

Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:

load_module modules/ngx_http_zstd_filter_module.so;
load_module modules/ngx_http_zstd_static_module.so;

Este documento descreve o nginx-module-zstd v0.1.1 lançado em 23 de outubro de 2023.


## especifique o dicionário
zstd_dict_file /path/to/dict;

server {
    listen 127.0.0.1:8080;
    server_name localhost;

    location / {
        # habilitar compressão zstd
        zstd on;
        zstd_min_length 256; # não menos que 256 bytes
        zstd_comp_level 3; # definir o nível para 3

        proxy_pass http://foo.com;
    }
}

server {
    listen 127.0.0.1:8081;
    server_name localhost;

    location / {
        zstd_static on;
        root html;
    }
}

Diretivas

ngx_http_zstd_filter_module

O módulo ngx_http_zstd_filter_module é um filtro que comprime respostas usando o método "zstd". Isso geralmente ajuda a reduzir o tamanho dos dados transmitidos pela metade ou até mais.

zstd_dict_file

Sintaxe: zstd_dict_file /path/to/dict;
Padrão: -
Contexto: http

Especifica o dicionário externo.

AVISO: Cuidado! O registro de codificação de conteúdo apenas especifica um meio de sinalizar o uso do formato zstd e não especifica adicionalmente nenhum mecanismo para anunciar/negociar/sincronizar o uso de um dicionário específico entre cliente e servidor. Use o zstd_dict_file apenas se você puder garantir que ambas as extremidades (servidor e cliente) são capazes de usar o mesmo dicionário (por exemplo, anunciar com um cabeçalho HTTP). Veja https://github.com/tokers/zstd-nginx-module/issues/2 para mais detalhes.

zstd

Sintaxe: zstd on | off;
Padrão: zstd off;
Contexto: http, server, location, if in location

Habilita ou desabilita a compressão zstd para a resposta.

zstd_comp_level

Sintaxe: zstd_comp_level level;
Padrão: zstd_comp_level 1;
Contexto: http, server, location

Define um nível de compressão zstd para uma resposta. Os valores aceitáveis estão na faixa de 1 a ZSTD_maxCLevel().

zstd_min_length

Sintaxe: zstd_min_length length;
Padrão: zstd_min_length 20;
Contexto: http, server, location

Define o comprimento mínimo de uma resposta que será comprimida pelo zstd. O comprimento é determinado apenas pelo campo do cabeçalho de resposta "Content-Length".

zstd_types

Sintaxe: zstd_types mime-type ...;
Padrão: zstd_types text/html;
Contexto: http, server, location

Habilita zstd para respostas dos tipos MIME especificados além de "text/html". O valor especial "*" corresponde a qualquer tipo MIME.

zstd_buffers

Sintaxe: zstd_buffers number size;
Padrão: zstd_buffers 32 4k | 16 8k;
Contexto: http, server, location

Define o número e o tamanho dos buffers usados para comprimir uma resposta. Por padrão, o tamanho do buffer é igual a uma página de memória. Isso é 4K ou 8K, dependendo da plataforma.

ngx_http_zstd_static_module

O módulo ngx_http_zstd_static_module permite enviar arquivos pré-comprimidos com a extensão de nome de arquivo ".zst" em vez de arquivos regulares.

zstd_static

Sintaxe: zstd_static on | off | always;
Padrão: zstd_static off;
Contexto: http, server, location

Habilita ("on") ou desabilita ("off") a verificação da existência de arquivos pré-comprimidos. As seguintes diretivas também são levadas em conta: gzip_vary.

Com o valor "always", o arquivo "zstd" é usado em todos os casos, sem verificar se o cliente o suporta.

Variáveis

ngx_http_zstd_filter_module

$zstd_ratio

Razão de compressão alcançada, calculada como a razão entre os tamanhos da resposta original e comprimida.

GitHub

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-zstd.