js-challenge: Модуль Javascript вызова в NGINX
Установка на Debian/Ubuntu
Эти документы применимы к APT пакету nginx-module-js-challenge, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте APT репозиторий, как описано в настройке APT репозитория.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-js-challenge
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия | Компонент | Архитектуры |
|-------------|--------------------|-------------|---------------|
| debian | bookworm | main | amd64, arm64 |
| debian | bookworm-mainline | main | amd64, arm64 |
| debian | trixie | main | amd64, arm64 |
| debian | trixie-mainline | main | amd64, arm64 |
| ubuntu | focal | main | amd64, arm64 |
| ubuntu | focal-mainline | main | amd64, arm64 |
| ubuntu | jammy | main | amd64, arm64 |
| ubuntu | jammy-mainline | main | amd64, arm64 |
| ubuntu | noble | main | amd64, arm64 |
| ubuntu | noble-mainline | main | amd64, arm64 |
ngx_http_js_challenge_module
Простой доступ на основе доказательства в виде работы с использованием Javascript для Nginx с практически нулевыми накладными расходами.
Простая установка: просто добавьте load_module /path/to/ngx_http_js_challenge_module.so; в ваш файл
nginx.conf и следуйте инструкциям по настройке.
Настройка
Простая настройка
server {
js_challenge on;
js_challenge_secret "измените меня!";
# ...
}
Расширенная настройка
server {
js_challenge on;
js_challenge_secret "измените меня!";
js_challenge_html /path/to/body.html;
js_challenge_bucket_duration 3600;
js_challenge_title "Проверка вашего браузера...";
location /static {
js_challenge off;
alias /static_files/;
}
location /sensitive {
js_challenge_bucket_duration 600;
#...
}
#...
}
js_challenge on|offВключает или выключает javascript вызовы для этого блока конфигурацииjs_challenge_secret "секрет"Секрет для генерации вызовов. ПО УМОЛЧАНИЮ: "changeme"js_challenge_html "/path/to/file.html"Путь к html файлу, который будет вставлен в тег<body>промежуточной страницыjs_challenge_title "заголовок"Будет вставлен в тег<title>промежуточной страницы. ПО УМОЛЧАНИЮ: "Проверка вашего браузера..."js_challenge_bucket_duration timeИнтервал для запроса js вызова, в секундах. ПО УМОЛЧАНИЮ: 3600
Известные ограничения / TODO
- Пользователи с отключенными cookies застрянут в бесконечном цикле обновления (TODO: перенаправление с известным параметром запроса, если cookie не указаны, но параметр запроса установлен, отобразить страницу с ошибкой)
- Если nginx находится за обратным прокси/балансировщиком нагрузки, один и тот же вызов будет отправлен разным пользователям и/или cookie ответа будет недействителен, когда пользователь будет перенаправлен на другой сервер. (TODO: использовать заголовок x-real-ip, когда он доступен)