Nginx:Nginx limit_req limit_conn限速
簡介
- Nginx是一個異步框架的Web服務(wù)器,也可以用作反向代理,負(fù)載均衡器和HTTP緩存,最常用的便是Web服務(wù)器。nginx對于預(yù)防一些攻擊也是很有效的,例如CC攻擊,爬蟲,本文將介紹限制這些攻擊的方法,可以使用nginx的ngx_http_limit_conn_module、ngx_http_limit_req_module這兩個模塊達(dá)到目的,該模塊為nginx內(nèi)置模塊,yum安裝即有,無需編譯安裝。本文就介紹nginx這兩個模塊的使用和細(xì)節(jié),希望能夠?qū)π枰男』锇橛兴鶐椭?/li>
基本環(huán)境介紹
- 兩臺機器,192.168.30.105和192.168.30.106均為 1c2g40g配置,106主機提供web服務(wù),105主機部署ab工具。
web服務(wù)如下
ab壓測獲取基礎(chǔ)數(shù)據(jù)
105 ab壓測結(jié)果
對web服務(wù)器index.html頁面發(fā)送并發(fā)為1000總計1000000的請求測試,每個請求建立一個連接
ab -n 1000000 -c 1000 http://192.168.30.106:80/index.html
從測試結(jié)果來看,請求全部成功;有98%的請求在22ms以內(nèi)就完成響應(yīng),有99%的請求在1007ms以內(nèi)就完成響應(yīng),請求響應(yīng)的最長時長為31077ms。
nignx ngx_http_limit_conn_module模塊
- 該模塊的功能是限制單個ip建立連接的個數(shù)。
對nginx進行配置
http {limit_conn_zone $binary_remote_addr zone=one:10m;...server {...location / {limit_conn one 1;}限制每個ip連接的個數(shù)為一個
測試
對web服務(wù)器index.html頁面發(fā)送并發(fā)為1000總計1000000的請求測試
ab -n 1000000 -c 1000 http://192.168.30.106:80/index.html
從測試結(jié)果來看,請求全部成功;有98%的請求在58ms以內(nèi)就完成響應(yīng),有99%的請求在1008ms以內(nèi)就完成響應(yīng),請求響應(yīng)的最長時長為31870ms。
測試效果
測試結(jié)果無變化,查眾多文檔,有問題,無答案,估計是個bug。
nignx ngx_http_limit_req_module模塊
- 該模塊的功能是限制單個ip請求的個數(shù)(請求頻率)。
對nginx進行配置
去掉之前l(fā)imit_conn 配置,添加如下配置
http {limit_req_zone $binary_remote_addr zone=two:10m rate=1r/s;...server {...location / {limit_req zone=two;}限制請求的頻率為單個ip每秒一個
測試
對web服務(wù)器index.html頁面發(fā)送并發(fā)為1000總計1000000的請求測試
ab -n 1000000 -c 1000 http://192.168.30.106:80/index.html
從測試結(jié)果來看,請求只有55個成功。
測試效果
有效的阻止了用戶的請求。
測試過程web服務(wù)資源使用情況監(jiān)控
CPU利用
網(wǎng)絡(luò)接口流量
TCP連接數(shù)狀態(tài)
總結(jié)
- 從測試的結(jié)果以及監(jiān)控數(shù)據(jù)來看,limit_conn模塊無效,不能起到任何限制作用;limit_req模塊能夠明顯限制用戶的請求內(nèi)容,對于超出限制的請求,給予503的反饋;兩者對服務(wù)器性能上都沒有優(yōu)化作用,拒絕的請求需要花費更多的硬件資源來處理,CPU消耗增多,接口流出的流量劇增。
- 測試結(jié)果不是很理想,對于文中的錯誤和不足,歡迎有見識的小伙伴批評指教。
參考文檔
- 官方文檔:http://nginx.org/en/docs
- 使用nginx limit_req限制用戶請求速率:https://www.centos.bz/2017/03/using-nginx-limit_req-limit-user-request-rate
- 關(guān)于limit_req和limit_conn的區(qū)別:https://blog.csdn.net/u012566181/article/details/49968283
- ab壓力測試報錯:https://www.cnblogs.com/felixzh/p/8295471.html
- ab性能測試結(jié)果分析:https://www.cnblogs.com/gumuzi/p/5617232.html
- Rate Limiting with NGINX and NGINX Plus:https://www.nginx.com/blog/rate-limiting-nginx/
轉(zhuǎn)載于:https://www.cnblogs.com/William-Guozi/p/nginx_limit.html
總結(jié)
以上是生活随笔為你收集整理的Nginx:Nginx limit_req limit_conn限速的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个女生拍照连脸都不拍就拍帽子还遮住脸,
- 下一篇: 使用Nginx+uWSGI部署Djang