<!-- review: finished -->

<a id="external-zstd"></a>

# Zstandard (zstd)

El módulo añade soporte para compresión Zstandard de respuestas, tanto dinámica (al vuelo) como estática (archivos precomprimidos). Comparado con gzip, zstd ofrece mayor velocidad de compresión y descompresión con ratios de compresión comparables o mejores.

El módulo consta de dos componentes:

- **http_zstd_filter** — para comprimir respuestas dinámicamente;
- **http_zstd_static** — para servir archivos precomprimidos.

<a id="installation-33"></a>

## Instalación

Para [instalar](https://es.angie.software//angie/docs/installation/index.md#install-packages) el módulo, utiliza uno de los siguientes paquetes:

- Angie: `angie-module-zstd`
- Angie PRO: `angie-pro-module-zstd`

<a id="module-loading"></a>

## Carga del Módulo

Habilita los módulos en el contexto `main{}`:

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

<a id="example-configuration-2"></a>

## Configuración de Ejemplo

```nginx
server {
    listen 80 default_server;

    zstd_types text/plain text/css;
    zstd_min_length 256;         # Longitud mínima de respuesta para compresión
    zstd_comp_level 3;           # Nivel de compresión (1 a 22)

    # Compresión dinámica de archivos
    location / {
        zstd on;
        root /usr/share/angie/html;
    }

    # Compresión dinámica de respuestas de backend
    location /bk/ {
        zstd on;
        proxy_pass http://127.0.0.1:8081/;
    }

    # Uso de archivos precomprimidos .zst
    location /static/ {
        zstd_static on;
        root /usr/share/angie;
    }
}

server {
    listen 8081;
    location / {
        root /usr/share/angie/html;
        index index.html;
    }
}
```

<a id="how-it-works"></a>

## Cómo Funciona

Puedes combinar compresión dinámica (`zstd on`) y estática (`zstd_static on`). En este caso, el servidor primero buscará un archivo precomprimido `.zst`. Si no existe, comprimirá la respuesta dinámicamente.

La compresión solo se realiza cuando la cabecera `Accept-Encoding` incluye `zstd`, por ejemplo:

```none
Accept-Encoding: gzip, zstd
```

Si se aplica compresión o se encuentra un archivo precomprimido, se añade la siguiente cabecera de respuesta:

```none
Content-Encoding: zstd
```

<a id="more-information"></a>

## Más Información

La documentación completa y el código fuente están disponibles en:
[https://github.com/tokers/zstd-nginx-module](https://github.com/tokers/zstd-nginx-module)
