国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > Nginx > 正文

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

2024-08-30 12:24:28
字體:
來源:轉載
供稿:網友

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

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

限制鏈接數

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

limit_conn_zone $binary_remote_addr zone=addr:10m;

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

location /download/ { limit_conn addr 1;}

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

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

限制請求速率

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

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

這些參數使用 limit_req_zone 指令設置。該指令在 http {} 級別上定義 - 這種方法允許應用不同的區域并請求溢出參數到不同的上下文:

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

使用此配置,將創建大小為 10m 字節,名稱為 one 的共享內存區域。該區域保存使用 $binary_remote_addr 變量設置的客戶端 IP 地址的狀態。請注意, $remote_addr 還包含客戶端的 IP 地址,而 $binary_remote_addr 保留更短的 IP 地址的二進制表示。

可以使用以下數據計算共享內存區域的最佳大小: $binary_remote_addr IPv4 地址的值大小為 4 個字節,64 位平臺上的存儲狀態占用 128 個字節。因此,大約 16000 個 IP 地址的狀態信息占用該區域的 1m 字節。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤翔县| 阳朔县| 常宁市| 涟水县| 钟祥市| 靖宇县| 泸州市| 奉贤区| 平原县| 郴州市| 永济市| 交城县| 休宁县| 天津市| 峨眉山市| 日照市| 谢通门县| 安西县| 芦山县| 额尔古纳市| 林芝县| 南汇区| 涟源市| 呼伦贝尔市| 麟游县| 鄯善县| 西青区| 贵南县| 黄陵县| 井陉县| 黄浦区| 汽车| 荥经县| 滁州市| 且末县| 高邑县| 巴彦淖尔市| 开化县| 卫辉市| 海城市| 德清县|