我试图拒绝一些我经常看到的探测我的nginx
网络服务器的用户代理。
如果我的.conf
档案里有这个
## Block http user agent - morpheus fucking scanner ##
if ($http_user_agent ~* (morfeus fucking scanner|ZmEu)) {
return 403;
}
启动服务时出现以下错误:
nginx: [emerg] invalid condition "$http_user_agent" in /etc/nginx/sites-enabled/siteXXX:19
nginx: configuration file /etc/nginx/nginx.conf test failed
如果我将其括在引号中,它会开始但不会像我期望的那样否认。
## Block http user agent - morpheus fucking scanner ##
if ($http_user_agent ~* "(morfeus fucking scanner|ZmEu)") {
return 403;
}
有什么想法吗?我正在寻找不区分大小写的用户代理拒绝。
答案1
只需删除括号并添加引号:
if ($http_user_agent ~* "morfeus fucking scanner|ZmEu") {
return 403;
}
答案2
您要匹配的字符串是什么?
正则表达式应该用引号引起来,但如果要匹配正则表达式特殊符号 (,),| - 则需要用 \ 对其进行转义
尝试这个:
$http_user_agent ~ "(morfeus fucking scanner)|ZmEu"