Nginx頻寬控制(限速模組使用)

2022-09-25 21:03:13 字數 1212 閱讀 8863

有個老專案,通過 squid 提供檔案**功能,利用 delay_parameters 實現頻寬控制,問題是我玩不轉 squid,於是盤算著是不是能在 nginx 裡找到類似的功能。

好訊息是 nginx 提供了 limit_r 和limit_rate_after,舉個例子來說明一下:

複製** **如下:

location /download/

大概意思是:使用者**達到 500k 後,便控制其速度在 50k 以內。

壞訊息是此控制是針對單個連線而言的。換言之,只能限制單個連線的頻寬,不能限制總頻寬。不過使用limit_conn 模組的話,可以在一定程度上緩解問題:

複製** **如下:

limit_conn_zone $server_name zone=servers:10m;

server

}通過 limit_conn 限制了併發連線數,於是也就限制了總頻寬。可惜這個解決方式並不完美,大家可以設想如下的例子:1000 個使用者能夠同時以 50k 的速度**;那麼在總頻寬不變的情況下,2000 個使用者是否能夠同時以 25k 的速度**?從業務的角度看,答案自然是肯定的,可實際上 limit_conn 和 limit_rate 不夠靈活,無法簡單實現此類邏輯。

當然,問題肯定有辦法解決。比如使用第三方模組:limit_speed;還可以使用 linux 內建的 tc 命令。limit_speed 比較簡單,不多說了,接下來我們就看看 tc 的用法吧:

複製** **如下:

shell> tc qdisc add dev eth0 root handle 1: htb default 10

shell> tc class add dev eth0 parent 1: classid 1:1 htb rate 10mbit

shell> tc filter add dev eth0 protocol ip parent 1:0 prio 1 \

u32 match ip dport 80 0xffff flowid 1:1

tc 複雜的讓人發瘋,請參考:linux advanced routing & traf程式設計客棧fic control howto。

本文介紹了多個 nginx 限制訪問方面的模組,實際上還有乙個 limit_req 模組也超讚,雖然和本文關係不大,但建議大家了解,具體可以參考「nginx li程式設計客棧mit_req限速設定」。

本文標題: nginx頻寬控制(限速模組使用)

本文位址:

nginx限速控制

nginx有兩種限速控制,一種是控制請求或連線數,一種是通過傳送位元組控制速度 1.通過傳送位元組控制速度,限制頻寬 nginx 提供了limit rate 和 limit rate after 詳情查詢nginx配置介紹 location download 限流的核心 針對於限流的url,返回的時...

Nginx模組 訪問控制

環境 centos7 nginx 1.16.0 nginx的訪問控制實現中存在如下兩種方式 基於ip的訪問控制 http access module 基於使用者的信任登入 http auth basic module 配置語法 與allow相反,即不允許 實踐 對配置檔案進行修改,儲存重啟nginx...

nginx 訪問控制模組

基於使用者的訪問控制模組 http access module 基於使用者登入信任的模組 有allow 對應的就有 deny 顯然,在http語境下或是在location語境下,產生控制的範圍是不一樣的 準備工作,從default.conf中複製乙份副本出來 命名為access mod.conf 對...