Nginx限速详解
限速相關的模塊以及使用
- 記錄下nginx 限速相關的模塊以及使用
- ngx_http_limit_req_module
- ngx_http_limit_conn_module
- ngx_http_core_module
- 白名單使用
記錄下nginx 限速相關的模塊以及使用
nginx 一共有3個限速相關模塊,分別是
1:ngx_http_limit_req_module
2:ngx_http_limit_conn_module
3:Module ngx_http_core_module
3個模塊都默認編譯到nginx 核心模塊里,自定義編譯nginx 需要查看是否有編譯
ngx_http_limit_req_module
一句話:限制請求的速率
詳細解析:ngx_http_limit_req_module模塊(0.7.21)用于限制每一個定義的 key 的請求的處理速率,特別是從一個單一的IP地址的請求的處理速率。使用“泄漏桶”方法可以完成此限制。
句法: limit_req zone=name [burst=number] [nodelay | delay=number];
默認: 不限制
語境: http,server,location
示例
http {#這個必須在http里定義,定義一個以 binary_remote_addr 為key 名字為perip_req 的內存空間 漏斗速度每秒30個請求,速度需要整數,要2s/r 則用30r/mlimit_req_zone $binary_remote_addr zone=perip_req:10m rate=30r/s;#這里可以定義一個以服務器為key 的總速度 limit_req_zone $server_name zone=perserver_req:10m rate=1000r/s; ...server {...#僅對php鏈接進行限制location ~ \.php$ {#同一ip限制速度10個每秒 緩沖池為10,這個burst 是對應ip的,nodelay 是指及時處理緩沖池的鏈接,沒有緩沖池會按規定速度處理limit_req zone=perip_req burst=500 nodelay;limit_req zone=perserver_req burst=5000 nodelay;}} }官網鏈接:ngx_http_limit_req_module詳細說明
ngx_http_limit_conn_module
一句話:限制請求的并發,有點這個沒有上面的靈活,不能設置緩沖池
詳細解析:ngx_http_limit_conn_module模塊用于限制每個定義的鍵的連接數,特別是來自單個IP地址的連接數。
并非所有連接都被計數。僅當連接具有服務器正在處理的請求并且已經讀取了整個請求標頭時,才對連接進行計數。
句法: limit_conn zone number;
默認: 不限制
語境: http,server,location
示例
http { #這里注意不要跟其他限速模塊定義重名limit_conn_zone $binary_remote_addr zone=perip_con:10m;limit_conn_zone $server_name zone=perserver_con:10m;...serve {...location / download / {limit_conn perip_con 1; #限制客戶端相同ip并發為1limit_conn perserver_con 100; #限制服務器總并發為100}} }官網鏈接:ngx_http_limit_conn_module詳細說明
ngx_http_core_module
一句話:限制請求的帶寬,一般用于文件下載限制
示例
http {limit_conn_zone $binary_remote_address zone=perip:10m...server {...location /download/ {# 限制每個IP只能建立一個連接limit_conn perip 1;# 當請求的流量超500KB后進行限速limit_rate_after 500k;# 限速 50KB/slimit_rate 50k;}} }官網鏈接:ngx_http_core_module詳細說明
白名單使用
http {geo $whiteiplist {default 1;127.0.0.1 0;10.0.0.0/8 0;121.207.242.0/24 0;}map $whiteiplist $limit {1 $binary_remote_addr;0 "";}limit_conn_zone $limit zone=limit:10m;server {listen 8080;server_name test.ttlsa.com;location ^~ /ttlsa.com/ {limit_conn limit 4;limit_rate 200k;alias /data/www.ttlsa.com/data/download/;}} }解析:
參考:https://blog.csdn.net/weixin_34101784/article/details/92620011
總結
- 上一篇: gae mysql_国内几大云服务引擎
- 下一篇: android适配器