Aller au contenu

zstd: module NGINX pour la compression Zstandard

Installation

Vous pouvez installer ce module dans n'importe quelle distribution basée sur RHEL, y compris, mais sans s'y limiter :

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

Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :

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

Ce document décrit nginx-module-zstd v0.1.1 publié le 23 octobre 2023.


## spécifier le dictionnaire
zstd_dict_file /path/to/dict;

server {
    listen 127.0.0.1:8080;
    server_name localhost;

    location / {
        # activer la compression zstd
        zstd on;
        zstd_min_length 256; # pas moins de 256 octets
        zstd_comp_level 3; # définir le niveau à 3

        proxy_pass http://foo.com;
    }
}

server {
    listen 127.0.0.1:8081;
    server_name localhost;

    location / {
        zstd_static on;
        root html;
    }
}

Directives

ngx_http_zstd_filter_module

Le module ngx_http_zstd_filter_module est un filtre qui compresse les réponses en utilisant la méthode "zstd". Cela aide souvent à réduire la taille des données transmises de moitié, voire plus.

zstd_dict_file

Syntaxe : zstd_dict_file /path/to/dict;
Par défaut : -
Contexte : http

Spécifie le dictionnaire externe.

AVERTISSEMENT : Faites attention ! L'enregistrement de codage de contenu ne spécifie qu'un moyen de signaler l'utilisation du format zstd, et ne spécifie pas de mécanisme pour annoncer/négocier/synchroniser l'utilisation d'un dictionnaire spécifique entre le client et le serveur. Utilisez zstd_dict_file uniquement si vous pouvez garantir que les deux extrémités (serveur et client) sont capables d'utiliser le même dictionnaire (par exemple, annoncer avec un en-tête HTTP). Voir https://github.com/tokers/zstd-nginx-module/issues/2 pour les détails.

zstd

Syntaxe : zstd on | off;
Par défaut : zstd off;
Contexte : http, server, location, if in location

Active ou désactive la compression zstd pour la réponse.

zstd_comp_level

Syntaxe : zstd_comp_level level;
Par défaut : zstd_comp_level 1;
Contexte : http, server, location

Définit un niveau de compression zstd pour une réponse. Les valeurs acceptables sont comprises entre 1 et ZSTD_maxCLevel().

zstd_min_length

Syntaxe : zstd_min_length length;
Par défaut : zstd_min_length 20;
Contexte : http, server, location

Définit la longueur minimale d'une réponse qui sera compressée par zstd. La longueur est déterminée uniquement à partir du champ d'en-tête de réponse "Content-Length".

zstd_types

Syntaxe : zstd_types mime-type ...;
Par défaut : zstd_types text/html;
Contexte : http, server, location

Active zstd pour les réponses des types MIME spécifiés en plus de "text/html". La valeur spéciale "*" correspond à tout type MIME.

zstd_buffers

Syntaxe : zstd_buffers number size;
Par défaut : zstd_buffers 32 4k | 16 8k;
Contexte : http, server, location

Définit le nombre et la taille des tampons utilisés pour compresser une réponse. Par défaut, la taille du tampon est égale à une page mémoire. Cela est soit 4K soit 8K, selon la plateforme.

ngx_http_zstd_static_module

Le module ngx_http_zstd_static_module permet d'envoyer des fichiers précompressés avec l'extension de nom de fichier ".zst" au lieu de fichiers réguliers.

zstd_static

Syntaxe : zstd_static on | off | always;
Par défaut : zstd_static off;
Contexte : http, server, location

Active ("on") ou désactive ("off") la vérification de l'existence de fichiers précompressés. Les directives suivantes sont également prises en compte : gzip_vary.

Avec la valeur "always", le fichier "zsted" est utilisé dans tous les cas, sans vérifier si le client le prend en charge.

Variables

ngx_http_zstd_filter_module

$zstd_ratio

Ratio de compression atteint, calculé comme le rapport entre les tailles de réponse originale et compressée.

GitHub

Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-zstd.