跳转至

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

GitHub CodeFactor

演示网站

基于 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 仓库 中找到此模块的其他配置提示和文档。