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