NGINX限制連線的實踐 (Defense DDOS)
分散式拒絕服務攻擊(英文意思是Distributed Denial of Service,簡稱DDoS)是指處於不同位置的多個攻擊者同時向一個或數個目標發動攻擊,或者一個攻擊者控制了位於不同位置的多臺機器並利用這些機器對受害者同時實施攻擊。由於攻擊的發出點是分佈在不同地方的,這類攻擊稱為分散式拒絕服務攻擊,其中的攻擊者可以有多個。NGINX: 限制連線的實踐 (Defense DDOS) |
關於限制使用者連線,Nginx 提供的模組: , 還有 stream 模組也包含類似的功能, 本文只說明 ngx_http_limit_req_module 的使用.
http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; ... server { ... limit_req zone=one burst=5; location /search/ { limit_req zone=one burst=5; } ... }
引數說明
$binary_remote_addr
: 二進位制遠端地址
zone=one:10m
: 定義zone名字叫one,併為這個zone分配10M記憶體,用來儲存會話(二進位制遠端地址),1m記憶體可以儲存16000會話
rate=10r/s
: 限制頻率為每秒10個請求
burst=5
: 允許超過頻率限制的請求數不多於5個,假設1、2、3、4秒請求為每秒9個,那麼第5秒內請求15個是允許的,反之,如果第一秒內請求15個,會將5個請求放到第二秒,第二秒內超過10的請求直接503,類似多秒內平均速率限制。
擬定這樣一個場景:
一次正常請求返回 50 個 HTML 頁面,總共用時10s。 如果在一個500人的場所中,單個客戶端 IP 發出的最大請求數會是: 500/10 * 500 = 2500.
所以,為了不影響正常使用者的訪問,我似乎只能做如下設定: rate=2500r/s. 顯然,這樣的設定是不合理的。
如何解決這個問題 ?
如果不是以 IP 作為記錄的標準,而是請求的 URI, 那麼問題就可以解決!
在
limite_req_zone key zone=name:size rate=rate
中的 key 設定為:
$remote_addr$uri
, 如下:
limit_req_zone "$remote_addr$uri" zone=one:10m rate=1r/s;
ab測試
ab -n 1000 -c 100
ps: 這個解決方式是一個萌萌噠的同事想出來的.
原文地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2736708/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 詳解nginx的請求限制(連線限制和請求限制)Nginx
- nginx如何限制併發連線請求數?Nginx
- nginx 限制使用者併發連線數Nginx
- Nginx解析漏洞復現以及哥斯拉連線Webshell實踐NginxWebshell
- iptables限制連線數(如sftp) 以及 謹防CC/DDOS攻擊的配置 ( connlimit模組)FTPMIT
- Ruby實踐—連線MysqlMySql
- MySql 限制連線程式數MySql線程
- nginx實踐Nginx
- Oracle連線檢視DML操作的限制Oracle
- nginx 長連線配置Nginx
- profile限制user連線session數Session
- 羅景:連線效率優化實踐優化
- Druid MySQL 連線池本地實踐UIMySql
- Nginx防止DDOS攻擊Nginx
- 異常連線之未授權連線,行為風險分析的有效實踐
- nginx連線資源管理Nginx
- SQL的外連線對內部表的限制SQL
- Windows TCP連線數限制解決WindowsTCP
- nginx限制流量Nginx
- 限制單個IP併發TCP連線的方法TCP
- 利用profile限制某使用者的連線數
- Tengine限制連線數和白名單功能
- Linux對外連線埠數限制Linux
- 基於Kali的一次DDos攻擊實踐
- nginx+lua(OpenResty),實現訪問限制NginxREST
- Nginx速度限制Nginx
- 限制單個IP併發TCP連線的方法(轉)TCP
- Linux下檢視Nginx的併發連線數和連線狀態LinuxNginx
- Nginx/Apache服務連線數梳理NginxApache
- Nginx入門實踐(二)Nginx
- DDoS 攻擊與防禦:從原理到實踐
- 遠端桌面會話連線限制操作步驟會話
- day64:nginx模組之限制連線&狀態監控&Location/用nginx+php跑專案/擴充套件應用節點NginxPHP套件
- Nginx上游伺服器長連線配置Nginx伺服器
- Nginx--進階篇(實踐)Nginx
- nginx從入門到實踐Nginx
- oracle透過trigger來限制使用者和ip連線資料庫的限制Oracle資料庫
- GBase 資料庫使用者的最大連線數限制資料庫