Nginx IP優化限制策略

Nginx 如何限制每個 IP 地址的連接數,優化資源分配?

Nginx 限制每個 IP 地址的連接數
Nginx 提供了多種機制來限制單個 IP 地址所能建立的同時連接數,這對于防止資源耗盡和提高服務穩定性至關重要。以下是幾種有效策略:

1. 使用 limit_conn 指令
limit_conn 指令可以在 server 或 location 塊中使用,用于限制針對特定 zone 的連接數量。zone 是一個內存結構,用來跟蹤 IP 的連接狀態。

# 針對客戶端地址,進行連接數限制
# 創建連接限制區域,每 IP 限 10M 字節內存
limit_conn_zone $binary_remote_addr zone=perip:10m;
# 針對域名,進行連接數限制
limit_conn_zone $server_name zone=perserver:10m;http {# 創建連接限制區域,每 IP 限 10M 字節內存limit_conn_zone $binary_remote_addr zone=perip:10m;
}server {# 每個 IP 同時允許的最大連接數為 10limit_conn perip 10;
}

這里的 $binary_remote_addr 變量包含了客戶端 IP 的二進制形式,確保即便在存在 NAT 的情況下也能準確識別每個獨立的 IP。

2. 結合?proxy_pass?實現負載均衡下的連接限制

當 Nginx 作為反向代理時,也可以在 location 塊中使用 limit_conn 控制對上游服務器的連接數:

location / {# 每個 IP 對 / 位置的請求同時不超過 5 個limit_conn perip 5;proxy_pass http://upstream_server;
}

3. 利用?limit_req?控制請求速率

除了限制連接數,還可以限制 IP 的請求速率,從而間接控制連接數:

http {# 創建速率限制區域limit_req_zone $binary_remote_addr zone=mylead:10m rate=1r/s; # 每秒限速 1 次
}server {# 應用速率限制location / {limit_req zone=mylead burst=5 nodelay;}
}

這里,burst 參數指定了短時間內允許的額外請求數量,nodelay 表示一旦超過速率限制,立即拒絕額外請求。

4. 動態黑白 IP 名單管理

除了靜態限制外,還可以根據訪問模式動態調整限制:

