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解析漏洞復現以及哥斯拉連線Webshell實踐NginxWebshell
- Druid MySQL 連線池本地實踐UIMySql
- 羅景:連線效率優化實踐優化
- nginx連線資源管理Nginx
- 限制單個IP併發TCP連線的方法TCP
- Nginx防止DDOS攻擊Nginx
- nginx+lua(OpenResty),實現訪問限制NginxREST
- WMI Defense
- 異常連線之未授權連線,行為風險分析的有效實踐
- Nginx速度限制Nginx
- 基於Kali的一次DDos攻擊實踐
- Nginx入門實踐(二)Nginx
- GBase 資料庫使用者的最大連線數限制資料庫
- day64:nginx模組之限制連線&狀態監控&Location/用nginx+php跑專案/擴充套件應用節點NginxPHP套件
- Nginx Ingress 高併發實踐Nginx
- Nginx--進階篇(實踐)Nginx
- Nginx上游伺服器長連線配置Nginx伺服器
- DDoS 攻擊與防禦:從原理到實踐
- Node.js 服務連線 MongoDB 處理最佳實踐Node.jsMongoDB
- Ingress-nginx工作原理和實踐Nginx
- 化虹為橋 - Nginx 如何代理 UDP “連線”NginxUDP
- H. The Most Reckless Defense
- MQTT 客戶端自動重連實踐|構建可靠 IoT 裝置連線MQQT客戶端
- [JM_08]JMeter連線Mysql資料庫測試實踐JMeterMySql資料庫
- Linux apache怎麼限制併發連線和下載速度LinuxApache
- Python 連結串列實踐Python
- Nginx 動態發現方案與實踐Nginx
- 簡單實踐搭建 nginx 負載均衡Nginx負載
- 在 NGINX 中根據使用者真實 IP 進行限制Nginx
- 宙斯盾 DDoS 防護系統“降本增效”的雲原生實踐
- MQTT 客戶端自動重連最佳實踐|構建可靠 IoT 裝置連線MQQT客戶端
- nginx根據token做頻率限制Nginx
- .NET雲原生應用實踐(三):連線到PostgreSQL資料庫SQL資料庫
- 實踐案例丨雲連線CC實現跨區域多VPC與線下IDC Server互聯Server
- Swoole MySQL 連線池的實現MySql
- mysql的jdbc連線java實現MySqlJDBCJava