之前面已经配置好的bbs.jinkai.cc.conf做为实验的配置文件php
vim /etc/nginx/conf.d/bbs.jinkai.cc.confnginx
nginx -t && nginx -s reloadvim
一:针对IP的控制访问浏览器
针对IP有白名单和黑名单限制,allow 容许 ;deny 拒绝服务器
白名单:容许127.0.0.1和192.168.1.0/24网段,其余的一概拒绝curl
在配置文件server_name下直接添加,就是针对bbs.jinkai.cc这个网站 allow 127.0.0.1; allow 192.168.1.0/24 deny all; 实验结果: curl -I -x127.0.0.1:80 bbs.jinkai.cc HTTP/1.1 200 OK //白名单容许访问 curl -x192.168.111.136:80 bbs.jinkai.cc -I HTTP/1.1 403 Forbidden //不在白名单的一概拒绝访问
黑名单:拒绝127.0.0.1和192.168.1.0/24网段访问ide
deny 127.0.0.1;网站
deny 192.168.1.0/24;url
实验结果:代理
curl -I -x127.0.0.1:80 bbs.jinkai.cc HTTP/1.1 403 Forbidden //黑名单内不容许访问 curl -x192.168.111.136:80 bbs.jinkai.cc -I HTTP/1.1 200 OK //不在黑名单的则不拒绝
二:限制目录的访问
location /admin/ { allow 127.0.0.1; allow 192.168.1.0/24; deny all; }
针对admin 这个目录的访问
实验结果:
curl -x127.0.0.1:80 bbs.jinkai.cc/admin/ -I HTTP/1.1 404 Not Found curl -x192.168.111.136:80 bbs.jinkai.cc/admin/ -I HTTP/1.1 403 Forbidden
三:限制目录下某类文件的访问
location ~ .*(forum|123|abc)/.*\.php$ { deny all; }
限制全部IP访问forum;123;abc;三个目录下全部以.php结尾的文件或子文件都会被拒绝
实验结果:
curl -x192.168.111.136:80 bbs.jinkai.cc/forum/fdsaffdsa.php -I HTTP/1.1 403 Forbidden curl -x192.168.111.136:80 bbs.jinkai.cc/forum1/fdsaffdsa.php -I HTTP/1.1 404 Not Found curl -x192.168.111.136:80 bbs.jinkai.cc/forum/fdsaffdsa.php1 -I HTTP/1.1 404 Not Found
四:限制user_agent
user_agent 用户代理,格式:浏览器标识
if ($http_user_agent ~ 'forum|YoudaoBot|Tomato') { return 403; }
浏览器标识带有forum|YoudaoBot|Tomato 字符的访问本机都会被拒绝
实验结果:-A 模拟指定浏览器标识符 -e 指定referer
curl -A 'fdsafsdforum' -e 1233 -x127.0.0.1:80 bbs.jinkai.cc -I HTTP/1.1 403 Forbidden curl -A 'fdsafsd///YoudaoBot' -e 1233 -x127.0.0.1:80 bbs.jinkai.cc -I HTTP/1.1 403 Forbidden 区分大小写,把YoudaoBot 最后一个字母改为大写T ,就能够正常访问 curl -A 'fdsafsd///YoudaoBoT' -e 1233 -x127.0.0.1:80 bbs.jinkai.cc -I HTTP/1.1 200 OK
五:限制uri
$request_uri:请求的连接,包括$document_uri和$args
$args :请求中的参数,如www.123.com/1.php?a=1&b=2的$args就是a=1&b=2
$document_uri:当前请求中不包含指令的URI,如www.123.com/1.php?a=1&b=2的$document_uri就是1.php,不包含后面的参数
例如前面作的网站论坛
http://bbs.jinkai.cc/forum.php?mod=forumdisplay&fid=2
$document:forum.php
$args :mod=forumdisplay&fid=2
只要针对上面包含的字段作显示就能够了
if ($request_uri ~ (forum|display))
{
return 404;
}
实验结果:刷新论坛网页后,已经没法访问
http://bbs.jinkai.cc/forum.php?mod=forumdisplay&fid=2
扩展:
curl 参数
-A 指定user-agent
-e 指定referer
-x指定访问目标服务器的ip和port -I只显示 header信息,不显示具体的网页内容
-v 显示详细的通讯过程