国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

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

stormzhang / 1077人閱讀

摘要:將延遲處理此類(lèi)請(qǐng)求,直到存儲(chǔ)區(qū)共享存儲(chǔ)區(qū)已滿(mǎn)。因此,如果目標(biāo)是阻止下載速度大于指定值,則連接數(shù)也應(yīng)該受到限制。以下示例顯示了用于限制連接數(shù)和帶寬的組合配置。

原文鏈接:何曉東 博客

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

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

限制鏈接數(shù)

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

limit_conn_zone $binary_remote_addr zone=addr:10m;

2.在 location {}, server {} 或者 http {} 上下文中使用 limit_conn 指令來(lái)應(yīng)用限制,第一個(gè)參數(shù)為上面設(shè)定的共享內(nèi)存區(qū)域名稱(chēng),第二個(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)求淹沒(méi)。該方法基于 leaky bucket 漏桶算法,請(qǐng)求以各種速率到達(dá)桶并以固定速率離開(kāi)桶。在使用速率限制之前,您需要配置 "漏桶" 的全局參數(shù):

key - 用于區(qū)分一個(gè)客戶(hù)端與另一個(gè)客戶(hù)端的參數(shù),通常是變量

shared memory zone - 保留這些密鑰狀態(tài)的區(qū)域的名稱(chēng)和大小(即 "漏桶")

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é),名稱(chēng)為 one 的共享內(nèi)存區(qū)域。該區(qū)域保存使用 $binary_remote_addr 變量設(shè)置的客戶(hù)端 IP 地址的狀態(tài)。請(qǐng)注意,$remote_addr 還包含客戶(hù)端的 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/ 路由下將每秒處理不超過(guò) 1 個(gè)請(qǐng)求,延遲處理這些請(qǐng)求的方式是總速率不大于設(shè)定的速率。NGINX 將延遲處理此類(lèi)請(qǐng)求,直到 "存儲(chǔ)區(qū)"(共享存儲(chǔ)區(qū) one)已滿(mǎn)。對(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;
}

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

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

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

limit_rate_after 500k;
limit_rate 20k;

以下示例顯示了用于限制連接數(shù)和帶寬的組合配置。允許的最大連接數(shù)設(shè)置為每個(gè)客戶(hù)端地址 5 個(gè)連接,這適用于大多數(shù)常見(jiàn)情況,因?yàn)楝F(xiàn)代瀏覽器通常一次最多打開(kāi) 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)語(yǔ)義。

大佬們,買(mǎi)點(diǎn)更多 知識(shí) 嗎?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/31556.html

相關(guān)文章

  • Nginx http資源請(qǐng)求限制三種方法

    摘要:將延遲處理此類(lèi)請(qǐng)求,直到存儲(chǔ)區(qū)共享存儲(chǔ)區(qū)已滿(mǎn)。因此,如果目標(biāo)是阻止下載速度大于指定值,則連接數(shù)也應(yīng)該受到限制。以下示例顯示了用于限制連接數(shù)和帶寬的組合配置。 原文鏈接:何曉東 博客 前置條件:nginx 需要有 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模塊,可以使用命令 2>&1 nginx -V | tr ...

    mayaohua 評(píng)論0 收藏0
  • php偽造Referer請(qǐng)求反盜鏈資源

    摘要:反盜鏈分類(lèi)我們了解了盜鏈對(duì)源站的危害后,自然要通過(guò)一些手段來(lái)阻止這種行為維護(hù)自己的利益。參考文章百科盜鏈防盜鏈偽造防盜鏈 有些產(chǎn)品為了防止自己的產(chǎn)品被盜鏈訪(fǎng)問(wèn),會(huì)采用反盜鏈措施,如封閉型生態(tài)的音樂(lè)網(wǎng)站和視頻網(wǎng)站,他們已經(jīng)為了版權(quán)付費(fèi),自然不希望你免費(fèi)使用他們的資源。但因?yàn)楹芏嗳藢?zhuān)門(mén)研究盜鏈,因此我們也需要了解下盜鏈、反盜鏈和逃避反盜鏈的原理。 盜鏈 引用百度百科對(duì)盜鏈的定義: 盜鏈?zhǔn)侵?..

    chenatu 評(píng)論0 收藏0
  • php偽造Referer請(qǐng)求反盜鏈資源

    摘要:反盜鏈分類(lèi)我們了解了盜鏈對(duì)源站的危害后,自然要通過(guò)一些手段來(lái)阻止這種行為維護(hù)自己的利益。參考文章百科盜鏈防盜鏈偽造防盜鏈 有些產(chǎn)品為了防止自己的產(chǎn)品被盜鏈訪(fǎng)問(wèn),會(huì)采用反盜鏈措施,如封閉型生態(tài)的音樂(lè)網(wǎng)站和視頻網(wǎng)站,他們已經(jīng)為了版權(quán)付費(fèi),自然不希望你免費(fèi)使用他們的資源。但因?yàn)楹芏嗳藢?zhuān)門(mén)研究盜鏈,因此我們也需要了解下盜鏈、反盜鏈和逃避反盜鏈的原理。 盜鏈 引用百度百科對(duì)盜鏈的定義: 盜鏈?zhǔn)侵?..

    Drinkey 評(píng)論0 收藏0
  • 跨域問(wèn)題匯總

    摘要:因?yàn)闉g覽器的同源策略,前端開(kāi)發(fā)會(huì)遇到各種跨域問(wèn)題。前言在總結(jié)各種跨域問(wèn)題之前,我們先來(lái)了解一下瀏覽器的同源策略。所以只能解決一級(jí)域名相同二級(jí)域名不同的跨域問(wèn)題。 跨域問(wèn)題的場(chǎng)景和解決方案多種多樣,只要是做前端開(kāi)發(fā),總會(huì)遇到。而且面試時(shí)也是必問(wèn)的問(wèn)題。所以自己學(xué)習(xí)總結(jié)記錄一下。 因?yàn)闉g覽器的同源策略,前端開(kāi)發(fā)會(huì)遇到各種跨域問(wèn)題。本篇文章總結(jié)了遇到跨域問(wèn)題的不同的場(chǎng)景以及對(duì)應(yīng)的解決方案。 ...

    MkkHou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<