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/<your-site>,/usr/local/nginx/conf/nginx.conf,/etc/nginx/conf.d/<your-site>)。

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://<nginx-ip-address>

时间: 2024-08-01 04:23:29

Nginx禁止特定用户代理访问网站配置的相关文章

Nginx禁止特定用户代理(User Agents)访问(转)

Nginx可以通过各种方式来限制访问,例如NGINX基本Http认证.allow/deny等等,这些都是前文提过的,今天来看看nginx如果通过用户代理来禁止访问. user agent是什么? 用户代理是指浏览器,它的信息包括硬件平台.系统软件.应用软件和用户个人偏好.用户代理的能力和偏好可以认为是元数据或用户代理的硬件和软件的特性和描述: 不太好理解,简单来说告诉服务器你当前使用的是什么浏览器.工具等等.例如火狐.谷歌chrome.wget.curl. 如何禁止特定UA 我们不希望被使用wg

Nginx中禁止使用IP访问网站的配置实例_nginx

国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了.这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下. 国内因为备案的原因,所有服务器都要禁止使用IP访问网站.否则,如果允许使用IP访问网站,那随便解析一个域名到该IP,访问该域名就可以打开网站了.这是一个极大的风险!Nginx中可以很方便的来解决这个问题,小菜鸟来跟大家一起探讨一下. 如下的配置项,可以设置允许使用I

如何禁止特定IP访问Oracle数据库

如何禁止特定IP访问Oracle数据库通过使用数据库服务器端的sqlnet.ora文件可以实现禁止指定IP主机访问数据库的功能,这对于提升数据库的安全性有很大的帮助,与此同时,这个技术为我们管理和约束数据库访问控制提供了有效的手段在sqlnet.ora中增加如下部分  tcp.validnode_checking=yes        #允许访问的IP  tcp.invited_nodes=(ip1,ip2--)        #禁止访问的IP  tcp.excluded_nodes=(ip1,

Nginx 拒绝指定IP访问网站的配置

Nginx 拒绝指定IP访问的方法其实非常的简单,我们来看简单的配置 下面的这个例子将拒绝掉所有的连接: location / {   #这里将永远输出403错误.   deny all;   #这些指令不会被启用,因为到达的连接在第一条已经被拒绝   deny    192.168.1.1;   allow   192.168.1.0/24;   allow   10.1.1.0/1 } 当然我们可以有一部份合法的IP可以访问 控制规则按照声明的顺序进行检查,首条匹配IP的访问规则将被启用.

Apache设置禁止使用IP访问网站的方法

一般来说,网站可以用域名和IP来访问.但是,如果您的网站可以通过IP直接访问,就会有一些隐患,比如被域名恶意解析等.那么如何设置禁止IP直接访问呢,本文就为大家介绍下方法. 修改方法 修改Apache配置文件Httpd.conf 如果你的Apache开通了虚拟主机,则需要修改conf/下的httpd-vhosts.conf文件.如何判断Apache是否开通了虚拟主机,在配置文件httpd.conf中搜索,若有类似如下的选项的,则是开启了虚拟主机. Virtual hosts Include ht

Centos中iptables禁止ip段访问网站

禁止某条ip访问网站: iptables -I INPUT -s 183.15.35.140 -j DROP 禁止某ip段访问网站: iptables -I INPUT -s 142.54.0.0/16 -j DROP 或 iptables -I INPUT -s 183.44.123.0/24 -j DROP 删除某条ip访问网站的限制: iptables -D INPUT -s ***.***.***.*** -j DROP PS一下,  142.54.0.0/16 指的ip段是 前两位不变

PHP禁止个别IP访问网站_php实例

想不让某个IP访问网站,可以封他的IP,下面就提供这个方法.看下面的代码. 复制代码 代码如下: function get_ip_data(){       $ip=file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".get_client_ip());    $ip = json_decode($ip);    if($ip->code){        return false;    }   

nginx 禁止svn目录访问的脚本

nginx location ~ .*.(svn|git|cvs) {     deny all; } apache <Directory "/opt/www/svip/gift/webroot"> RewriteEngine On RewriteRule .svn/  /404.html </Directory> 整理了一些方法供大家参考 禁止访问某些文件/目录 增加Files选项来控制,比如要不允许访问 .inc 扩展名的文件,保护php类库: <Fi

php实现禁止IP段访问网站的代码

 代码如下 复制代码 <?php //加IP访问限制 if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $userip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unkn