ndk: Nginx Development Kit
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-ndk
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-ndk
Activez le module en ajoutant ce qui suit en haut de /etc/nginx/nginx.conf :
load_module modules/ndk_http_module.so;
Ce document décrit nginx-module-ndk v0.3.4 publié le 20 février 2025.
Le NDK est un module Nginx conçu pour étendre la fonctionnalité de base du excellent serveur web Nginx d'une manière qui peut servir de base à d'autres modules Nginx.
Il dispose de fonctions et de macros pour traiter des tâches génériques qui n'ont actuellement pas de code générique dans la distribution de base. Le NDK lui-même ajoute peu de fonctionnalités qui sont visibles du point de vue de l'utilisateur - il est juste conçu pour aider à réduire le code que les développeurs de modules Nginx doivent écrire.
Les développeurs de modules Nginx souhaitant utiliser l'une des fonctionnalités du NDK doivent spécifier que le NDK est une dépendance de leur module, et que les utilisateurs devront le compiler également lorsqu'ils compileront leurs propres modules. Ils devront également déclarer dans leurs propres modules quelles fonctionnalités du NDK ils souhaitent utiliser (expliqué ci-dessous).
Si vous n'êtes pas un développeur de module Nginx, alors la seule partie utile de ce projet sera la section 'utilisation pour les utilisateurs' ci-dessous.
Features
- fonctions conf_set supplémentaires pour les regex, valeurs complexes/script, chemins...
- macros pour simplifier des tâches comme la vérification des valeurs NULL lors de l'utilisation de ngx_array_push
- correctifs pour le code source principal
- le gestionnaire de bibliothèque externe générique ngx_auto_lib_core est inclus (voir le readme séparé)
Design
modulaire
Le kit lui-même est conçu de manière modulaire, de sorte que seul le code requis est compilé. Il est possible d'ajouter juste un seul module NDK, quelques-uns ou tous.
auto-généré & facilement extensible
Beaucoup des macros disponibles dans le NDK sont auto-générées à partir de fichiers de configuration simples. Cela rend la création de macros similaires pour votre propre code très simple - il s'agit généralement juste d'ajouter une ligne supplémentaire à un fichier de configuration et de relancer le script de construction.
Usage for users
Si un autre module Nginx que vous souhaitez utiliser spécifie que le NDK est une dépendance, vous devez faire ce qui suit :
- télécharger la source (https://github.com/simpl/ngx_devel_kit)
- décompresser la source (tar -xzf $name)
- compiler Nginx avec l'option supplémentaire suivante
--add-module=/path/to/ngx_devel_kit.
par exemple :
./configure --add-module=/path/to/ngx_devel_kit \
--add-module=/path/to/another/module
Usage for developers
Pour utiliser le NDK dans votre propre module, vous devez ajouter ce qui suit :
- ajoutez cette ligne à votre module
#include <ndk.h>
Remarque : puisque le NDK inclut les lignes suivantes
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>
vous pouvez remplacer celles-ci par l'inclusion unique ci-dessus. 2. ajoutez la ligne suivante dans le fichier de configuration de votre module :
have=NDK_[module_name] . auto/have
pour chaque module NDK que vous souhaitez utiliser (vous devez inclure auto/have plusieurs fois si vous souhaitez utiliser plusieurs modules NDK).
Remarque : l'ancienne méthode de définition
CFLAGS="$CFLAGS -DNDK_[module_name]"
est désormais obsolète. Elle fonctionnera toujours, mais entraîne l'affichage de lignes inutiles lors de la compilation de Nginx.
Warning: Using NDK_ALL
Vous pouvez également définir NDK_ALL pour inclure tous les modules NDK. Cela est principalement fait par
convenance dans les premières étapes de développement d'un autre module. Cependant,
NE LAISSEZ PAS NDK_ALL DANS VOTRE FICHIER DE CONFIGURATION LORS DE LA PUBLICATION
Bien que le NDK soit assez petit maintenant, il pourrait à terme devenir un grand référentiel de code qui, en utilisant NDK_ALL, entraînerait la compilation de beaucoup plus de code que nécessaire.
Modules using NDK
Les modules tiers suivants utilisent le NDK.
- ngx_http_lua_module
- ngx_http_set_misc_module
- ngx_http_encrypted_session_module
- ngx_http_form_input_module
- ngx_http_iconv_module
- ngx_http_array_var_module
Si vous souhaitez ajouter votre module à cette liste, veuillez nous le faire savoir.
Special Thanks
Un remerciement spécial à Yichun Zhang pour son aide à maintenir ce module.
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-ndk.