js-challenge: Модуль Javascript challenge для NGINX
Установка
Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:
- RedHat Enterprise Linux 7, 8, 9 и 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 и 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
Активируйте модуль, добавив следующее в начало файла /etc/nginx/nginx.conf:
load_module modules/ngx_http_js_challenge_module.so;
Этот документ описывает nginx-module-js-challenge v0.0.2, выпущенный 21 августа 2024 года.
Запрос на стабильный релиз существует. Проголосуйте здесь.
ngx_http_js_challenge_module
Простой доступ на основе javascript proof-of-work для Nginx с практически нулевыми накладными расходами.
Легкая установка: просто добавьте load_module /path/to/ngx_http_js_challenge_module.so; в ваш файл nginx.conf и следуйте инструкциям по конфигурации.
Конфигурация
Простая конфигурация
server {
js_challenge on;
js_challenge_secret "change me!";
# ...
}
Расширенная конфигурация
server {
js_challenge on;
js_challenge_secret "change me!";
js_challenge_html /path/to/body.html;
js_challenge_bucket_duration 3600;
js_challenge_title "Verifying your browser...";
location /static {
js_challenge off;
alias /static_files/;
}
location /sensitive {
js_challenge_bucket_duration 600;
#...
}
#...
}
js_challenge on|offВключить или отключить javascript challenges для этого блока конфигурацииjs_challenge_secret "secret"Секрет для генерации заданий. ПО УМОЛЧАНИЮ: "changeme"js_challenge_html "/path/to/file.html"Путь к html файлу, который будет вставлен в тег<body>промежуточной страницыjs_challenge_title "title"Будет вставлен в тег<title>промежуточной страницы. ПО УМОЛЧАНИЮ: "Verifying your browser..."js_challenge_bucket_duration timeИнтервал для запроса js challenge, в секундах. ПО УМОЛЧАНИЮ: 3600
Известные ограничения / TODO
- Пользователи с отключенными куками будут застревать в бесконечном цикле обновления (TODO: перенаправление с известным параметром запроса, если кука не указана, но параметр запроса установлен, отображать страницу с ошибкой)
- Если nginx находится за обратным прокси/балансировщиком нагрузки, одно и то же задание будет отправлено разным пользователям и/или кука ответа будет недействительна, когда пользователь будет перенаправлен на другой сервер. (TODO: использовать заголовок x-real-ip, когда он доступен)
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-js-challenge.