testcookie
testcookie 指令在 NGINX 中启用或禁用基于 cookie 的机器人缓解挑战。
NGINX testcookie robot mitigation module
·
httpserverlocationif in serverif in location
语法testcookie on | off | var;
默认值off
上下文http, server, location, if in server, if in location
参数1
说明
"testcookie" 指令是 NGINX testcookie 机器人缓解模块的一部分,该模块利用 cookie 基于挑战-响应机制来识别并缓解潜在的机器人流量。启用时,NGINX 使用 cookie 来管理挑战流程,在客户端首次访问时为其设置 cookie。该指令用于指定此缓解方法是否处于激活状态,从而影响请求的处理方式。
当该指令设置为 "on" 时,会启用可以向客户端颁发挑战 cookie 的机制。该 cookie 可以配置各种属性,例如 expiration、name、domain、path、SameSite 策略等,从而在使用 cookie 进行机器人缓解时提供灵活性。该指令的行为还可以通过模块中的其他设置进一步影响(例如通过 "testcookie_session" 指令指定用于生成挑战的输入),以便根据特定场景或流量模式进行定制配置。
在怀疑或遇到机器人流量的情况下,该指令可以帮助区分合法用户与机器人,确保自动脚本不会不正当地访问网站资源。然而,正确的配置至关重要;如果 cookie 参数设置不当或未指定必需的 "testcookie_session" 指令,可能导致缓解无效或用户访问问题。
配置示例
http {
testcookie on;
testcookie_session "$remote_addr";
testcookie_max_attempts 3;
testcookie_fallback "https://example.com/fallback";
}⚠
确保您已配置所需的 'testcookie_session' 指令,以避免配置错误。
⚠
注意 'testcookie_secret';使用 'random' 可能在服务器重启时导致 cookie 验证问题,因为所有现有的 cookie 都会失效。
⚠
缺乏适当的 'testcookie_arg' 设置可能导致无限重定向,从而带来糟糕的用户体验。