之前面已經配置好的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 顯示詳細的通訊過程