Aller au contenu

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 :

  1. télécharger la source (https://github.com/simpl/ngx_devel_kit)
  2. décompresser la source (tar -xzf $name)
  3. 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 :

  1. 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.

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.