nginx 拒绝用户代理时如果未用引号括起来会导致错误

nginx 拒绝用户代理时如果未用引号括起来会导致错误

我试图拒绝一些我经常看到的探测我的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"

相关内容