一般来说,我们直接用nginx 的if 语句配合正则表达式就可以了,比如说
# case sensitive matching if ($http_user_agent ~ (Antivirx|Arian)) { return 403; } # case insensitive matching if ($http_user_agent ~* (netcrawl|npbot|malicious)) { return 403; }
但是当我们需要禁止的user agent lists过长时,用if语句配合正则表达式就不是那么方便,而且性能上也会有影响,因此Nginx官方
多推荐使用map 来代替 if 语句
map $http_user_agent $badagent { default 0; ~*malicious 1; ~*backdoor 1; ~*netcrawler 1; ~Antivirx 1; ~Arian 1; ~webbandit 1; } if ($badagent) { return 403; }