js-challenge: NGINX Javascript 挑战模块
安装
您可以在任何基于 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,于 2024 年 8 月 21 日发布。
稳定版本的请求已存在。请在 这里投票。
ngx_http_js_challenge_module
基于 Javascript 的简单工作量证明访问,几乎没有开销。
简单安装:只需将 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 挑战js_challenge_secret "secret"生成挑战的秘密。默认值: "changeme"js_challenge_html "/path/to/file.html"要插入到中介页面<body>标签中的 HTML 文件路径js_challenge_title "title"将插入到中介页面的<title>标签中。默认值: "Verifying your browser..."js_challenge_bucket_duration time提示 js 挑战的间隔,单位为秒。默认值:3600
已知限制 / 待办事项
- 禁用 cookies 的用户将陷入无限刷新循环(待办事项:如果未指定 cookie 但设置了查询参数,则重定向并显示错误页面)
- 如果 nginx 位于反向代理/负载均衡器后面,则相同的挑战将发送给不同的用户,或者当用户被重新路由到另一服务器时,响应 cookie 将失效。(待办事项:在可用时使用 x-real-ip 头)
GitHub
您可以在 nginx-module-js-challenge 的 GitHub 仓库 中找到此模块的其他配置提示和文档。