geo $my_ip {default 1; # 默認允許192.168.1.1 0; # 特定 IP 禁止
}server {if ($my_ip == 0) {return 444; # 禁止黑名單 IP 的所有請求}
}

這種方式可以根據實際需求靈活增刪黑名單條目,適用于應對突發攻擊的情況。

總結

通常推薦結合多種策略,比如首先用 limit_conn 控制總體連接數,再用 limit_req 限制請求速率,以及適時使用黑名單或地理限制,構建多層次防御體系,以優化資源分配并保護服務穩定性。

最后,記得監測 Nginx 的訪問日志,觀察連接數變化趨勢,適時調整參數,確保既能滿足正常服務需求又不浪費資源。

參考:Nginx核心配置指令_54笨鳥

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63587.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63587.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63587.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[spring]XML配置文件標簽

spring的XML配置文件的標簽大體可以分為兩種: 其中的默認標簽,我們前面文章里面出現的標簽都是默認標簽,是spring本身自帶的,不需要我們去引入其他東西。而自定義標簽則是指非默認標簽的其他的由我們或產品發行方自定義的對接spir…

簡單的bytebuddy學習筆記

簡單的bytebuddy學習筆記 此筆記對應b站bytebuddy學習視頻進行整理,此為視頻地址,此處為具體的練習代碼地址 一、簡介 ByteBuddy是基于ASM (ow2.io)實現的字節碼操作類庫。比起ASM,ByteBuddy的API更加簡單易用。開發者無需了解class file …

【信息系統項目管理師】高分論文:論信息系統項目的進度管理(人力資源管理系統)

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 論文1、規劃進度管理3、排列活動順序4、估算活動持續時間5、制訂進度計劃6、控制進度論文 2022年2月,我作為項目經理參與了XX電網公司人力資源管理系統建設項目,該項目是2022年XX電網公司“十三五”信息化規…

vue3項目結合Echarts實現甘特圖(可拖拽、選中等操作)

效果圖: 圖一:選中操作 圖二:上下左右拖拽操作 本案例在echarts???????示例機場航班甘特圖的基礎上修改??????? 封裝ganttEcharts組件,測試數據 airport-schedule.jsonganttEcharts代碼: 直接復制粘貼可測????…

GIT安裝過程

文章目錄 ?下載安裝包?安裝過程?驗證安裝?Git的基本使用? ?Git的安裝可以通過以下步驟完成? ?下載安裝包? 首先,訪問Git官網(https://git-scm.com/)或Git for Windows(https://gitforwindows.org/)下載對應系統的安裝包。 對于Windows系統,通常…

Java 技術面試常見問題解析

1.說說Mybatis的緩存機制: MyBatis 是一個優秀的持久層框架,它簡化了企業應用開發中數據庫操作的代碼。MyBatis 提供了一級緩存和二級緩存機制來優化對數據庫的訪問。 一級緩存 (SqlSession級別的緩存) 一級緩存是 MyBatis 中默認開啟且無法關閉的緩存機制。它存…

Word使用分隔符實現頁面部分分欄

文章目錄 Word使用分隔符實現頁面部分分欄分隔符使用頁面設置 Word使用分隔符實現頁面部分分欄 分隔符使用 word中的分隔符: 前面不分欄,后面分欄(或前面分欄,后面不分欄),只需要在分隔位置處插入分隔符:“連續”即…

掌握 Spring Boot 中的 WebClient:何時以及為何使用它而不是 RestTemplate

在開發 Spring Boot 應用程序時,與 RESTful Web 服務進行通信是一項常見需求。從歷史上看,開發人員已將RestTemplate用于此目的。然而,隨著反應式編程的出現和對更高效資源利用的需求,WebClient已成為首選。本文探討了RestTemplat…

主曲率為常數時曲面分類

主曲率為常數 ? K , H \Leftrightarrow K,H ?K,H 為常數,曲面分類: 1.若 k 1 k 2 0 k_1k_20 k1?k2?0,則 S S S為全臍點曲面——平面的一部分; 2.若 k 1 k 2 ≠ 0 k_1k_2\neq0 k1?k2?0,則 S S S為全臍點曲面——球面的一部分&…

asp.net core發布配置端口號,支持linux

方式一,修改配置文件 appsettings.json 找到文件 appsettings.json, 添加如下節點配置,在linux環境需要設置0.0.0.0才可以正常代表本機,然后被其他機器訪問,此處設置端口8000, "Kestrel": {&quo…

【安當產品應用案例100集】033-安當TDE透明加密在移動存儲加密中的應用案例

背景介紹 隨著移動互聯網的普及,企業和個人越來越依賴移動存儲設備,如U盤、移動硬盤以及云存儲服務進行數據的存儲和傳輸。然而,這種便捷性也帶來了數據安全的隱患。如何確保存儲在移動設備上的數據不被非法訪問和泄露,成為企業和…

【linux 內存】cat /proc/meminfo、free

cat /proc/meminfo 各字段詳解 /proc/meminfo是了解Linux系統內存使用狀況的主要接口,我們最常用的”free”、”vmstat”等命令就是通過它獲取數據的 ,/proc/meminfo所包含的信息比”free”等命令要豐富得多,因此需要了解這些字段的含義。 …

Android HandlerThread、Looper、MessageQueue 源碼分析

Android HandlerThread、Looper、MessageQueue 源碼分析 簡介 在 Android 開發中,大家應該對 HandlerThread 有一定了解。顧名思義,HandlerThread 是 Thread 的一個子類。與普通的 Thread 不同,Thread 通常一次只能執行一個后臺任務&#x…

配置PostgreSQL用于集成測試的步驟

在進行軟件開發時,集成測試是確保各個組件能夠協同工作的關鍵環節。PostgreSQL作為一種強大的開源數據庫系統,常被用于集成測試中。下面將詳細介紹如何在不同的環境中配置PostgreSQL以支持集成測試。 1. 選擇并安裝PostgreSQL 首先,你需要根…

WebRTC搭建與應用(一)-ICE服務搭建

WebRTC搭建與應用(一) 近期由于項目需要在研究前端WebGL渲染轉為云渲染,借此機會對WebRTC、ICE信令協議等有了初步了解,在此記錄一下,以防遺忘。 第一章 ICE服務搭建 文章目錄 WebRTC搭建與應用(一)前言一、ICE是什么?二、什么…

【學習筆記】深入淺出詳解Pytorch中的View, reshape, unfold,flatten等方法。

文章目錄 一、寫在前面二、Reshape(一)用法(二)代碼展示 三、Unfold(一)torch.unfold 的基本概念(二)torch.unfold 的工作原理(三) 示例代碼(四&a…

深入理解 MySQL 索引

引言 在數據庫管理中,索引(Index)是提高查詢性能的關鍵技術之一。MySQL 是最流行的關系型數據庫管理系統之一,廣泛應用于各種規模的應用程序中。本文將深入探討 MySQL 中的索引概念、類型、工作原理以及最佳實踐,幫助…

利用notepad++刪除特定關鍵字所在的行

1、按組合鍵Ctrl H,查找模式選擇 ‘正則表達式’,不選 ‘.匹配新行’ 2、查找目標輸入 : ^.*關鍵字.*\r\n (不保留空行) ^.*關鍵字.*$ (保留空行)3、替換為:(空) 配置界面參考下圖: ??…

docker安裝和換源

安裝: https://www.runoob.com/docker/ubuntu-docker-install.html sudo apt-get remove docker docker-engine docker.io containerd runcsudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-commoncurl -fsS…

CSSmodule的作用是什么

CSS Modules的作用主要體現在以下幾個方面: 1. 解決全局樣式污染問題 在傳統的CSS管理方式中,樣式定義通常是全局的,這很容易導致全局樣式污染。當多個組件或頁面共享同一個樣式時,可能會出現樣式沖突和覆蓋的情況,從…