ndk: Nginx Development Kit
Instalación
Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:
- RedHat Enterprise Linux 7, 8, 9 y 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 y 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
Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:
load_module modules/ndk_http_module.so;
Este documento describe nginx-module-ndk v0.3.5 lanzado el 17 de julio de 2026.
El NDK es un módulo de Nginx diseñado para extender la funcionalidad central del excelente servidor web Nginx de una manera que puede ser utilizada como base para otros módulos de Nginx.
Tiene funciones y macros para manejar tareas genéricas que actualmente no tienen código genérico como parte de la distribución central. El NDK en sí agrega pocas características que son vistas desde el punto de vista del usuario; está diseñado simplemente para ayudar a reducir el código que los desarrolladores de módulos de Nginx necesitan escribir.
Los desarrolladores de módulos de Nginx que deseen utilizar cualquiera de las características del NDK deben especificar que el NDK es una dependencia de su módulo, y que los usuarios necesitarán compilarlo también cuando compilen sus propios módulos. También deberán declarar en sus propios módulos qué características del NDK desean utilizar (explicado a continuación).
Si no eres un desarrollador de módulos de Nginx, entonces la única parte útil de este proyecto será la sección 'uso para usuarios' a continuación.
Características
- funciones conf_set adicionales para expresiones regulares, valores complejos/script, rutas...
- macros para simplificar tareas como verificar valores NULL al hacer ngx_array_push
- parches al código fuente principal
- se incluye el manejador de biblioteca externa genérico ngx_auto_lib_core (ver readme separado)
Diseño
modular
El kit en sí está diseñado de manera modular, de modo que solo se compila el código requerido. Es posible agregar solo un módulo NDK, unos pocos o todos ellos.
auto-generado y fácilmente extensible
Muchas de las macros disponibles en el NDK son auto-generadas a partir de archivos de configuración simples. Esto hace que crear macros similares para tu propio código sea muy simple; generalmente solo es cuestión de agregar una línea adicional a un archivo de configuración y volver a ejecutar el script de construcción.
Uso para usuarios
Si otro módulo de Nginx que deseas utilizar especifica que el NDK es una dependencia, necesitarás hacer lo siguiente:
- descargar el código fuente (https://github.com/simpl/ngx_devel_kit)
- descomprimir el código fuente (tar -xzf $name)
- compilar Nginx con la siguiente opción adicional
--add-module=/path/to/ngx_devel_kit.
por ejemplo:
./configure --add-module=/path/to/ngx_devel_kit \
--add-module=/path/to/another/module
Uso para desarrolladores
Para utilizar el NDK en tu propio módulo, necesitas agregar lo siguiente:
- añade esta línea a tu módulo
#include <ndk.h>
Nota: dado que el NDK incluye las siguientes líneas
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>
puedes reemplazarlas con la única inclusión anterior. 2. agrega la siguiente línea en el archivo de configuración de tu módulo:
have=NDK_[module_name] . auto/have
para cada módulo NDK que desees utilizar (necesitas incluir auto/have múltiples veces si deseas utilizar múltiples módulos NDK).
Nota: el antiguo método de establecer
CFLAGS="$CFLAGS -DNDK_[module_name]"
ahora está en desuso. Aún funcionará, pero resulta en líneas innecesarias mostradas al compilar Nginx.
Advertencia: Usando NDK_ALL
También puedes establecer NDK_ALL para incluir todos los módulos NDK. Esto es principalmente por conveniencia en las primeras etapas de desarrollo de otro módulo. Sin embargo,
NO DEJES NDK_ALL EN TU ARCHIVO DE CONFIGURACIÓN AL PUBLICAR
Aunque el NDK es bastante pequeño ahora, podría convertirse con el tiempo en un gran repositorio de código que, si se utiliza NDK_ALL, resultaría en una cantidad considerable de código compilado que no es necesario.
Módulos que utilizan NDK
Los siguientes módulos de terceros hacen uso del 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 deseas agregar tu módulo a esta lista, háznoslo saber.
Agradecimientos especiales
Un agradecimiento especial a Yichun Zhang por ayudar a mantener este módulo.
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-ndk.