访问控制
扩展:
curl命令用法:
curl -v -A 'aaaaaspider/3.0' -e "1111" -x127.0.0.1:80 discuz.tobe.com -I
-A 指定user-agent
-e 指定referer
-x 指定访问目标服务器的ip和port
-I 只显示 header信息,不显示具体的网页内容
-v 显示详细的通信过程
一、限制IP访问:
1)白名单
vim /etc/nginx/conf.d/discuz.tobe.com.conf
allow 127.0.0.1;
allow 192.168.2.0/24; 允许此网段的ip访问,即白名单
deny all;
除了白名单中的ip外,进行访问会返回403
2)黑名单
deny 127.0.0.1;
deny 1.1.1.1;
访问黑名单中的ip地址时,返回403,除外的正常返回
二、限制某个目录
限制/data目录:
location /data/
{
allow 127.0.0.1;
allow 192.168.1.0/24;
deny all;
}
curl -x127.0.0.1:80 discuz.tobe.com/data/ -I
因为只允许127.0.0.1和192.168.1网段的ip访问,所以使用246网段访问时返回403
curl -x192.168.246.128:80 discuz.tobe.com/admin.php -I
allow 127.0.0.1;
allow 192.168.1.0/24;
deny all;
三、限制某个目录下的某些类型的文件
location ~ .*(upload|image)/.*\.php$ #限制访问upload或image中的php文件
{
deny all;
}
curl -x127.0.0.1:80 discuz.tobe.com/upload/add.php -I
返回403代表有限制了,无法访问
访问ssw下的php文件返回404代表没有这个文件,但是没有限制
四、限制user-agent(浏览器中的标识)
编辑虚拟主机配置文件:
vim /etc/nginx/conf.d/discuz.tobe.com.conf
if ($http_user_agent ~ 'Spider/3.0|YoudaoBot|Tomato')
{
return 403;
}
$http_user_agent是 /etc/nginx/nginx.conf主配置文件中log_format的变量
curl -A 'aaaaaSpider/3.0' -x127.0.0.1:80 discuz.tobe.com -I 配置文件中没有区分大小写,命令中包含了Spider/3.0,所以返回了403
curl -v -A 'aaaaaSpider/3.0' -e 'avd123' -x127.0.0.1:80 discuz.tobe.com -I
-A 指定user-agent
-v 显示详细的通信过程
-e 指定referer
五、限制uri
$request_uri也是 /etc/nginx/nginx.conf主配置文件中log_format的变量
$request_uri 请求的链接,包括$document_uri和$args
http://discuz.tobe.com/forum.php?mod=viewthread&tid=1&extra=
forum.php就是$document_uri
?后面的是参数
编辑虚拟主机配置文件
vim /etc/nginx/conf.d/discuz.tobe.com.conf
if ($request_uri ~ (abc|123|viewthread)) #包含了viewthread,会返回404
{
return 404; #此处可以改成403,根据需求更改
}
http://discuz.tobe.com/forum.php?mod=viewthread&tid=1&extra= $args中包含viewthread,所以在判断时返回了404