nginx帶寬限制 limit_rate limit_rate_after指令
目錄
- 知識(shí)梳理
- limit_rate_after 指令
- limit_rate 指令
- 實(shí)驗(yàn)
- 配置傳輸速度為 1k
- 配置下載50m后開(kāi)始限制傳輸速度
- 我遇到的坑
- 總結(jié)
知識(shí)梳理
在高負(fù)載的網(wǎng)絡(luò)環(huán)境下,為了保持服務(wù)的穩(wěn)定性,限速 (download rate) 是一種必要的控制訪問(wèn)量的手段。Nginx 是一款高性能的 Web 服務(wù)器和反向代理服務(wù)器,可以使用 limit_rate_after 和 limit_rate 兩個(gè)主要指令來(lái)完成流量控制和限速。
limit_rate_after 指令
指令 limit_rate_after 會(huì)在客戶端成功建立連接之后,指定的大小后開(kāi)始限制發(fā)送速度。這個(gè)指令的含義就是在連接建立后的 limit_rate_after 大小之后,數(shù)據(jù)發(fā)送速率將被限制。
以下是limit_rate_after 的語(yǔ)法和示例:
Syntax: limit_rate_after size;Default: limit_rate_after 0;Context: http, server, location, if in location
limit_rate_after 50m;
這個(gè)指令可以幫助您限制連接的初始流量,以便于服務(wù)器的帶寬資源分配更為合理。
limit_rate 指令
limit_rate 指令是用來(lái)控制發(fā)送至客戶端的數(shù)據(jù)傳輸速度的,它可以限制整個(gè)連接的流量,也可以限制單個(gè)客戶端訪問(wèn)速度。
以下是 limit_rate 的語(yǔ)法和示例:
syntax: limit_rate rate;default: —context: http, server, location
limit_rate 1k;
這個(gè)配置的作用是:在與客戶端建立連接之后的 10 秒內(nèi),限制每秒發(fā)送的數(shù)據(jù)量不超過(guò) 50kB;之后如果連接仍然打開(kāi),則限制與該客戶端的速率為 50kB/s。
需要提醒的一點(diǎn)是,盡管 limit_rate 可以一定程度上保護(hù)服務(wù)器資源,但是并不足以完全阻止惡意飽和攻擊。因此,在考慮流量控制和限速的同時(shí),還應(yīng)該結(jié)合其他安全和防護(hù)機(jī)制來(lái)更好地保護(hù)服務(wù)器。
實(shí)驗(yàn)
配置傳輸速度為 1k
- nginx配置
location / { limit_rate 1k; root html;}
在瀏覽器輸入 http://192.168.91.134/portal.tar
下載 portal.tar 文件 可以看到下載速度在 1k 以內(nèi)
配置下載50m后開(kāi)始限制傳輸速度
- nginx配置
location / { limit_rate_after 50m; limit_rate 1k; root html;}
- 在瀏覽器輸入
http://192.168.91.134/portal.tar
下載 portal.tar 文件
可以看到開(kāi)始下載速度很快
在下載50m后,速度限制在1k以內(nèi)
我遇到的坑
- 訪問(wèn)
http://192.168.91.134/portal.tar
報(bào)403
因?yàn)槲业膒ortal.tar文件沒(méi)有讀的權(quán)限,導(dǎo)致瀏覽器下載報(bào)403,使用 chmod 755 portal.tar
修改portal.tar文件的權(quán)限,如下圖:
總結(jié)
Nginx 的限速功能對(duì)于控制訪問(wèn)量、防止惡意攻擊具有很高的研究?jī)r(jià)值和實(shí)際意義。limit_rate 和 limit_rate_after 是 Nginx 常見(jiàn)的兩個(gè)限速指令,它們可以配置在 http、server、location 等區(qū)塊中,實(shí)現(xiàn)不同級(jí)別的流量限制和控制。一般情況下為了取得更好的限速效果,我們會(huì)同時(shí)使用兩個(gè)指令,通過(guò)多事件流的限速進(jìn)行靈活的控制。
希望這篇文章能夠?qū)?Nginx 限速功能有更深入的理解,幫助開(kāi)發(fā)者在實(shí)際的生產(chǎn)環(huán)境中使用它來(lái)進(jìn)行更好的流量控制和管理。
參考
以上就是nginx帶寬限制 limit_rate limit_rate_after指令的詳細(xì)內(nèi)容,更多關(guān)于nginx帶寬限制指令的資料請(qǐng)關(guān)注其它相關(guān)文章!
