# ngx_http_js_challenge_module [](LICENSE) [](https://www.codefactor.io/repository/github/simon987/ngx_http_js_challenge_module) [](https://ngx-js-demo.simon987.net/) Simple JavaScript proof-of-work based access control for Nginx, designed to provide security with minimal overhead. ## Features - **Lightweight Integration:** Easy to integrate with existing Nginx installations. - **Configurable Security:** Flexible settings to adjust security strength and client experience. - **Minimal Performance Impact:** Designed to operate with virtually no additional server load. ## Quick Start 1. **Installation** Add the following line to your `nginx.conf`: ``` load_module /path/to/ngx_http_js_challenge_module.so; ``` 2. **Configuration** Use the simple or advanced configurations provided below to customize the module to your needs. ## Installation To install the ngx_http_js_challenge_module, follow these steps: 1. Add the module loading directive to your Nginx configuration file (`/etc/nginx/nginx.conf`): ``` load_module /path/to/ngx_http_js_challenge_module.so; ``` 2. Apply the changes by reloading Nginx: ``` nginx -s reload ``` ## Configuration ### Basic Configuration For basic setup, update your server block as follows: ``` server { js_challenge on; js_challenge_secret "change me!"; # Ensure to replace this with a strong secret in production } ``` ### Advanced Configuration For more complex setups, including exemptions for specific paths: ``` 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; # Add further customization here } } ``` ### Parameters - **js_challenge on|off** Toggle javascript challenges for this config block - **js_challenge_secret "secret"** Secret for generating the challenges. DEFAULT: "changeme" - **js_challenge_html "/path/to/file.html"** Path to html file to be inserted in the `
` tag of the interstitial page - **js_challenge_title "title"** Will be inserted in the `