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

 

首先給出配置段:node

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指令nginx

  limit_rate開啓nginx限速功能,可配置在httpserverlocationif in location配置段。 limit_rate 500k表示限速500kB每秒,限速對象是單個鏈接,所以若是一個IP有多個鏈接的話,每一個鏈接都是限速500klimit_rate還有在特定狀況下開啓限速的功能。bash

limit_rate_afterlimit_rate配合使用表示在下載的文件大小達到設定數後開啓限速效果(逐漸降速)。一樣針對於單個鏈接。設定大小設置過小的話可能效果不許確。spa

 

2Module ngx_http_limit_conn_module 模塊server

  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版本以前叫blog

 

與如今有必定的差異。ip

 

3ngx_http_limit_req_module 模塊rem

   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錯誤。it

若是開啓nodelay,則超過rate=1r/s的請求直接返回503,再也不延遲處理。

 

相關文章
相關標籤/搜索