日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Nginx 下载限速

發(fā)布時間:2024/5/7 Nginx 180 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nginx 下载限速 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、限速介紹

在生產(chǎn)環(huán)境中,為了保護(hù)WEB服務(wù)器的安全,我們都會對用戶的訪問做出一些限制,保證服務(wù)器的安全及資源的合理分配。

限流(rate limiting)是NGINX眾多特性中最有用的,也是經(jīng)常容易被誤解和錯誤配置的,特性之一訪問請求限速。

該特性可以限制某個用戶在一個給定時間段內(nèi)能夠產(chǎn)生的HTTP請求數(shù)。

請求可以簡單到就是一個對于主頁的GET請求或者一個登陸表格的POST請求。

用于安全目的上,比如減慢暴力密碼破解攻擊。通過限制進(jìn)來的請求速率,并且(結(jié)合日志)標(biāo)記出目標(biāo)URLs來幫助防范DDoS攻擊。

一般地說,限流是用在保護(hù)上游應(yīng)用服務(wù)器不被在同一時刻的大量用戶請求湮沒。

限速說的很籠統(tǒng),其實限速分為很多種限速方法:

1)下載速度限速

2)單位時間內(nèi)請求數(shù)限制

3)基于客戶端的并發(fā)連接限速

nginx限速模塊

Nginx官方版本限制IP的連接和并發(fā)分別有兩個模塊:

limit_req_zone 用來限制單位時間內(nèi)的請求數(shù),即速率限制,采用的漏桶算法 “l(fā)eaky bucket”。

limit_req_conn 用來限制同一時間連接數(shù),即并發(fā)限制。

二、應(yīng)用場景

下載限速:限制現(xiàn)在速度及并發(fā)連接數(shù),應(yīng)用在下載服務(wù)器中,保護(hù)帶寬及服務(wù)器的IO資源。

請求限速:限制單位時間內(nèi)用戶訪問請求,防止惡意攻擊,保護(hù)服務(wù)器及資源安全。

三、限速原理

漏桶原理

算法思想是:

水(請求)從上方倒入水桶,從水桶下方流出(被處理);
來不及流出的水存在水桶中(緩沖),以固定速率流出;
水桶滿后水溢出(丟棄)。

這個算法的核心是:緩存請求、勻速處理、多余的請求直接丟棄。
相比漏桶算法,令牌桶算法不同之處在于它不但有一只“桶”,還有個隊列,這個桶是用來存放令牌的,隊列才是用來存放請求的。

四、限速實現(xiàn)

1)單位時間內(nèi)請求數(shù)限制

基于IP對下載速率做限制 限制每秒處理1次請求,對突發(fā)超過5個以后的請求放入緩存區(qū)

http {limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;server {location /abc {limit_req zone=baism burst=5 nodelay;} } limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;

第一個參數(shù):$binary_remote_addr 表示通過remote_addr這個標(biāo)識來做限制,“binary_”的目的是縮寫內(nèi)存占用量,是限制同一客戶端ip地址。
第二個參數(shù):zone=baism:10m表示生成一個大小為10M,名字為one的內(nèi)存區(qū)域,用來存儲訪問的頻次信息。
第三個參數(shù):rate=1r/s表示允許相同標(biāo)識的客戶端的訪問頻次,這里限制的是每秒1次,還可以有比如30r/m的。

limit_req zone=baism burst=5 nodelay;

第一個參數(shù):zone=baism 設(shè)置使用哪個配置區(qū)域來做限制,與上面limit_req_zone 里的name對應(yīng)。
第二個參數(shù):burst=5,重點說明一下這個配置,burst爆發(fā)的意思,這個配置的意思是設(shè)置一個大小為5的緩沖區(qū)當(dāng)有大量請求(爆發(fā))過來時,超過了訪問頻次限制的請求可以先放到這個緩沖區(qū)內(nèi)。
第三個參數(shù):nodelay,如果設(shè)置,超過訪問頻次而且緩沖區(qū)也滿了的時候就會直接返回503,如果沒有設(shè)置,則所有請求會等待排隊。

3)限制下載速度

server {listen 80;server_name localhost;location / {root html;index index.html index.htm;}location /abc {limit_rate 100k;}} }

4)綜合案例

限制web服務(wù)器請求處理為1秒一個,觸發(fā)值為5;

限制并發(fā)連接數(shù)為4;

限制下載速度為100.

http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;#基于IP做連接限制 限制同一IP并發(fā)為1 下載速度為100Klimit_conn_zone $binary_remote_addr zone=addr:10m;#基于IP對下載速率做限制 限制每秒處理1次請求,對突發(fā)超過5個以后的請求放入緩存區(qū) limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;server {listen 80;server_name localhost;location / {root html;index index.html index.htm;}location /abc {limit_req zone=one burst=5 nodelay;limit_conn addr 4;limit_rate 100k;}} }

總結(jié)

以上是生活随笔為你收集整理的Nginx 下载限速的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。