Saltar a contenido

zstd: Módulo NGINX para la compresión Zstandard

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

  • RedHat Enterprise Linux 7, 8, 9 y 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 y 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

Habilita el módulo añadiendo lo siguiente en la parte superior 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 describe nginx-module-zstd v0.1.1 lanzado el 23 de octubre de 2023.


## especificar el diccionario
zstd_dict_file /path/to/dict;

server {
    listen 127.0.0.1:8080;
    server_name localhost;

    location / {
        # habilitar compresión zstd
        zstd on;
        zstd_min_length 256; # no menos de 256 bytes
        zstd_comp_level 3; # establecer el nivel en 3

        proxy_pass http://foo.com;
    }
}

server {
    listen 127.0.0.1:8081;
    server_name localhost;

    location / {
        zstd_static on;
        root html;
    }
}

Directivas

ngx_http_zstd_filter_module

El módulo ngx_http_zstd_filter_module es un filtro que comprime las respuestas utilizando el método "zstd". Esto a menudo ayuda a reducir el tamaño de los datos transmitidos a la mitad o incluso más.

zstd_dict_file

Sintaxis: zstd_dict_file /path/to/dict;
Predeterminado: -
Contexto: http

Especifica el diccionario externo.

ADVERTENCIA: ¡Ten cuidado! El registro de codificación de contenido solo especifica un medio para señalar el uso del formato zstd, y no especifica adicionalmente ningún mecanismo para publicitar/negociar/sincronizar el uso de un diccionario específico entre el cliente y el servidor. Usa zstd_dict_file solo si puedes asegurar que ambos extremos (servidor y cliente) son capaces de usar el mismo diccionario (por ejemplo, publicitando con un encabezado HTTP). Consulta https://github.com/tokers/zstd-nginx-module/issues/2 para más detalles.

zstd

Sintaxis: zstd on | off;
Predeterminado: zstd off;
Contexto: http, server, location, if in location

Habilita o deshabilita la compresión zstd para la respuesta.

zstd_comp_level

Sintaxis: zstd_comp_level level;
Predeterminado: zstd_comp_level 1;
Contexto: http, server, location

Establece un nivel de compresión zstd para una respuesta. Los valores aceptables están en el rango de 1 a ZSTD_maxCLevel().

zstd_min_length

Sintaxis: zstd_min_length length;
Predeterminado: zstd_min_length 20;
Contexto: http, server, location

Establece la longitud mínima de una respuesta que será comprimida por zstd. La longitud se determina únicamente a partir del campo de encabezado de respuesta "Content-Length".

zstd_types

Sintaxis: zstd_types mime-type ...;
Predeterminado: zstd_types text/html;
Contexto: http, server, location

Habilita zstd de respuestas para los tipos MIME especificados además de "text/html". El valor especial "*" coincide con cualquier tipo MIME.

zstd_buffers

Sintaxis: zstd_buffers number size;
Predeterminado: zstd_buffers 32 4k | 16 8k;
Contexto: http, server, location

Establece el número y tamaño de los búferes utilizados para comprimir una respuesta. Por defecto, el tamaño del búfer es igual a una página de memoria. Esto es 4K o 8K, dependiendo de la plataforma.

ngx_http_zstd_static_module

El módulo ngx_http_zstd_static_module permite enviar archivos precomprimidos con la extensión de nombre de archivo ".zst" en lugar de archivos regulares.

zstd_static

Sintaxis: zstd_static on | off | always;
Predeterminado: zstd_static off;
Contexto: http, server, location

Habilita ("on") o deshabilita ("off") la verificación de la existencia de archivos precomprimidos. También se tienen en cuenta las siguientes directivas: gzip_vary.

Con el valor "always", el archivo "zstd" se utiliza en todos los casos, sin verificar si el cliente lo admite.

Variables

ngx_http_zstd_filter_module

$zstd_ratio

Relación de compresión lograda, calculada como la relación entre los tamaños de respuesta original y comprimida.

GitHub

Puedes encontrar consejos adicionales de configuración y documentación para este módulo en el repositorio de GitHub para nginx-module-zstd.