LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

nginx正向和反向代理服務器中限制http請求速率設置

admin
2025年6月28日 22:23 本文熱度 269

ngx_http_limit_req_module

ngx_http_limit_req_module模塊按照定義的key值限制請求處理速率,特別是對來自單個IP請求的速率限制。

limit_req_zone指令

  1. 按key設置一塊共享內存存儲狀態信息、超限請求數量;key可以包含文本、變量、文本和變量的組合。如果請求中的key為空不會計算到請求數量中。
  2. limit_req_zone指令只能設置在http塊中。
  3. 語法:limit_req_zone key zone=name:size rate=rate [sync];
  4. 例:limit_req_zone $binary_remote_addr zone=one:10m rate=3r/s;
    • $binary_remote_addr將客戶端IP設置為key(按客戶端IP限制速率)。
    • zone=one:10m表示區域命名為one,10m內存空間;如果10m空間用完,按最近最少使用原則移除狀態數據,如果空間仍然不夠就拒絕處理新請求(返回503)。
    • rate=3r/s表示速率為每秒3個請求,單位r/s表示每秒請求數,如果要設置的速率小于1r/s,可以使用r/m單位,表示每分鐘請求數。
    • sync用于集群節點間的共享內存數據同步,這里不介紹。

    limit_req指令

    1. limit_req指令用于限制請求速率。
    2. limit_req會設置一塊內存區域用于實現/管理速率限制,可以給這塊內存設置區域名、空間大小、速率、瞬間最大請求量。
    3. 如果請求速率超過設置,nginx會按設置的速率平滑處理請求(將一些請求延遲處理以達到設置速率)。
    4. 超過瞬間最大請求量以前的請求會被延遲處理,而超過瞬間最大請求量的請求不會被處理,直接返回錯誤狀態碼為503,可以用limit_req_status指令自定義錯誤狀態碼。
    5. 瞬間最大請求量默認值為0。
    6. 語法:limit_req zone=name [burst=number] [nodelay | delay=number];
      • zone=name設置區域名。
      • burst=number設置瞬間最大請求量。
      • nodelay表示不延遲處理請求。
      • delay=number表示延遲處理的請求數量,默認值為0,即所有超過速率限制的請求都會被延遲。
        7. 只有當前配置塊(級別)沒有設置limit_req指令時,才會從上一個配置塊繼承配置。
        8. limit_req指令可以設置多個,如以下配置:限制同個客戶端IP的請求速率,同時也限制虛擬主機的請求速率。
      server {
          ...
          limit_req zone=perip burst=5 nodelay;
          limit_req zone=perserver burst=10;
      }

      limit_req_statu指令

      設置拒絕處理的狀態碼,默認值為503 語法:limit_req_status code;可配置塊:http, server, location

      limit_req_log_level指令

      1. 設置拒絕處理和延遲處理的日志級別,延遲處理級別比拒絕處理級別低一級,如imit_req_log_level notice表示拒絕處理為notice級,延遲處理低一級為info。 

      2. 語法 :limit_req_log_level info | notice | warn | error;默認日志級別:error 可配置塊:http, server, location

      測試

      測試1. 限制同一IP每秒3個請求,nginx配置:

      limit_req_zone $binary_remote_addr zone=one:10m rate=3r/s;

      server {
          listen       80;
          server_name  xxx.xxx.xxx.xxx;


          location / {
              # 限制速率
              limit_req zone=one;
              root   html;
              index  index.html index.htm;
          }
      }

      1秒鐘內啟動10個請求,因為速率限制為3r/s,3個請求正常響應,7個請求返回503:



      測試2. 限制同一IP每秒1個請求,瞬間最大請求量為5:
      # 方便查看limit_req限制效果
      log_format main '$time_local,$request,$status,limit_req_status=$limit_req_status';

      access_log /usr/local/nginx/logs/access.log main;


      limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

      server {
          listen       80;
          server_name  xxx.xxx.xxx.xxx;

            
          location /download/ {
           alias /var/www/images/;
           limit_req zone=one burst=5 nodelay;
          }
      }

      本機同時啟動15個請求ab -n 15 -c 15 http://127.0.0.1/download/1.jpg,因為本機發起的請求能夠第一時間到達nginx服務,客戶端jmeter測試可能因網絡原因有延遲。速率為1r/s,允許瞬間最大請求5(burst)無延遲處理,15個請求中6個處理成功,9個錯誤返回503,如下圖:


      閱讀原文:原文鏈接


      該文章在 2025/7/1 23:45:05 編輯過
      關鍵字查詢
      相關文章
      正在查詢...
      點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
      點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
      點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
      點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
      Copyright 2010-2025 ClickSun All Rights Reserved

      黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
      最新AV免费在线观看 | 在线不卡长片AV | 亚洲综合楼国产 | 思思99热九九在线播放 | 一本在线视频观看免费 | 亚洲午夜国内自产拍在线观看 |