njs: Módulos dinâmicos njs do NGINX
Instalação
Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:
- RedHat Enterprise Linux 7, 8, 9 e 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 e 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
Ative o módulo adicionando o seguinte no topo de /etc/nginx/nginx.conf:
load_module modules/ngx_http_js_module.so;
load_module modules/ngx_stream_js_module.so;
Este documento descreve o nginx-module-njs v0.9.6 lançado em 03 de março de 2026.

NGINX JavaScript
NGINX JavaScript, também conhecido como NJS, é um módulo dinâmico para NGINX que permite a extensão da funcionalidade embutida usando uma sintaxe familiar de JavaScript. A linguagem NJS é um subconjunto do JavaScript, compatível com ES5 (ECMAScript 5.1 Strict Variant) com algumas extensões de ES6 (ECMAScript 6) e versões mais recentes. Veja compatibilidade para mais detalhes.
Como funciona
NGINX JavaScript é fornecido como dois módulos dinâmicos para NGINX (ngx_http_js_module e ngx_stream_js_module) e pode ser adicionado a qualquer instalação suportada do NGINX Open Source ou NGINX Plus sem recompilação.
O módulo NJS permite que administradores do NGINX: - Adicionem controles de acesso e verificações de segurança complexas antes que as solicitações cheguem aos servidores upstream - Manipulem cabeçalhos de resposta - Escrevam manipuladores de conteúdo, filtros e muito mais de forma flexível e assíncrona!
Veja exemplos e nossos vários projetos desenvolvidos com NJS:
https://github.com/nginxinc/nginx-openid-connect
Estende a funcionalidade do NGINX Plus para se comunicar diretamente com provedores de identidade compatíveis com OIDC, autenticando usuários e autorizando o conteúdo entregue pelo NGINX Plus.
https://github.com/nginxinc/nginx-saml
Implementação de referência do NGINX Plus como um provedor de serviços para autenticação SAML.
https://github.com/nginxinc/njs-prometheus-module
Expõe o endpoint de métricas do Prometheus diretamente do NGINX Plus.
[!TIP] NJS também pode ser usado com o servidor de aplicativos NGINX Unit. Saiba mais sobre a API de Controle do NGINX Unit e como definir chamadas de função com NJS.
Baixando e instalando
Siga estas etapas para baixar e instalar os binários Linux pré-compilados do NGINX e do NGINX JavaScript. Você também pode optar por compilar o módulo localmente a partir do código-fonte.
Provisionando o repositório de pacotes do NGINX
Siga este guia para adicionar o repositório de pacotes oficial do NGINX ao seu sistema e instalar o NGINX Open Source. Se você já tem o NGINX Open Source ou NGINX Plus instalado, pule a parte de instalação do NGINX na última etapa.
Começando com o NGINX JavaScript
O uso do NJS envolve habilitar o módulo, adicionar arquivos JavaScript com funções definidas e invocar funções exportadas nos arquivos de configuração do NGINX.
Verifique se o NGINX está em execução
O NGINX JavaScript é um módulo para o NGINX Open Source ou NGINX Plus. Se você ainda não fez isso, siga estas etapas para instalar o NGINX Open Source ou NGINX Plus. Uma vez instalado, certifique-se de que a instância do NGINX está em execução e capaz de responder a solicitações HTTP.
Iniciando o NGINX
Emita o seguinte comando para iniciar o NGINX:
sudo nginx
Verifique se o NGINX está respondendo a solicitações HTTP
curl -I 127.0.0.1
Você deve ver a seguinte resposta:
HTTP/1.1 200 OK
Server: nginx/1.25.5
Habilitando os módulos JavaScript do NGINX
Uma vez instalado, pelo menos um (ou ambos) os módulos NJS devem ser incluídos no arquivo de configuração do NGINX. Na maioria dos sistemas, o arquivo de configuração do NGINX está localizado em /etc/nginx/nginx.conf por padrão.
Edite o arquivo de configuração do NGINX
sudo vi /etc/nginx/nginx.conf
Habilite o carregamento dinâmico dos módulos NJS
Use a diretiva load_module no contexto de nível superior (“main”) para habilitar um (ou ambos) os módulos.
load_module modules/ngx_http_js_module.so;
load_module modules/ngx_stream_js_module.so;
Noções básicas sobre como escrever arquivos de script .js
Os arquivos de script NJS são tipicamente nomeados com a extensão .js e colocados no diretório /etc/nginx/njs/. Eles geralmente são compostos por funções que são então exportadas, tornando-as disponíveis nos arquivos de configuração do NGINX.
Referência de objetos, métodos e propriedades personalizados
O NJS fornece uma coleção de objetos com métodos e propriedades associadas que não fazem parte das definições do ECMAScript. Veja a referência completa para esses objetos e como eles podem ser usados para estender e personalizar ainda mais o NGINX.
Exemplo: Olá Mundo
Aqui está um exemplo básico de "Olá Mundo".
example.js
A função hello neste arquivo retorna um código de status de resposta HTTP 200 OK junto com a string "Hello World!", seguida de uma quebra de linha. A função é então exportada para uso em um arquivo de configuração do NGINX.
Adicione este arquivo ao diretório /etc/nginx/njs:
function hello(r) {
r.return(200, "Hello world!\n");
}
export default {hello}
nginx.conf
Modificamos nossa configuração do NGINX (/etc/nginx/nginx.conf) para importar o arquivo JavaScript e executar a função em circunstâncias específicas.
# Carregar o módulo ngx_http_js_module
load_module modules/ngx_http_js_module.so;
events {}
http {
# Definir o caminho para nossos arquivos JavaScript njs
js_path "/etc/nginx/njs/";
# Importar nosso arquivo JavaScript na variável "main"
js_import main from http/hello.js;
server {
listen 80;
location / {
# Executar a função "hello" definida em nosso arquivo JavaScript em todas as solicitações HTTP
# e responder com o conteúdo de nossa função.
js_content main.hello;
}
}
}
Para uma lista completa de diretivas njs, consulte as páginas de documentação do ngx_http_js_module e ngx_stream_js_module.
[!TIP] Uma versão mais detalhada deste e de outros exemplos pode ser encontrada no repositório oficial njs-examples.
A interface de linha de comando (CLI) do NJS
O NGINX JavaScript é instalado com uma utilidade de interface de linha de comando. A interface pode ser aberta como um shell interativo ou usada para processar sintaxe JavaScript a partir de arquivos pré-definidos ou entrada padrão. Como a utilidade é executada de forma independente, objetos específicos do NGINX, como HTTP e Stream, não estão disponíveis dentro de seu tempo de execução.
Exemplo de uso da CLI interativa
$ 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]
}
>>
Exemplo de uso da CLI não interativa
$ echo "2**3" | njs -q
8
Clonando o repositório do NGINX JavaScript no GitHub
Usando seu método preferido, clone o repositório do NGINX JavaScript em seu diretório de desenvolvimento. Veja Clonando um Repositório do GitHub para ajuda adicional.
https://github.com/nginx/njs.git
Configurar e compilar
Execute os seguintes comandos a partir do diretório raiz do seu repositório clonado:
./configure
Compile o NGINX JavaScript:
make
A utilidade deve agora estar disponível em <NJS_SRC_ROOT_DIR>/build/njs. Veja A Interface de Linha de Comando (CLI) do NJS para informações sobre o uso.
Clonando o repositório do NGINX no GitHub
Clone o repositório do código-fonte do NGINX em um diretório fora do repositório de código-fonte do NJS previamente clonado.
https://github.com/nginx/nginx.git
Especificações técnicas do NGINX JavaScript
As especificações técnicas para o NJS são idênticas às do NGINX.
Distribuições suportadas
Veja Sistemas Operacionais e Plataformas Testados para uma lista completa de distribuições suportadas.
Ambientes de implantação suportados
- Contêiner
- Nuvem pública (AWS, Google Cloud Platform, Microsoft Azure)
- Máquina virtual
Versões do NGINX suportadas
O NGINX JavaScript é suportado por todas as versões do NGINX Open Source a partir do nginx-1.14 e todas as versões do NGINX Plus a partir do NGINX Plus R15.
Fazendo perguntas, relatando problemas e contribuindo
Incentivamos você a se envolver conosco. Consulte o guia de Contribuição para informações sobre como fazer perguntas, relatar problemas e contribuir com código.
Registro de alterações
Veja nossa página de lançamentos para acompanhar as atualizações.
GitHub
Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-njs.