js_challenge
`js_challenge` 指令在 NGINX 配置中启用基于 JavaScript 的工作量证明挑战,用于阻止机器人并验证真实用户。
NGINX Javascript challenge module
·
serverlocationif in serverif in location
语法js_challenge on | off;
默认值off
上下文server, location, if in server, if in location
参数flag
说明
js_challenge 指令是 NGINX Javascript challenge 模块的一部分,旨在实现一种工作量证明机制,帮助区分自动化机器人与合法用户。当在 server 或 location 上下文中启用此指令时,它会指示 NGINX 向访问者提供一个 JavaScript 挑战。用户必须成功完成该挑战才能访问内容。这种技术对于缓解诸如网页抓取或过量机器人流量等攻击特别有用,相较于传统 CAPTCHA 提供了更轻量的解决方案。
配置示例
server {
js_challenge on;
js_challenge_secret "your_secret";
js_challenge_title "Please verify you're human";
location / {
# additional configurations
}
}⚠
确保用户的浏览器启用 cookie,因为禁用它们可能导致无限刷新问题。
⚠
该指令可能会导致性能问题,尤其是当用户通过刷新页面而不完成挑战来频繁使挑战失效时。
⚠
在反向代理后使用该指令时请小心,因为反向代理可能会向多个用户提供相同的挑战。