這篇文章主要介紹“nginx限速怎么實現(xiàn)”,在日常操作中,相信很多人在nginx限速怎么實現(xiàn)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”nginx限速怎么實現(xiàn)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計、成都做網(wǎng)站與策劃設(shè)計,新樂網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:新樂等地區(qū)。新樂做網(wǎng)站價格咨詢:18982081108
nginx限速可以通過 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模塊來實現(xiàn)限速的功能。
一、ngx_http_limit_conn_module :
該模塊主要限制下載速度。
1、并發(fā)連接限制:
http { ... limit_conn_zone $binary_remote_addr zone=aming:10m; ... server { ... limit_conn aming 10; ... } } 說明:首先用limit_conn_zone定義了一個內(nèi)存區(qū)塊索引aming,大小為10m,它以$binary_remote_addr作為key。 該配置只能在http里面配置,不支持在server里配置。 limit_conn 定義針對aming這個zone,并發(fā)連接為10個。在這需要注意一下,這個10指的是單個IP的并發(fā)最多為10個。
2、速度限制:
location ~ /download/ { ... limit_rate_after 512k; limit_rate 150k; ... } 說明:limit_rate_after定義當(dāng)一個文件下載到指定大小(本例中為512k)之后開始限速; limit_rate 定義下載速度為150k/s。 注意:這兩個參數(shù)針對每個請求限速。
二、ngx_http_limit_req_module:
該模塊主要用來限制請求數(shù)。
1、limit_req_zone:
語法: limit_req_zone $variable zone=name:size rate=rate; 默認值: none 配置段: http 設(shè)置一塊共享內(nèi)存限制域用來保存鍵值的狀態(tài)參數(shù)。 特別是保存了當(dāng)前超出請求的數(shù)量。 鍵的值就是指定的變量(空值不會被計算)。 如limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; 說明:區(qū)域名稱為one,大小為10m,平均處理的請求頻率不能超過每秒一次,鍵值是客戶端IP。 使用$binary_remote_addr變量, 可以將每條狀態(tài)記錄的大小減少到64個字節(jié),這樣1M的內(nèi)存可以保存大約1萬6千個64字節(jié)的記錄。 如果限制域的存儲空間耗盡了,對于后續(xù)所有請求,服務(wù)器都會返回 503 (Service Temporarily Unavailable)錯誤。 速度可以設(shè)置為每秒處理請求數(shù)和每分鐘處理請求數(shù),其值必須是整數(shù), 所以如果你需要指定每秒處理少于1個的請求,2秒處理一個請求,可以使用 “30r/m”。
2、limit_req
語法: limit_req zone=name [burst=number] [nodelay]; 默認值: — 配置段: http, server, location 設(shè)置對應(yīng)的共享內(nèi)存限制域和允許被處理的最大請求數(shù)閾值。 如果請求的頻率超過了限制域配置的值,請求處理會被延遲,所以所有的請求都是以定義的頻率被處理的。 超過頻率限制的請求會被延遲,直到被延遲的請求數(shù)超過了定義的閾值, 這時,這個請求會被終止,并返回503 (Service Temporarily Unavailable) 錯誤。 這個閾值的默認值為0。如: limit_req_zone $binary_remote_addr zone=aming:10m rate=1r/s; server { location /upload/ { limit_req zone=aming burst=5; } } 限制平均每秒不超過一個請求,同時允許超過頻率限制的請求數(shù)不多于5個。 如果不希望超過的請求被延遲,可以用nodelay參數(shù),如: limit_req zone=aming burst=5
示例:
http { limit_req_zone $binary_remote_addr zone=aming:10m rate=1r/s; server { location ^~ /download/ { limit_req zone=aming burst=5; } } }
設(shè)置白名單:
如果是針對公司內(nèi)部IP或者lo(127.0.0.1)不進行限速,如何做呢?這就要用到geo模塊了。 假如,預(yù)把127.0.0.1和192.168.100.0/24網(wǎng)段設(shè)置為白名單,需要這樣做。 在http { }里面增加: geo $limited { default 1; 127.0.0.1/32 0; 192.168.100.0/24 0; } map $limited $limit { 1 $binary_remote_addr; 0 ""; } 原來的 “l(fā)imit_req_zone $binary_remote_addr ” 改為“l(fā)imit_req_zone $limit” 完整示例: http { geo $limited { default 1; 127.0.0.1/32 0; 192.168.100.0/24 0; } map $limited $limit { 1 $binary_remote_addr; 0 ""; } limit_req_zone $limit zone=aming:10m rate=1r/s; server { location ^~ /download/ { limit_req zone=aming burst=5; } } }
到此,關(guān)于“nginx限速怎么實現(xiàn)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
本文名稱:nginx限速怎么實現(xiàn)
當(dāng)前地址:http://jinyejixie.com/article8/psheip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站排名、自適應(yīng)網(wǎng)站、用戶體驗、網(wǎng)站設(shè)計公司、App設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)