本文作者:阿豪

Nginx设置防盗链,访问控制

阿豪 5个月前 ( 02-13 ) 7
location ~* ^.+\.(gif|jpg|png|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$  
#匹配不区分大小写  
{
#过期时间 
expires 7d;  
valid_referers none blocked server_names  *.test.com ;   
#白名单   
if ($invalid_referer) 
{
return 403;
}  
}
#//不记录日志
access_log off;
}

测试

首先先验证下是否写对

## /usr/local/nginx/sbin/nginx -t

然后重新加载

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

# curl -x127.0.0.1:80 -I -e "http://aa.com/1.php" test.com/1.png

image.png# curl -x127.0.0.1:80 -I -e "http://test.com/1.php" test.com/1.png

image.png

Nginx访问控制

需求:访问/admin/目录的请求,只允许某几个IP访问,配置如下

location /admin/  
{    
allow 192.168.5.16;    
allow 127.0.0.1;    
deny all;  
}

在配置httpd的时候,还有一个order,来定义先allow还是先deny,在nginx里并没有,只要匹配规则就结束,他会从上往下匹配没直接匹配到规则的时候才会结束

#mkdir -p /data/wwwroot/test.com/admin/

# echo “test,test”>/data/wwwroot/test.com/admin/1.html

# /usr/local/nginx/sbin/nginx -t

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

# curl -x127.0.0.1:80 test.com/admin/1.html -I

image.png

也可以配置成允许一个ip段,写法allow 192.168.5.0/24,如果只是禁止掉几个ip的话,就直接deny 192.168.4.1;禁止掉

也可以写成正则来限制,一般限制一些图片上传目录禁止,如下

可以匹配正则

location ~ .*(upa|image)/.*\.php$   
{
  deny all;
}

小括号里面的竖线为分隔符,他们之间是“或者”的意思,这样就可以吧访问的url中带有upa或者image的字符串,并且把php请求拒绝访问,,禁止php是为了保证图片上传目录不被黑

也可以针对,user_agent做些限制,配置如下

if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato')
{
 return 403;
}   
# 如果不缺分大小写则为  
if ($http_user_agent ~* 'Spider/3.0|YoudaoBot|Tomato')
{
return 403;
}

其中~为匹配符号,只要user_agent中含有上面几个,都会直接被拒绝,直接返回403代码

#测试地址# curl -A "Tomato" -x127.0.0.1:80 test.com

image.png

文章版权及转载声明

作者:阿豪本文地址:https://www.ahaoyw.com/article/94.html发布于 5个月前 ( 02-13 )
文章转载或复制请以超链接形式并注明出处阿豪运维笔记

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

分享