Nginx 配置對流量、連接和請求的限制


 

首先給出配置段:

http {

    limit_conn_zone $binary_remote_addr zone=one:10m;

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

    ...

    server {

    ...

        location /download/ {

         limit_rate 500k;

         limit_rate_after 50m;

         limit_conn one 1;

       limit_req zone=one burst=5;
    }

  ... }

  

 

1limit_rate指令

  limit_rate開啟nginx限速功能,可配置在httpserverlocationif in location配置段。 limit_rate 500k表示限速500kB每秒,限速對象是單個連接,因此如果一個IP有多個連接的話,每個連接都是限速500klimit_rate還有在特定情況下開啟限速的功能。

limit_rate_afterlimit_rate配合使用表示在下載的文件大小達到設定數后開啟限速效果(逐漸降速)。同樣針對於單個連接。設定大小設置太小的話可能效果不准確。

 

2Module ngx_http_limit_conn_module 模塊

  limit_conn_zone $binary_remote_addr zone=one:10m模塊開啟對單個ip、單個會話同時存在的連接數的限制。這里定義一個記錄區oneone的總容量是10m,該記錄區針對於變量 $binary_remote_add生效,這里是針對單個IP生效。該模塊只是一個定義,配置在http配置段,需要配合limit_conn指令使用才生效, limit_conn one 1表示該location段使用one定義的 limit_conn_zone ,對單個IP限制同時存在一個連接。

PSlimit_conn_zone0.8版本之前叫

 

與現在有一定的差別。

 

3ngx_http_limit_req_module 模塊

   limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s模塊開啟對單個ip、單個會話在單位時間內請求的限制。這里zonelimit_conn_zone模塊一樣,rate表示限制的速率,1r/s表示一秒之內最多1次請求,也可以用5r/m,表示一分鍾之內最多5次請求。limit_req_zone同樣配置在http配置段。與limit_req指令配合使用才生效。limit_req zone=one burst=5表示該location段使用one定義的limit_req_zone,如果請求數超過 rate=1r/s,剩下的請求將被延遲處理,如果請求數超過burst定義的數量,多余的請求則直接返回503錯誤。

如果開啟nodelay,則超過rate=1r/s的請求直接返回503,不再延遲處理。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM