Nginx 限流常用模塊:限制併發和IP訪問頻率

Nginx 是我們常用的負載均衡和反向代理服務器,併發性能非常優秀。

但是在併發量極大的情況下,必要限流措施還是需要的,Nginx 的有對應的模塊插件可通過簡單配置來完成這個功能。


限制併發,限制ip併發數,也是說限制同一個ip同時連接服務器的數量。
1、添加limit_conn_zone
這個變量只能在http使用。
http{
...
#定義一個名爲one的limit_zone,大小10M內存來存儲session,
#以$binary_remote_addr 爲key
#nginx 1.18以後用limit_conn_zone替換了limit_conn
#且只能放在http作用域
limit_conn_zone $binary_remote_addr zone=one:10m;
2、添加limit_conn
這個變量可以在http, server, location使用。只限制一個站點,所以添加到server裏面。
server{
...
location {
...
limit_conn one 20; #連接數限制
#帶寬限制,對單個連接限數,如果一個ip兩個連接,就是500x2k
limit_rate 500k;
...
}
...
}
3、重啓Nginx。


限制IP訪問頻率
限制同一個ip在一段時間裏連接服務器的次數,可以一定程度上防止類似CC這種快速頻率請求的攻擊。
1、添加limit_req_zone
這個變量只能在http使用
http{
...
#定義一個名爲allips的limit_req_zone用來存儲session,大小是10M內存,
#以$binary_remote_addr 爲key,限制平均每秒的請求爲5個,
#1M能存儲16000個狀態,rete的值必須爲整數,
#如果限制兩秒鐘一個請求,可以設置成30r/m
limit_req_zone $binary_remote_addr zone=allips:10m rate=5r/s;
...
2、添加limit_req
這個變量可以在http, server, location使用。只限制一個站點,所以添加到server裏面。
3、重啓Nginx。
上面兩種配置,注意看註釋,比較實用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章