如何Nginx阻止用户代理

时间:2020-01-09 10:45:52  来源:igfitidea点击:

如何在Linux或者Unix之类的操作系统下使用Nginx Web服务器阻止http用户代理或者软件代理?
您可以使用GET/POST请求阻止任何http用户代理,这些请求会抓取您的内容或者尝试利用软件漏洞。
使用以下语法。
编辑/usr/local/nginx/conf/nginx.conf文件,执行:

# vi /usr/local/nginx/conf/nginx.conf

在此示例中,阻止名为wget的http用户代理:

## Block http user agent - wget ##
if ($http_user_agent ~* (Wget) ) {
   return 403;
}
 
## Block Software download user agents ##
     if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
            return 403;
     }

保存并关闭文件。
重新加载Nginx Web服务器,执行:

# service nginx reload

或者

# /usr/local/nginx/sbin/nginx -s reload

如何阻止多个http用户代理?

使用以下语法:

if ($http_user_agent ~ (agent1|agent2|Foo|Wget|Catall Spider|Actheitroadobot) ) {
    return 403;
}

不区分大小写的阻止:~* vs~

请注意~~使它不区分大小写,而不是~:

### case sensitive http user agent blocking  ###
if ($http_user_agent ~ (Catall Spider|Actheitroadobot) ) {
    return 403;
}
### case insensitive http user agent blocking  ###
if ($http_user_agent ~* (foo|bar) ) {
    return 403;
}