限流保護——nginx限流模塊


1.限制請求次數——limit_req_zone模塊

  a.意義:limit_req_zone 表示限制單位時間內的請求數,即速率限制,采用的漏桶算法

  a.在 conf/nginx.conf 配置文件中添加

http {

    ......

    #限制請求次數參數
    limit_req_zone $binary_remote_addr zone=one:10m rate=5r/m;

    ......

    server {

        ......

        location /printProducer {

            ......

            #限制請求次數
            limit_req zone=one burst=10 nodelay;
            #自定義返回碼
            limit_req_status 598;

            ......

        }

 

  b.參數說明:

    $binary_remote_addr:表示通過remote_addr這個標識來限制同一客戶端ip請求數

    zone=one:10m:表示生成一個大小為10M,名字為one的內存區域,用來存儲訪問的頻次信息

    rate=5r/m:表示允許相同標識的客戶端的訪問頻次,這里限制的是每秒1次,還可以有比如1r/s

    zone=one:表示使用哪個配置區域來做限制,與上面 limit_req_zone 里的name對應

    burst=5:表示設置一個大小為5的緩沖區當有大量請求(爆發)過來時,超過了訪問頻次限制的請求可以先放到這個緩沖區內

    nodelay:如果設置,超過訪問頻次而且緩沖區也滿了的時候就會直接返回503,如果沒有設置,則所有請求會等待排隊

    limit_req_status 598:設置拒絕請求的返回值。值只能設置 400 到 599 之間(默認是503)

 

 

2.限制下載速度

  a.在 conf/nginx.conf 配置文件中添加

http {

    ......

    server {

        ......

        location /download{

            ......

            #不限速閾值
            limit_rate_after 10m;
            #超過閾值限制速度
            limit_rate 10k;

            ......

        }

 

  b.參數說明:

    limit_rate_after 10m:表示前 10m 大小時不限速

    limit_rate 10k:表示超過 limit_rate_after 后以 10kb/s 限速

 

 

3.參考文章:

  https://www.cnblogs.com/biglittleant/p/8979915.html

  https://my.oschina.net/gaga/blog/495444

 


免責聲明!

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



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