<!-- review: finished -->

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

# Zstandard (zstd)

Модуль добавляет поддержку Zstandard-сжатия ответов, как динамического (на лету), так и статического (предварительно сжатые файлы). В отличие от gzip, zstd обеспечивает более высокую скорость сжатия и распаковки при сопоставимом или лучшем уровне сжатия.

Модуль состоит из двух компонентов:

- **http_zstd_filter** — для динамического сжатия ответов;
- **http_zstd_static** — для обработки предварительно сжатых файлов.

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

## Установка

Для [установки](https://angie.software//angie/docs/installation/index.md#install-packages) модуля используйте один из следующих пакетов:

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

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

## Загрузка модуля

Подключение модулей в контексте `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>

## Пример конфигурации

```nginx
server {
    listen 80 default_server;

    zstd_types text/plain text/css;
    zstd_min_length 256;         # Минимальная длина ответа для сжатия
    zstd_comp_level 3;           # Уровень сжатия (от 1 до 22)

    # Динамическое сжатие файлов
    location / {
        zstd on;
        root /usr/share/angie/html;
    }

    # Динамическое сжатие ответов от бэкенда
    location /bk/ {
        zstd on;
        proxy_pass http://127.0.0.1:8081/;
    }

    # Использование заранее сжатых файлов .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>

## Особенности работы

Допускается одновременное использование динамического (`zstd on`) и статического (`zstd_static on`) сжатия. В этом случае сервер сначала попытается найти предварительно сжатый файл с расширением `.zst`, а если не найдет — выполнит сжатие на лету.

Сжатие выполняется только при наличии заголовка `Accept-Encoding`, содержащего метод сжатия `zstd`, например:

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

При успешном сжатии или при обнаружении соответствующего файла модуль добавляет в ответ заголовок:

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

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

## Дополнительная информация

Подробная документация и исходный код доступны по ссылке:
[https://github.com/tokers/zstd-nginx-module](https://github.com/tokers/zstd-nginx-module)
