精品免费在线观看-精品欧美-精品欧美成人bd高清在线观看-精品欧美高清不卡在线-精品欧美日韩一区二区

17站長(zhǎng)網(wǎng)

詳解Nginx http資源請(qǐng)求限制的三種方法!

2022-10-6 12:56| 查看: 1494 |來源: 互聯(lián)網(wǎng)

前置條件:nginx 需要有 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模塊,可以使用命令 2>&1 nginx -V | tr ' ' '\n'|grep limit 檢查有沒有相應(yīng)模塊,如果沒有請(qǐng)重新編譯安裝這兩個(gè)模塊。 測(cè)

前置條件:nginx 需要有 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模塊,可以使用命令 2>&1 nginx -V | tr ' ' '\n'|grep limit 檢查有沒有相應(yīng)模塊,如果沒有請(qǐng)重新編譯安裝這兩個(gè)模塊。

測(cè)試版本為:nginx版本為1.15+

限制鏈接數(shù)

1.使用 limit_conn_zone 指令定義密鑰并設(shè)置共享內(nèi)存區(qū)域的參數(shù)(工作進(jìn)程將使用此區(qū)域來共享密鑰值的計(jì)數(shù)器)。第一個(gè)參數(shù)指定作為鍵計(jì)算的表達(dá)式。第二個(gè)參數(shù) zone 指定區(qū)域的名稱及其大小:

limit_conn_zone $binary_remote_addr zone=addr:10m;

2.在 location {} , server {} 或者 http {} 上下文中使用 limit_conn 指令來應(yīng)用限制,第一個(gè)參數(shù)為上面設(shè)定的共享內(nèi)存區(qū)域名稱,第二個(gè)參數(shù)為每個(gè)key被允許的鏈接數(shù):

location /download/ { limit_conn addr 1; }

使用 $binary_remote_addr 變量作為參數(shù)的時(shí)候,是基于 IP 地址的限制,同樣可以使用 $server_name 變量進(jìn)行給定服務(wù)器連接數(shù)的限制:

http { limit_conn_zone $server_name zone=servers:10m; server { limit_conn servers 1000; } }

限制請(qǐng)求速率

速率限制可用于防止 DDoS,CC 攻擊,或防止上游服務(wù)器同時(shí)被太多請(qǐng)求淹沒。該方法基于 leaky bucket 漏桶算法,請(qǐng)求以各種速率到達(dá)桶并以固定速率離開桶。在使用速率限制之前,您需要配置 "漏桶" 的全局參數(shù):

  • key - 用于區(qū)分一個(gè)客戶端與另一個(gè)客戶端的參數(shù),通常是變量
  • shared memory zone - 保留這些密鑰狀態(tài)的區(qū)域的名稱和大小(即 "漏桶")
  • rate - 每秒請(qǐng)求數(shù)(r/s)或每分鐘請(qǐng)求數(shù)(r/m)("漏桶排空")中指定的請(qǐng)求速率限制。每分鐘請(qǐng)求數(shù)用于指定小于每秒一個(gè)請(qǐng)求的速率。

這些參數(shù)使用 limit_req_zone 指令設(shè)置。該指令在 http {} 級(jí)別上定義 - 這種方法允許應(yīng)用不同的區(qū)域并請(qǐng)求溢出參數(shù)到不同的上下文:

http { #... limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; }

使用此配置,將創(chuàng)建大小為 10m 字節(jié),名稱為 one 的共享內(nèi)存區(qū)域。該區(qū)域保存使用 $binary_remote_addr 變量設(shè)置的客戶端 IP 地址的狀態(tài)。請(qǐng)注意, $remote_addr 還包含客戶端的 IP 地址,而 $binary_remote_addr 保留更短的 IP 地址的二進(jìn)制表示。

可以使用以下數(shù)據(jù)計(jì)算共享內(nèi)存區(qū)域的最佳大小: $binary_remote_addr IPv4 地址的值大小為 4 個(gè)字節(jié),64 位平臺(tái)上的存儲(chǔ)狀態(tài)占用 128 個(gè)字節(jié)。因此,大約 16000 個(gè) IP 地址的狀態(tài)信息占用該區(qū)域的 1m 字節(jié)。

如果在 NGINX 需要添加新條目時(shí)存儲(chǔ)空間耗盡,則會(huì)刪除最舊的條目。如果釋放的空間仍然不足以容納新記錄,NGINX 將返回 503 Service Unavailable 狀態(tài)代碼,狀態(tài)碼可以使用 limit_req_status 指令重新定義。

一旦該區(qū)域被設(shè)置,你可以使用 NGINX 配置中的任何地方使用 limit_req 指令限制請(qǐng)求速率,尤其是 server {} , location {} 和 http {} 上下文:

http { #... limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; server { #... location /search/ { limit_req zone=one; } } }

使用如上配置,nginx 在 /search/ 路由下將每秒處理不超過 1 個(gè)請(qǐng)求,延遲處理這些請(qǐng)求的方式是總速率不大于設(shè)定的速率。NGINX 將延遲處理此類請(qǐng)求,直到 "存儲(chǔ)區(qū)"(共享存儲(chǔ)區(qū) one)已滿。對(duì)于到達(dá)完整存儲(chǔ)桶的請(qǐng)求,NGINX 將響應(yīng) 503 Service Unavailable 錯(cuò)誤(當(dāng) limit_req_status 未自定義設(shè)定狀態(tài)碼時(shí))。

限制寬帶

要限制每個(gè)連接的帶寬,請(qǐng)使用以下 limit_rate 指令:

location /download/ { limit_rate 50k; }

通過此設(shè)置,客戶端將能夠通過單個(gè)連接以最高 50k/秒 的速度下載內(nèi)容。但是,客戶端可以打開多個(gè)連接跳過此限制。因此,如果目標(biāo)是阻止下載速度大于指定值,則連接數(shù)也應(yīng)該受到限制。例如,每個(gè) IP 地址一個(gè)連接(如果使用上面指定的共享內(nèi)存區(qū)域):

location /download/ { limit_conn addr 1; limit_rate 50k; }

要僅在客戶端下載一定數(shù)量的數(shù)據(jù)后施加限制,請(qǐng)使用該 limit_rate_after 指令。允許客戶端快速下載一定數(shù)量的數(shù)據(jù)(例如,文件頭 - 電影索引)并限制下載其余數(shù)據(jù)的速率(使用戶觀看電影而不是下載)可能是合理的。

limit_rate_after 500k; limit_rate 20k; 

以下示例顯示了用于限制連接數(shù)和帶寬的組合配置。允許的最大連接數(shù)設(shè)置為每個(gè)客戶端地址 5 個(gè)連接,這適用于大多數(shù)常見情況,因?yàn)楝F(xiàn)代瀏覽器通常一次最多打開 3 個(gè)連接。同時(shí),提供下載的位置只允許一個(gè)連接:

http { limit_conn_zone $binary_remote_address zone=addr:10m server { root /www/data; limit_conn addr 5; location / { } location /download/ { limit_conn addr 1; limit_rate_after 1m; limit_rate 50k; } } } 

內(nèi)容翻譯自 nginx 請(qǐng)求限制部分文檔 ,稍微調(diào)整了一點(diǎn)語義。

本文最后更新于 2022-10-6 12:56,某些文章具有時(shí)效性,若有錯(cuò)誤或已失效,請(qǐng)?jiān)诰W(wǎng)站留言或聯(lián)系站長(zhǎng):17tui@17tui.com
·END·
站長(zhǎng)網(wǎng)微信號(hào):w17tui,關(guān)注站長(zhǎng)、創(chuàng)業(yè)、關(guān)注互聯(lián)網(wǎng)人 - 互聯(lián)網(wǎng)創(chuàng)業(yè)者營(yíng)銷服務(wù)中心

免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識(shí),文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請(qǐng)勿用于商業(yè)用途,如果損害了您的權(quán)利,請(qǐng)聯(lián)系我們及時(shí)修正或刪除。謝謝!

17站長(zhǎng)網(wǎng)微信二維碼

始終以前瞻性的眼光聚焦站長(zhǎng)、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長(zhǎng)轉(zhuǎn)型升級(jí),為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營(yíng)銷服務(wù),與站長(zhǎng)一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!

掃一掃,關(guān)注站長(zhǎng)網(wǎng)微信

大家都在看

熱門排行

    最近更新

      返回頂部
      主站蜘蛛池模板: 99九九99九九九视频精品 | 一区二区三区无码高清视频 | 成人做爰全过程免费的叫床看视频 | 美国一级毛片片aa免 | 国产xvideoscom | 日本免费专区 | 美国老黑一级毛片免费的大黄 | 国产免费福利 | 亚洲日韩中文字幕在线播放 | xxx国产精品视频 | 黄在线免费看 | 亚洲国产精品成人综合久久久 | 中国美女做爰视频高清 | 看真人视频一级毛片 | 欧美国产亚洲精品a第一页 欧美国产亚洲一区 | 精品久久免费视频 | 三级网站 | 天干天干夜天干天天爽 | 黄色直接看 | 亚洲人和日本人jizz | 韩国 欧美 日产 国产精品 | 国产麻豆视频在线看网站 | 国语偷拍视频在线观看 | 久操久热 | 91成年人免费视频 | 亚洲欧美日韩闷骚影院 | 五月天丁香婷婷网 | 久草手机视频在线观看 | 最新精品视频在线观看 | 六月丁香啪啪六月激情 | 国产亚洲精品一区久久 | 国产v片免费播放 | 青青操青青操 | 直接看的黄色网址 | 国产91免费视频 | 国产福利一区二区三区在线观看 | 成年人在线免费观看视频网站 | 用力插视频 | 草草草草视频 | 国产jav | 欧美片能看的一级毛片 |