最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Nginx http資源請求限制(三種方法)

 更新時間:2019年05月23日 08:30:24   作者:alpha 的博客  
這篇文章主要介紹了Nginx http資源請求限制,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

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

測試版本為:nginx版本為1.15+

限制鏈接數(shù)

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

limit_conn_zone $binary_remote_addr zone=addr:10m;

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

location /download/ {
 limit_conn addr 1;
}

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

http {
 limit_conn_zone $server_name zone=servers:10m;

 server {
 limit_conn servers 1000;
 }
}

限制請求速率

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

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

這些參數(shù)使用 limit_req_zone 指令設(shè)置。該指令在 http {} 級別上定義 - 這種方法允許應(yīng)用不同的區(qū)域并請求溢出參數(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)。請注意, $remote_addr 還包含客戶端的 IP 地址,而 $binary_remote_addr 保留更短的 IP 地址的二進制表示。

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

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

一旦該區(qū)域被設(shè)置,你可以使用 NGINX 配置中的任何地方使用 limit_req 指令限制請求速率,尤其是 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 個請求,延遲處理這些請求的方式是總速率不大于設(shè)定的速率。NGINX 將延遲處理此類請求,直到 "存儲區(qū)"(共享存儲區(qū) one)已滿。對于到達完整存儲桶的請求,NGINX 將響應(yīng) 503 Service Unavailable 錯誤(當 limit_req_status 未自定義設(shè)定狀態(tài)碼時)。

限制寬帶

要限制每個連接的帶寬,請使用以下 limit_rate 指令:

location /download/ {
 limit_rate 50k;
}

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

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

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

limit_rate_after 500k;
limit_rate 20k;

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

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 請求限制部分文檔 ,稍微調(diào)整了一點語義。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • k8s部署nginx的三種方式小結(jié)

    k8s部署nginx的三種方式小結(jié)

    本文主要介紹了k8s部署nginx的三種方式小結(jié),主要包括直接部署、使用數(shù)據(jù)卷部署、使用ConfigMap部署,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • 淺析Nginx 負載均衡4種模式

    淺析Nginx 負載均衡4種模式

    這篇文章主要介紹了Nginx 負載均衡4種模式,本文給大家介紹的非常詳細,感興趣的朋友跟隨腳本之家小編一起學習吧
    2018-06-06
  • 在Nginx中攔截特定用戶代理的教程

    在Nginx中攔截特定用戶代理的教程

    這篇文章主要介紹了在Nginx中攔截特定用戶代理的教程,并為這些被攔截的用戶設(shè)置一個黑名單以方便管理,需要的朋友可以參考下
    2015-06-06
  • Nginx服務(wù)器初期基本配置指南

    Nginx服務(wù)器初期基本配置指南

    這篇文章主要介紹了Nginx服務(wù)器初期基本配置指南,包括重定向以及基本的負載均衡配置等,需要的朋友可以參考下
    2016-01-01
  • nginx支持.htaccess文件實現(xiàn)偽靜態(tài)的方法分享

    nginx支持.htaccess文件實現(xiàn)偽靜態(tài)的方法分享

    這篇文章主要介紹了nginx支持.htaccess文件實現(xiàn)偽靜態(tài)的方法分享,需要的朋友可以參考下
    2015-01-01
  • nginx如何配置x-forwarded-for頭部

    nginx如何配置x-forwarded-for頭部

    這篇文章主要介紹了nginx如何配置x-forwarded-for頭部,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Nginx基于多個ip的虛擬主機的詳細配置

    Nginx基于多個ip的虛擬主機的詳細配置

    本文詳細介紹了如何使用nginx配置基于多個IP地址的虛擬主機,通過虛擬主機,可以優(yōu)化服務(wù)器資源,提高安全性和靈活性,節(jié)省IP資源,文章也提供了基于域名和端口的虛擬主機配置代碼,方便讀者參考實施
    2024-11-11
  • Nginx配置中root和alias的區(qū)別及說明

    Nginx配置中root和alias的區(qū)別及說明

    這篇文章主要介紹了Nginx配置中root和alias的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Nginx服務(wù)器Nginx.com配置文件詳解

    Nginx服務(wù)器Nginx.com配置文件詳解

    這篇文章主要介紹了Nginx服務(wù)器Nginx.com配置文件詳解的相關(guān)資料,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下
    2016-09-09
  • nginx修改server信息的方法詳解

    nginx修改server信息的方法詳解

    請求響應(yīng)信息會暴露nginx版本信息,若攻擊者獲知服務(wù)器組件等信息及版本信息,會使下一步的攻擊和漏洞測試提供便利,所以本文給大家介紹了nginx修改server信息的方法,需要的朋友可以參考下
    2025-02-02

最新評論

商南县| 屏山县| 榕江县| 五河县| 和田县| 凉山| 阿拉尔市| 泰和县| 潜山县| 太原市| 天台县| 乌鲁木齐市| 台州市| 微博| 水城县| 淮滨县| 浦北县| 南江县| 利辛县| 山丹县| 万载县| 庄浪县| 建始县| 化隆| 蒲江县| 平泉县| 隆安县| 宁阳县| 仪征市| 布拖县| 保康县| 泰宁县| 左云县| 蕲春县| 思茅市| 天津市| 兰溪市| 桂平市| 静宁县| 体育| 五指山市|