国产成人毛片毛片久久网_国产午夜激无码av毛片不_国产乱对白精彩在线播放_av资源站中文字幕_亚洲男人的天堂网站_国产成 人 综合 亚洲网_中国国产激情一区_少妇一级淫片免费放_亚洲一本大道av久在线播放_免费观看美女裸体网站

行業(yè)動態(tài)

防御吧作為15年知名老牌域名服務(wù)商,CNNIC和CANN雙認證域名注冊商,已經(jīng)
持續(xù)為500多萬個域名提供服務(wù),包括智能DNS/自由轉(zhuǎn)移/隱私保護等服務(wù)!
網(wǎng)站nginx配置限制單個IP訪問頻率,預(yù)防DDOS惡意攻擊
2022-05-05 14:10:02 【

對于網(wǎng)站來說,尤其是流量較大出名的網(wǎng)站,經(jīng)常遇到攻擊,如DDOS攻擊等,雖然有些第三方,如Cloudflare可以擋,但對于動態(tài)網(wǎng)站PHP來說,只能擋一部分。這時候需要對于單個IP惡意攻擊做出限流。nginx的兩個模塊可以限流。

nginx兩個限流模塊:

連接頻率限制,

二、兩者模塊區(qū)別

首先理解請求和連接,HTTP請求建立在一次TCP連接基礎(chǔ)上, 一次TCP連接至少產(chǎn)生一次HTTP請求(1次或多次)

網(wǎng)上理論很多,根據(jù)名字可知:

  • connection是連接,即常說的tcp連接,通過三次握手而建立的一個完整狀態(tài)機。建立一個連接,必須要三次握手。

  • request是指請求,即http請求,tcp連接是有狀態(tài)的,而構(gòu)建在tcp之上的http卻是無狀態(tài)的協(xié)議。

當(dāng)然還是看不懂的話,通俗點講(相對于時間比較):

  • limit_req_zone,在 有限的時間 內(nèi)限制,單個IP每秒或者每分鐘只能發(fā)出多少請求。多的一概不理會。

  • limit_conn_zone, 不限時間 ,只允許單個IP這么多個連接,或者稱為并發(fā)。如:設(shè)置10個連接,第11個連接時,必須等前面有一個已經(jīng)完成或者釋放后,這個連接才能允許。

比如秒殺,搶購,連接頻率限制和請求頻率限制應(yīng)該配合使用 , 使用連接頻率限制同一IP同時只能有3個連接, 再使用請求頻率限制對于同一ip的請求,限制平均速率為5個請求/秒 , 這樣比單獨只使用一種限制要好很多。

比如只使用請求頻率限制 , 可以精確地限制同一ip1秒只能發(fā)起5次的http請求 , 假如同一ip1秒內(nèi)發(fā)起了100000次請求 , 雖然限制了只有5次成功響應(yīng) , 但是其他的99995次的請求TCP握手建立http連接是不是會消耗服務(wù)器資源? 所以還需要配合使用。

三、配置

1、limit_req_zone,示例:

http{    limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;    #定義一個名為allips的limit_req_zone用來存儲session,大小是10M內(nèi)存,    #以$binary_remote_addr 為key,限制平均每秒的請求為20個,    #1M能存儲16000個狀態(tài),rete的值必須為整數(shù),    #如果限制兩秒鐘一個請求,可以設(shè)置成30r/m    server{        location / {            #限制每ip每秒不超過20個請求,漏桶數(shù)burst為5            #brust的意思就是,如果第1秒、2,3,4秒請求為19個,            #第5秒的請求為25個是被允許的。            #但是如果你第1秒就25個請求,第2秒超過20的請求返回503錯誤。            #nodelay,如果不設(shè)置該選項,嚴(yán)格使用平均速率限制請求數(shù),            #第1秒25個請求時,5個請求放到第2秒執(zhí)行,            #設(shè)置nodelay,25個請求將在第1秒執(zhí)行。            limit_req zone=allips burst=5 nodelay;        }    }}

2、limit_conn_zone,示例:

http {     limit_conn_zone $binary_remote_addr zone=addr:10m;     #定義一個名為addr的limit_req_zone用來存儲session,大小是10M內(nèi)存,    #以$binary_remote_addr 為key     #nginx 1.18以后用limit_conn_zone替換了limit_conn,    #且只能放在http{}代碼段.    server {         location / {             limit_conn addr 10;   #連接數(shù)限制,并發(fā)數(shù)            #設(shè)置給定鍵值的共享內(nèi)存區(qū)域和允許的最大連接數(shù)。超出此限制時,服務(wù)器將返回503(服務(wù)臨時不可用)錯誤.       #如果區(qū)域存儲空間不足,服務(wù)器將返回503(服務(wù)臨時不可用)錯誤        }    }} 

3、搭配一起使用

http {    ...    ...    limit_req_zone $binary_remote_addr zone=req_zone:1m rate=20r/s;    #限制連接請求設(shè)置,訪問內(nèi)存10M,所有訪問ip 限制每秒10個請求    limit_conn_zone $binary_remote_addr zone=addr:10m;    #限制連接IP設(shè)置    ...    ...    server {        listen       80;        server_name  ywbj.cc;        location / {            ...                        limit_req zone=req_zone burst=5 nodelay;            limit_conn addr 5;                       ...        }    }}

四、壓力測試工具

1、ab命令

ab是apache自帶的壓力測試工具。一般不用額外安裝,ab非常實用,它不僅可以對apache服務(wù)器進行網(wǎng)站訪問壓力測試,也可以對或其它類型的服務(wù)器進行壓力測試。比如nginx、tomcat、IIS等。

測試命令

ab -c 10 -n 100 https://ywbj.cc/#-c10表示并發(fā)用戶數(shù)為10#-n100表示請求總數(shù)為100


2、wrk命令

需自己安裝,地址:https://github.com/wg/wrk

安裝

git clone git@github.com:wg/wrk.git#或者自己下載解壓cd wrk#進入目錄make#make編譯后在目錄可使用wrk命令,先安裝make,unzip這些工具。

測試命令:

wrk -t12 -c100 -d30s https://ywbj.cc#12線程,100連接,30s時間

還有其他壓測工具,自行研究


】【打印關(guān)閉】 【返回頂部
分享到QQ空間
分享到: 
上一篇網(wǎng)絡(luò)安全 滲透測試思路總結(jié) 下一篇微服務(wù)架構(gòu)的安全如何保證?

立足首都,輻射全球,防御吧專注云防御及云計算服務(wù)15年!

聯(lián)系我們

服務(wù)熱線:13051179500 18910191973
企業(yè)QQ:1245940436
技術(shù)支持:010-56159998
E-Mail:xihedata.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解決防御與加速) 版權(quán)所有 增值許可:京B2-20140042號
售前咨詢
公司總機:18910191973
24小時電話:010-56159998
投訴電話:18910191973
值班售后/技術(shù)支持
售后服務(wù)/財務(wù)
備案專員
緊急電話:18610088800