我试图通过阻止 nginx 中的用户代理来阻止一些讨厌的机器人。当多个用户代理/匹配项具有非字母数字字符并且需要用引号括起来时,将多个用户代理/匹配项放在同一个 if 语句中的最佳方法是什么。
这有效:
if ($http_user_agent ~* (python|wget)) {
return 403;
}
if ($http_user_agent ~* "Opera/9.02 (Windows XP; U; ru)") {
return 403;
}
if ($http_user_agent ~* "Opera/9.70 (Linux i686 ; U; en) Presto/2.2.1") {
return 403;
}
但我更喜欢这样的东西(不是这种格式):
if ($http_user_agent ~* (python|wget|"Opera/9.02 (Windows XP; U; ru)"|"Opera/9.70 (Linux i686 ; U; en) Presto/2.2.1") ) {
return 403;
}