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

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

 

首先給出配置段:html

1node

2nginx

3spa

43d

5code

6server

7htm

8對象

9blog

10

11

12

13

14

15

16

17

18

19

20

21

22

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;<br>    }<br><br>  ...

}

  

 

一、 limit_rate指令

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

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

 

二、Module ngx_http_limit_conn_module 模塊

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

PS:limit_conn_zone0.8版本以前叫

 

與如今有必定的差異。

 

三、ngx_http_limit_req_module 模塊

   limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s模塊開啓對單個ip、單個會話在單位時間內請求的限制。這裏zone和limit_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,再也不延遲處理。

 

相關文章
相關標籤/搜索