[nginx配置]Nginx禁止特定用户代理访问网站配置

更新时间:2020-03-28    来源:nginx    手机版     字体:

【www.bbyears.com--nginx】

如何禁止特定UA

我们不希望被使用wget或者curl来下载我的文件,怎么做呢?
编辑nginx配置文件,以下内容放在http配置段,那么整个nginx都生效。如果放到server里,那么一个域名生效,你放哪,哪就有效!


if ($http_user_agent ~* (curl) ) {
    return 404;
}

禁止多个UA


if ($http_user_agent ~* (wget|curl) ) {
return 404;
}

当然你可以把只要是代理的全部干掉 Nginx阻止用户代理

修改nginx.conf

if ($http_user_agent ~* (Wget|ab) ) {
   return 403;
}

if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
            return 403;
}

重启nginx

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

在Nginx中将特定用户代理列入黑名单

要配置用户代理阻挡列表,请打开你的网站的nginx配置文件,找到server定义部分。该文件可能会放在不同的地方,这取决于你的nginx配置或Linux版本(如,/etc/nginx/nginx.conf,/etc/nginx/sites-enabled/,/usr/local/nginx/conf/nginx.conf,/etc/nginx/conf.d/)。


server {
        listen       80 default_server;
        server_name  xmodulo.com;
        root         /usr/share/nginx/html;
        ....
    } 

在打开该配置文件并找到 server 部分后,添加以下 if 声明到该部分内的某个地方。

 

 server {
        listen       80 default_server;
        server_name  xmodulo.com;
        root         /usr/share/nginx/html;
        # 大小写敏感的匹配
        if ($http_user_agent ~ (Antivirx|Arian) {
            return 403;
        } 
        #大小写无关的匹配
     
if ($http_user_agent ~* (netcrawl|npbot|malicious)) {
            return 403;
        }
        ....
    } 

如你所想,这些 if 声明使用正则表达式匹配了任意不良用户字符串,并向匹配的对象返回403 HTTP状态码。 $http_user_agent是HTTP请求中的一个包含有用户代理字符串的变量。‘~"操作符针对用户代理字符串进行大小写敏感匹配,而‘~*"操作符则进行大小写无关匹配。‘|"操作符是逻辑或,因此,你可以在 if 声明中放入众多的用户代理关键字,然后将它们全部阻挡掉。

在修改配置文件后,你必须重新加载nginx以激活阻挡:
$ sudo /path/to/nginx -s reload
你可以通过使用带有 “--user-agent” 选项的 wget 测试用户代理阻挡。

 
$ wget --user-agent "malicious bot" http://

本文来源:http://www.bbyears.com/caozuoxitong/90280.html