![nginx 拒绝用户代理时如果未用引号括起来会导致错误](https://linux22.com/image/606168/nginx%20%E6%8B%92%E7%BB%9D%E7%94%A8%E6%88%B7%E4%BB%A3%E7%90%86%E6%97%B6%E5%A6%82%E6%9E%9C%E6%9C%AA%E7%94%A8%E5%BC%95%E5%8F%B7%E6%8B%AC%E8%B5%B7%E6%9D%A5%E4%BC%9A%E5%AF%BC%E8%87%B4%E9%94%99%E8%AF%AF.png)
我试图拒绝一些我经常看到的探测我的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"