Site icon RDR-IT

Nginx : compiler un module externe

Dans ce tutoriel, je vais vous expliquer comment compiler un module externe pour Nginx afin d’ajouter des fonctionnalités supplémentaire au serveur Web.

Pour illustrer ce tutoriel, je vais prendre comme exemple le module http-headers-more-filter qui permet modifier les entêtes (hearders) envoyés par les requêtes HTTP.

Avant de commencer, assurer avoir d’avoir le compilateur d’installer :

sudo apt install gcc

La première étape consiste à vérifier si le module est présent, entrer la commande ci-dessous pour vérifier.

nginx -V 2>&1 | grep --color 'http-headers-more-filter'

Si la commande ne retourne rien, le module n’est pas présent.

Pour compiler le module, nous allons avoir besoin des sources de Nginx, récupérer la version installé à l’aide de la commande :

nginx-V

Comme on peut le voir sur la capture ci-dessous, Nginx 1.21.0 est installé.

Télécharger les sources de la version Nginx installé, dans l’exemple je vais utiliser la commande suivante :

wget https://nginx.org/download/nginx-1.21.0.tar.gz

Décompresser l’archive à l’aide de la commande tar :

tar -xzvf nginx-1.21.0.tar.gz

A l’aide de la commande ll, on peut voir que l’archive est décompressée.

Il faut maintenant télécharger les sources du module. les sources du module hearders-more sont disponibles ici : openresty/headers-more-nginx-module: Set, add, and clear arbitrary output headers in NGINX http servers (github.com).

On clone le dépôt à l’aide de la commande git :

git clone https://github.com/openresty/headers-more-nginx-module.git

Lister ensuite pour vérifier que le dépôt est cloné.

En fonction des modules que vous souhaitez des dépendances peuvent être nécessaire, ici on a besoin d’installer les paquets suivants :

sudo apt install libpcre3-dev zlib1g

Aller dans le dossier qui contient les sources de Nginx :

cd nginx-1.21.0

Maintenant on va configurer la compilation du module à l’aide la commande ci-dessous :

./configure --add-dynamic-module=../headers-more-nginx-module

Adapter le chemin du paramètre –add-dynamic-module= que vous souhaitez compiler.

Une fois la compilation configurer, compiler le avec la commande :

make modules

Le module est compilé, le fichier .so du module se trouve dans le dossier objs du dossier source de Nginx.

Il faut maintenant déplacer le fichier .so dans le dans le dossier /usr/share/nginx/modules/ . Une fois le fichier déplacer il faut indiquer à Nginx de charger le module.

Ouvrir le fichier nginx.conf et ajouter l’instruction load_module.

load_module modules/ngx_http_header_more_filter_modules.so

Redémarrer ensuite Nginx

sudo systemctl restart nginx

Vous savez maintenant comment compiler un module externe pour Nginx.

Quitter la version mobile