最近開發一種二類醫療裝置
阿新 • • 發佈:2020-10-22
Nginx提供了兩種限流手段:一是控制速率,二是控制併發連線數。
1.控制速率
使用limit_req_zone來限制單位時間內的請求數,即速率限制,示例配置如下:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s; server { location / { limit_req zone=mylimit; } }
以上配置表示,限制每個IP訪問的速度為2r/s,因為Nginx的限流統計是基於毫秒的,我們設定的速度是2r/s,轉換一下就是500ms內單個IP只允許通過1個請求,從501ms開始才允許通過第2個請求。
速率限制允許突發burst:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s; server { location / { limit_req zone=mylimit burst=4; } }
burst=4表示每個IP最多允許4個突發請求。
2.控制併發連線數
利用limit_conn_zone和limit_conn兩個指令即可控制併發數,示例配置如下:
limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; server { ... limit_conn perip 10; limit_conn perserver 100; }
其中limit_conn perip 10表示限制單個IP同時最多能持有10個連線;limit_conn perserver 100表示server同時能處理併發連線的總數為100個。
PS:只有當request header被後端處理後,這個連線才進行計數。