天天看點

nginx限制ip通路_Nginx 限流常用子產品:限制并發和IP通路頻率

技術大咖秀 2019-11-08 13:27:19

Nginx 是我們常用的負載均衡和反向代理伺服器,并發性能非常優秀。但是在并發量極大的情況下,必要限流措施還是需要的,Nginx 的有對應的子產品插件可通過簡單配置來完成這個功能。

nginx限制ip通路_Nginx 限流常用子產品:限制并發和IP通路頻率

限制并發

限制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。

上面兩種配置,注意看注釋,比較實用。