国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

Nginx帶寬控制(限速模塊使用)

2024-08-30 12:26:43
字體:
來源:轉載
供稿:網友

有個老項目,通過 Squid 提供文件下載功能,利用 delay_parameters 實現帶寬控制,問題是我玩不轉 Squid,于是盤算著是不是能在 Nginx 里找到類似的功能。


好消息是 Nginx 提供了 limit_rate 和limit_rate_after,舉個例子來說明一下:
代碼如下:
location /download/ {
    limit_rate_after 500k;
    limit_rate 50k;
}

大概意思是:用戶下載達到 500k 后,便控制其速度在 50k 以內。

壞消息是此控制是針對單個連接而言的。換言之,只能限制單個連接的帶寬,不能限制總帶寬。不過使用limit_conn 模塊的話,可以在一定程度上緩解問題:
代碼如下:
limit_conn_zone $server_name zone=servers:10m;

server {
    location /download/ {
        limit_conn servers 1000;
        limit_rate_after 500k;
        limit_rate 50k;
    }
}

通過 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 & Traffic Control HOWTO。

本文介紹了多個 Nginx 限制訪問方面的模塊,實際上還有一個 limit_req 模塊也超贊,雖然和本文關系不大,但建議大家了解,具體可以參考「nginx limit_req限速設置」。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥中县| 松原市| 平舆县| 桐梓县| 韶关市| 元阳县| 芜湖市| 桂阳县| 科技| 邳州市| 通山县| 随州市| 菏泽市| 武城县| 封丘县| 固阳县| 哈巴河县| 华容县| 芮城县| 宝兴县| 阿克陶县| 蓬莱市| 弥勒县| 扎囊县| 衡水市| 清流县| 华阴市| 江门市| 监利县| 东源县| 荥经县| 张家港市| 潮安县| 鄂尔多斯市| 平山县| 德保县| 鄂托克旗| 连平县| 华宁县| 红桥区| 星座|