nginx限流配置

說明:此處nginx的安裝略,主要做一下nginx常用限流配置內容。限流方式主要有以下兩種,安裝選其中一種即可。

 一、單位時間訪問限流QPS:

說明: 使用nginx的 ngx_http_limit_req_module模塊進行限制的,使用limit_req和limit_req_zone命令來設置;

nginx.conf配置文件下編輯:
1.http模塊下添加:

limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=10r/s;


命令語法:limit_req_zone  key  zone  rate
key:定義限流對象, binary_remote_addr,是基於 remote_addr(客戶端IP) 來做限流,binary_ 開頭的目的是壓縮內存佔用量

zone: 定義共享內存區來存儲訪問信息, ip_limit:10m表示一個大小爲10M,名字爲ip_limit的內存區域。1M能存儲16000 IP地址的訪問信息,10M可以存儲16W IP地址訪問信息

rate: 用於設置最大訪問速率,rate=10r/s 表示每秒最多處理10個請求。Nginx 實際上以毫秒爲粒度來跟蹤請求信息,因此 10r/s 實際上是限制:每100毫秒處理兩個請求。這意味着,自上一個請求處理完後,若後續100毫秒內又有請求到達,將拒絕處理該請求。

2.location模塊下添加

limit_req zone=ip_limit burst=15 nodelay;

說明:

zone=ip_limit對應上面的限流對象地址;

bursrt=15表示最大支持15的併發,會有5個請求存在隊列中,不會被拒絕;

nodelay: 表示併發超出的5個請求,不會被延遲,會被立即執行,如需等待執行的話,配置delay即可。

 

 

二、限制併發連接數

說明:使用nginx的ngx_http_limit_conn_module模塊進行限制的,涉及命令limit_conn_zone 和 limit_conn;

limit_conn perip 10:對應的key是 $binary_remote_addr,表示限制單個IP同時最多能持有10個連接。

limit_conn perserver 1000:對應的key是 $server_name,表示虛擬主機(server) 同時能處理併發連接的總數,即該服務能承受的最大併發數。

注意,只有當 request header 被後端server處理後,這個連接才進行計數。

 

 

 

參考文章:https://baijiahao.baidu.com/s?id=1634400719648980722&wfr=spider&for=pc

 

 

 

 

 

 

 

發佈了26 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章