測(cè)試
我會(huì)簡(jiǎn)單的告訴你如何配置Nginx的限制請(qǐng)求模塊并且它是如何保護(hù)你的網(wǎng)站,防止你被攻擊與DDOS或是其他基于HTTP的拒絕服務(wù)攻擊。
這個(gè)測(cè)試中,我將樣本頁(yè)在保存在Blitz.io(現(xiàn)在是免費(fèi)服務(wù))命名為about.html,用于測(cè)試limit_req指令.
首先,我在Blitz上使用下面的指令,用來(lái)發(fā)起1075個(gè)并發(fā)請(qǐng)求并且持續(xù)一分鐘,響應(yīng)超時(shí)設(shè)置為2分鐘,區(qū)域?yàn)榧又荩瑫r(shí)設(shè)置了除掉狀態(tài)200以外的其他狀態(tài)全部為異常狀態(tài),甚至是503都被認(rèn)為是沒(méi)有成功.
-p 1-1075:60 --status 200 -T 2000 -r california http://kbeezie.com/about.html

還不算壞,對(duì)不對(duì)? 但如果這是一個(gè)php文檔. 很可能有用戶會(huì)造成PHP進(jìn)程的502/504狀態(tài),讓服務(wù)器一直崩潰或無(wú)響應(yīng). 尤其是你使用了沒(méi)有任何保護(hù)的VPS或者其他廉價(jià)服務(wù)器,故障率會(huì)更高。(原文廣告,此處屏蔽)
當(dāng)然你可以使用緩存或其他工具來(lái)提高服務(wù)器性能與響應(yīng)能力, 就比如你使用WordPress你肯定要使用wordpress caching plugin. da For those type of people we can use the limit request module.
在Nginx中我們創(chuàng)建一個(gè)區(qū)域http { },我叫他blitz設(shè)置每秒5次請(qǐng)求, 最大容納數(shù)據(jù)量為10MB.我使用$binary_remote_addr當(dāng)作session變量 讓你自己比$remote_addr的正常訪客可以訪問(wèn)大于10MB的空間.
代碼如下:limit_req_zone $binary_remote_addr zone=blitz:10m rate=5r/s;
然周在服務(wù)器中定義上這些規(guī)則:
代碼如下:location = /about.html {
limit_req zone=blitz nodelay;
}
然后重新載入Nginx配置,看一下效果:

你會(huì)發(fā)現(xiàn)現(xiàn)在大于只有285人可以訪問(wèn)到服務(wù)器,每秒請(qǐng)求數(shù)為4.75 ,沒(méi)有超過(guò)我們?cè)O(shè)置的5次每秒,檢查日志你會(huì)發(fā)現(xiàn)沒(méi)有訪問(wèn)到的請(qǐng)求都是HTTP 503,訪問(wèn)到的都是HTTP 200.
使用這樣的設(shè)置對(duì)于想限制地區(qū)訪問(wèn)是很有幫助的,它也可以應(yīng)用在所有的php請(qǐng)求上.
PHP 應(yīng)用請(qǐng)求限制
如果你想限制所有的PHP應(yīng)用限制,你可以這樣做:
代碼如下:location ~ /.php {
limit_req zone=flood;
include php_params.conf;
fastcgi_pass unix:/tmp/php5-fpm.sock;
}
它可以幫你玩意些設(shè)置項(xiàng)像加速或減速,以應(yīng)對(duì)突發(fā)或無(wú)延時(shí)需求. 配置項(xiàng)詳情,猛擊這里: HttpLimitReqModule.
注:
你可能注意到上面的圖表測(cè)試了1075個(gè)用戶請(qǐng)求,這里有個(gè)誤導(dǎo),因?yàn)樗械脑L問(wèn)請(qǐng)求都來(lái)自與位于加州的同一個(gè)IP(50.18.0.223).
我很難實(shí)現(xiàn)一個(gè)真實(shí)的高流量網(wǎng)絡(luò)或者DDOS (分布式拒絕服務(wù)攻擊).這也就是為什么我們?cè)L問(wèn)成功的用戶的數(shù)量跟IP不是很大. 服務(wù)器負(fù)載也會(huì)影響測(cè)試用戶的訪問(wèn)數(shù)或者地區(qū). 使用免費(fèi)版本你可以最多并發(fā)訪問(wèn)到的用戶數(shù)是50個(gè). 當(dāng)然你可以花每天$49美刀讓1000個(gè)用戶訪問(wèn)你的網(wǎng)站.
新聞熱點(diǎn)
疑難解答
圖片精選