njs: Módulos dinámicos njs de NGINX
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-njs
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-njs
Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:
load_module modules/ngx_http_js_module.so;
load_module modules/ngx_stream_js_module.so;
Este documento describe nginx-module-njs v0.9.6 lanzado el 03 de marzo de 2026.

NGINX JavaScript
NGINX JavaScript, también conocido como NJS, es un módulo dinámico para NGINX que permite extender la funcionalidad incorporada utilizando una sintaxis de JavaScript familiar. El lenguaje NJS es un subconjunto de JavaScript, compatible con ES5 (ECMAScript 5.1 Variante Estricta) con algunas extensiones de ES6 (ECMAScript 6) y versiones más recientes. Consulta compatibilidad para más detalles.
Cómo funciona
NGINX JavaScript se proporciona como dos módulos dinámicos para NGINX (ngx_http_js_module y ngx_stream_js_module) y puede ser añadido a cualquier instalación soportada de NGINX Open Source o NGINX Plus sin necesidad de recompilación.
El módulo NJS permite a los administradores de NGINX: - Añadir controles de acceso y verificaciones de seguridad complejas antes de que las solicitudes lleguen a los servidores upstream - Manipular encabezados de respuesta - Escribir controladores de contenido, filtros y más, de manera flexible y asíncrona.
Consulta ejemplos y nuestros diversos proyectos desarrollados con NJS:
https://github.com/nginxinc/nginx-openid-connect
Extiende la funcionalidad de NGINX Plus para comunicarse directamente con Proveedores de Identidad compatibles con OIDC, autenticando usuarios y autorizando contenido entregado por NGINX Plus.
https://github.com/nginxinc/nginx-saml
Implementación de referencia de NGINX Plus como proveedor de servicios para autenticación SAML.
https://github.com/nginxinc/njs-prometheus-module
Expone el endpoint de métricas de Prometheus directamente desde NGINX Plus.
[!TIP] NJS también puede ser utilizado con el servidor de aplicaciones NGINX Unit. Aprende más sobre la API de Control de NGINX Unit y cómo definir llamadas a funciones con NJS.
Descargando e instalando
Sigue estos pasos para descargar e instalar los binarios de NGINX y NGINX JavaScript precompilados para Linux. También puedes optar por compilar el módulo localmente desde el código fuente.
Provisión del repositorio de paquetes de NGINX
Sigue esta guía para añadir el repositorio oficial de paquetes de NGINX a tu sistema e instalar NGINX Open Source. Si ya tienes NGINX Open Source o NGINX Plus instalado, omite la parte de instalación de NGINX en el último paso.
Comenzando con NGINX JavaScript
El uso de NJS implica habilitar el módulo, añadir archivos de JavaScript con funciones definidas y invocar funciones exportadas en los archivos de configuración de NGINX.
Verificar que NGINX esté en funcionamiento
NGINX JavaScript es un módulo para NGINX Open Source o NGINX Plus. Si no lo has hecho ya, sigue estos pasos para instalar NGINX Open Source o NGINX Plus. Una vez instalado, asegúrate de que la instancia de NGINX esté en funcionamiento y pueda responder a solicitudes HTTP.
Iniciar NGINX
Emite el siguiente comando para iniciar NGINX:
sudo nginx
Verificar que NGINX esté respondiendo a solicitudes HTTP
curl -I 127.0.0.1
Deberías ver la siguiente respuesta:
HTTP/1.1 200 OK
Server: nginx/1.25.5
Habilitando los módulos de NGINX JavaScript
Una vez instalado, uno (o ambos) de los módulos NJS debe ser incluido en el archivo de configuración de NGINX. En la mayoría de los sistemas, el archivo de configuración de NGINX se encuentra en /etc/nginx/nginx.conf por defecto.
Editar el archivo de configuración de NGINX
sudo vi /etc/nginx/nginx.conf
Habilitar la carga dinámica de módulos NJS
Usa la directiva load_module en el contexto de nivel superior (“principal”) para habilitar uno (o ambos) módulos.
load_module modules/ngx_http_js_module.so;
load_module modules/ngx_stream_js_module.so;
Conceptos básicos de escritura de archivos de script .js
Los archivos de script NJS suelen tener una extensión .js y se colocan en el directorio /etc/nginx/njs/. Generalmente están compuestos por funciones que luego son exportadas, haciéndolas disponibles en los archivos de configuración de NGINX.
Referencia de objetos, métodos y propiedades personalizadas
NJS proporciona una colección de objetos con métodos y propiedades asociadas que no son parte de las definiciones de ECMAScript. Consulta la referencia completa de estos objetos y cómo pueden ser utilizados para extender y personalizar aún más NGINX.
Ejemplo: Hola Mundo
Aquí hay un ejemplo básico de "Hola Mundo".
example.js
La función hello en este archivo devuelve un código de estado de respuesta HTTP 200 OK junto con la cadena "Hello World!", seguida de un salto de línea. La función es luego exportada para su uso en un archivo de configuración de NGINX.
Añade este archivo al directorio /etc/nginx/njs:
function hello(r) {
r.return(200, "Hello world!\n");
}
export default {hello}
nginx.conf
Modificamos nuestra configuración de NGINX (/etc/nginx/nginx.conf) para importar el archivo de JavaScript y ejecutar la función bajo circunstancias específicas.
# Cargar el módulo ngx_http_js_module
load_module modules/ngx_http_js_module.so;
events {}
http {
# Establecer la ruta a nuestros archivos de JavaScript njs
js_path "/etc/nginx/njs/";
# Importar nuestro archivo de JavaScript en la variable "main"
js_import main from http/hello.js;
server {
listen 80;
location / {
# Ejecutar la función "hello" definida en nuestro archivo de JavaScript en todas las solicitudes HTTP
# y responder con el contenido de nuestra función.
js_content main.hello;
}
}
}
Para una lista completa de las directivas njs, consulta las páginas de documentación de ngx_http_js_module y ngx_stream_js_module.
[!TIP] Una versión más detallada de este y otros ejemplos se puede encontrar en el repositorio oficial de njs-examples.
La interfaz de línea de comandos (CLI) de NJS
NGINX JavaScript se instala con una utilidad de interfaz de línea de comandos. La interfaz puede abrirse como un shell interactivo o utilizarse para procesar sintaxis de JavaScript desde archivos predefinidos o entrada estándar. Dado que la utilidad se ejecuta de forma independiente, los objetos específicos de NGINX como HTTP y Stream no están disponibles dentro de su tiempo de ejecución.
Ejemplo de uso de la CLI interactiva
$ njs
>> globalThis
global {
njs: njs {
version: '0.8.4'
},
global: [Circular],
process: process {
argv: ['/usr/bin/njs'],
env: {
PATH: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
HOSTNAME: 'f777c149d4f8',
TERM: 'xterm',
NGINX_VERSION: '1.25.5',
NJS_VERSION: '0.8.4',
PKG_RELEASE: '1~buster',
HOME: '/root'
}
},
console: {
log: [Function: native],
dump: [Function: native],
time: [Function: native],
timeEnd: [Function: native]
},
print: [Function: native]
}
>>
Ejemplo de uso de la CLI no interactiva
$ echo "2**3" | njs -q
8
Clonando el repositorio de NGINX JavaScript en GitHub
Usando tu método preferido, clona el repositorio de NGINX JavaScript en tu directorio de desarrollo. Consulta Clonando un Repositorio de GitHub para ayuda adicional.
https://github.com/nginx/njs.git
Configurar y construir
Ejecuta los siguientes comandos desde el directorio raíz de tu repositorio clonado:
./configure
Construir NGINX JavaScript:
make
La utilidad debería estar ahora disponible en <NJS_SRC_ROOT_DIR>/build/njs. Consulta La Interfaz de Línea de Comandos (CLI) de NJS para información sobre su uso.
Clonando el repositorio de NGINX en GitHub
Clona el repositorio del código fuente de NGINX en un directorio fuera del repositorio de código fuente de NJS previamente clonado.
https://github.com/nginx/nginx.git
Especificaciones técnicas de NGINX JavaScript
Las especificaciones técnicas para NJS son idénticas a las de NGINX.
Distribuciones soportadas
Consulta Sistemas Operativos y Plataformas Probadas para una lista completa de distribuciones soportadas.
Entornos de despliegue soportados
- Contenedor
- Nube pública (AWS, Google Cloud Platform, Microsoft Azure)
- Máquina virtual
Versiones de NGINX soportadas
NGINX JavaScript es soportado por todas las versiones de NGINX Open Source a partir de nginx-1.14 y todas las versiones de NGINX Plus a partir de NGINX Plus R15.
Haciendo preguntas, reportando problemas y contribuyendo
Te animamos a interactuar con nosotros. Consulta la guía de Contribución para información sobre cómo hacer preguntas, reportar problemas y contribuir con código.
Registro de cambios
Consulta nuestra página de lanzamientos para mantenerte al tanto de las actualizaciones.
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-njs.