js-challenge: Módulo de desafío Javascript 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-js-challenge
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-js-challenge
Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:
load_module modules/ngx_http_js_challenge_module.so;
Este documento describe nginx-module-js-challenge v0.0.2 lanzado el 21 de agosto de 2024.
Existe una solicitud para una versión estable. Vota aquí.
ngx_http_js_challenge_module
Acceso simple basado en prueba de trabajo Javascript para Nginx con prácticamente ningún overhead.
Instalación fácil: solo agrega load_module /path/to/ngx_http_js_challenge_module.so; a tu archivo
nginx.conf y sigue las instrucciones de configuración.
Configuración
Configuración simple
server {
js_challenge on;
js_challenge_secret "¡cámbiame!";
# ...
}
Configuración avanzada
server {
js_challenge on;
js_challenge_secret "¡cámbiame!";
js_challenge_html /path/to/body.html;
js_challenge_bucket_duration 3600;
js_challenge_title "Verificando tu navegador...";
location /static {
js_challenge off;
alias /static_files/;
}
location /sensitive {
js_challenge_bucket_duration 600;
#...
}
#...
}
js_challenge on|offAlternar desafíos javascript para este bloque de configuraciónjs_challenge_secret "secret"Secreto para generar los desafíos. DEFAULT: "changeme"js_challenge_html "/path/to/file.html"Ruta al archivo html que se insertará en la etiqueta<body>de la página intersticialjs_challenge_title "title"Se insertará en la etiqueta<title>de la página intersticial. DEFAULT: "Verificando tu navegador..."js_challenge_bucket_duration timeIntervalo para solicitar el desafío js, en segundos. DEFAULT: 3600
Limitaciones conocidas / TODO
- Los usuarios con cookies deshabilitadas quedarán atrapados en un bucle de refresco infinito (TODO: redirigir con un parámetro de consulta conocido, si no se especifica cookie pero se establece el argumento de consulta, mostrar una página de error)
- Si nginx está detrás de un proxy inverso/balancer de carga, el mismo desafío se enviará a diferentes usuarios y/o la cookie de respuesta se invalidará cuando el usuario sea redirigido a otro servidor. (TODO: usar el encabezado x-real-ip cuando esté disponible)
GitHub
Puedes encontrar consejos adicionales de configuración y documentación para este módulo en el repositorio de GitHub para nginx-module-js-challenge.