技術大咖秀 2019-11-08 13:27:19
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。上面兩種配置,注意看注釋,比較實用。