中間件-Nginx加固(控制超時時間限制客戶端下載速度并發連接數)

中間件-Nginx加固(控制超時時間&限制客戶端下載速度&并發連接數)

    • 1.1 Nginx 控制超時時間配置
    • 1.2 Nginx 限制客戶端下載速度&并發連接數


💖The Begin💖點點關注,收藏不迷路💖

1.1 Nginx 控制超時時間配置

在 Nginx 服務器中,超時時間是一個重要的配置選項,它決定了服務器在處理請求時等待客戶端響應的最大時間。

通過適當配置超時時間,可以提高服務器的性能和穩定性。本文將介紹如何在 Nginx 中配置不同類型的超時時間。

編輯nginx.conf,是否存在如下內容:

keepalive_timeout 5 5;    #第一個參數指定客戶端連接保持活動的超時時間,第二個參數是可選的,它指定了消息頭保持活動的有效時間
client_body_timeout 10;   #設置客戶端請求主體讀取超時時間
client_header_timeout 10; #設置客戶端請求頭讀取超時時間
send_timeout 10;          #指定響應客戶端的超時時間

存在以上內容則合規,否則不合規。

加固步驟:

1、編輯nginx.conf,配置如下內容(如果存在則修改,不存在則新增):

keepalive_timeout 5 5;    #第一個參數指定客戶端連接保持活動的超時時間,第二個參數是可選的,它指定了消息頭保持活動的有效時間
client_body_timeout 10;   #設置客戶端請求主體讀取超時時間
client_header_timeout 10; #設置客戶端請求頭讀取超時時間
send_timeout 10;          #指定響應客戶端的超時時間

2、重新加載或者重啟nginx服務

/usr/local/nginx/sbin/nginx -s reload  ##加載配置/usr/local/nginx/sbin/nginx -s stop   ##停止
/usr/local/nginx/sbin/nginx           ##啟動

3、驗證配置

##使用命令cat /usr/local/nginx/conf/nginx.conf |sed "/\s*#/d"|sed "/^\s*$/d"|egrep -i "client_body_timeout|client_header_timeout|keepalive_timeout|send_timeout"

輸出配置:

在這里插入圖片描述

說明:

client_header_timeout變量可以在http,server中使用。
client_body_timeout、keepalive_timeout、sendtimeout變量可以在http,server,location中使用。

需要根據應用場景的需要選擇合適的參數值.

1.2 Nginx 限制客戶端下載速度&并發連接數

在高并發的網絡環境下,限制客戶端下載的并發連接數是一種常見的服務器優化策略。

通過限制每個客戶端可以同時建立的連接數量,可以有效控制服務器的負載,提高系統的穩定性和性能。本文將介紹如何在 Nginx 中配置限制客戶端下載的并發連接數。

1、編輯文件nginx.conf,查看是否存在如下配置:

limit_zone one $binary_remote_addr 10m;
limit_conn one 10;

判定依據:

1).限制了每個ip能發起的并發連接數
2).設置了存儲session狀態的容器

以上兩個條件同時滿足則合規,否則不合規。

加固步驟:

配置示例:

在 Nginx 中,可以通過配置 limit_conn_module 模塊來限制客戶端的并發連接數。該模塊可以根據客戶端 IP 地址或其他標識符來限制并發連接數。

http
{limit_req_zone $binary_remote_addr zone=req_limit_zone:10m rate=1r/s;limit_conn_zone $binary_remote_addr zone=conn_zone:10m;…… 
server 
{ listen 80 server_name down.nsfocus.com; index index.html index.htm index.php; root /usr/local/nsfocus; #Zone limit; location / { limit_req zone=req_limit_zone burst=5 nodelay;limit_conn conn_zone 10;limit_rate 20k;   #限制每個連接的限制速度為20K,IP的下載速度為連接數*限制速度 }
}……… 
} 

配置指令的含義如下:

limit_req_zone $binary_remote_addr zone=req_limit_zone:10m rate=1r/s;

limit_req_zone: 這是 Nginx 的指令,用于定義一個請求速率限制區域。
$binary_remote_addr: 這是一個 Nginx 內置變量,表示客戶端的二進制形式的遠程地址。
zone=req_limit_zone:10m: 這里定義了一個名為 req_limit_zone 的請求速率限制區域,大小為 10MB。
rate=1r/s: 這表示在 req_limit_zone 區域內,每秒允許的請求速率為 1 個請求。

limit_conn_zone $binary_remote_addr zone=conn_zone:10m;

limit_conn_zone: 這是 Nginx 的指令,用于定義一個連接數限制區域。
$binary_remote_addr: 這是一個 Nginx 內置變量,表示客戶端的二進制形式的遠程地址。
zone=conn_zone:10m: 這里定義了一個名為 conn_zone 的連接數限制區域,大小為 10MB。

limit_req zone=req_limit_zone burst=5 nodelay;

limit_req: 這是 Nginx 的指令,用于設置請求速率限制。
zone=req_limit_zone: 這指定了要應用的請求速率限制區域,即之前定義的 req_limit_zone。
burst=5: 這表示在達到請求速率限制時,允許的最大突發請求數為 5。當請求速率超過限制時,允許一定數量的請求突發到達。
nodelay: 這表示不延遲請求,即不等待,立即應用速率限制。

limit_conn conn_zone 10;

limit_conn: 這是 Nginx 的指令,用于設置連接數限制。
conn_zone: 這指定了要應用的連接數限制區域,即之前定義的 conn_zone。
10: 這表示允許的最大連接數為 10。超過這個連接數限制時,新的連接將被拒絕。

limit_rate 20k;

限制每個連接的限制速度為20K,IP的下載速度為連接數*限制速度

(2).重啟nginx服務

./nginx -s reload   # 加載nginx配置
./nginx -s stop    # 停止
./nginx   #啟動

根據應用場景的需要進行并發數、速度限制 。

注:

limit_zone 這個變量只能在http中使用 
limit_coon和limit_rate變量可以在http,server,location中使用

nginx自從1.1.8版本發布后將limit_conn更換為limit_conn_zone。需要在配置文件中將 limit_zone 修改為 limit_conn_zone,然后重新加載 Nginx 配置文件。

否則會出現錯誤:

nginx: [emerg] unknown directive "limit_zone" in /usr/local/nginx/conf/nginx.conf:37

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述


💖The End💖點點關注,收藏不迷路💖

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

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

相關文章

TypeScript07:枚舉enum

一、擴展類型 擴展類型:類型別名、枚舉、接口、類。 枚舉:通常用于約束某個變量的取值范圍。 字面量和聯合類型配合使用,也可以達到同樣的目標。 二、字面量類型的問題 在類型約束位置,會產生重復代碼。可以使用類型別名解…

PSMC:繪圖腳本 psmc_plot.pl 腳本參數詳解

=> psmc_plot.plUsage: psmc_plot.pl [options] <out.prefix> <in.psmc>Options: -u FLOAT absolute mutation rate per nucleotide [2.5e-08]-s INT skip used in data preparation [100]-X FLOAT maximum generations,

機器學習圖像識別如何處理標簽以外的圖像?

機器學習圖像識別技術是一種基于人工智能的圖像處理方法&#xff0c;它通過訓練大量的圖像數據集來讓計算機學習如何識別和分類圖像。在圖像識別任務中&#xff0c;我們通常需要對圖像進行標注和分類&#xff0c;以便讓計算機能夠從中學習。但是&#xff0c;有時候我們可能會遇…

大數據旅游數據分析:基于Python旅游數據采集可視化分析推薦系統

文章目錄 基于Python旅游數據采集可視化分析推薦系統一、項目概述二、項目說明三、開發環境四、功能實現五、系統頁面實現用戶登錄注冊系統首頁數據操作管理價格與銷量分析旅游城市和景點等級分析旅游數據評分情況分析旅游數據評論情況分析旅游景點推薦Django系統后臺管理 六、…

centos7 安裝python3.8運行導入ssl報錯,親測驗證有效版

centos安裝python3.7時遇到如下問題&#xff0c;查閱知需要的openssl版本最低為1.0.2&#xff0c;但是centos 默認的為1.0.1&#xff0c;所以需要重新更新openssl import _ssl # if we cant import it, let the error propagate ImportError: No module named _ssl1、安…

【前端早早聊直播回顧】Harmony 時代的跨端方案

上周末&#xff0c;凡泰極客CTO - 徐鵬受邀出席「前端早早聊」直播活動&#xff0c;并以【跨端新挑戰-鴻蒙時代的跨端】為主題進行演講。 摘取部分分享實錄&#xff1a; 終端系統的數量和種類不斷增長&#xff0c;開發者面臨著多平臺開發的挑戰。以往開發者一般只需要維護iOS、…

2024年3月阿里云服務器大規模價格下調后優惠折扣表

阿里云服務器ECS等核心產品價格全線下調&#xff0c;最高幅度達55%&#xff0c;2024年3月1日生效&#xff0c;針對ECS部分在售產品的官網折扣價、ECS計算型節省計劃進行調整&#xff0c;生效后&#xff0c;基于官網折扣價的新購和續費&#xff0c;將按照新的價格進行計費。阿里…

程序媛的mac修煉手冊-- Node.js入門篇

最近因為參與一個微信小程序的開發&#xff0c;開始摸索JavaScript。期間&#xff0c;需要基于Node.js安裝微信開發工具的依賴項&#xff0c;所以又順帶學習了Node.js的包管理工具npm&#xff08;Node Package Manager&#xff09;。不過&#xff0c;之前看到國外的全棧大佬??…

flutter學習(一) 安裝以及配置環境

首先需要下載flutter&#xff0c;然后解壓 然后配置環境變量&#xff0c;配置到bin目錄就行 配置完之后cmd運行flutter doctor 你就會發現&#xff0c;都是錯 此時腦海里響起&#xff0c;臥槽&#xff0c;怎么回事&#xff0c;咋辦 別著急&#xff0c;我教你。。。 問題 這…

RK3568 RK809電源管理 RTC功能使能 定時喚醒

概述 RK809 是一款高性能 PMIC,RK809 集成 5 個大電流 DCDC、9 個 LDO、2 個 開關SWITCH、 1個 RTC、1個 高性能CODEC、可調上電時序等功能。 系統中各路電源總體分為兩種:DCDC 和 LDO。兩種電源的總體特性如下(詳細資料請自行搜索): DCDC:輸入輸出壓差大時,效率高,但…

python學習筆記 - 標準庫常量

Python 中有一些內置的常量&#xff0c;它們是一些特殊的值&#xff0c;通常不會改變。以下是其中一些常見的內置常量及其詳細解釋以及使用示例&#xff1a; True&#xff1a; 表示布爾值真。給 True 賦值是非法的并會引發 SyntaxError。 x True print(x) # 輸出&#xff1a…

內網穿透 nas/樹莓派+ipv4服務器 (ipv6)

nas 1.有個服務器 2.有個nas https://github.com/snail007/goproxy/blob/master/README_ZH.md https://github.com/snail007/proxy_admin_free/blob/master/README_ZH.md 2個官網一個是程序&#xff0c;一個是網站 手冊 https://snail007.host900.com/goproxy/manual/zh/#/?i…

Unity3D Shader事項法線貼圖功能詳解

前言 Unity3D它提供了豐富的功能和工具&#xff0c;使開發人員能夠輕松創建出色的游戲和應用程序。其中Shader是Unity3D中非常重要的一部分&#xff0c;它可以幫助開發人員實現各種視覺效果&#xff0c;包括法線貼圖功能。 對惹&#xff0c;這里有一個游戲開發交流小組&#…

rocketmq+rocket-dashboard win10安裝部署+注冊為Windows服務

1.1 首先去官網下載zip包 選擇自己需要的版本 下載 | RocketMQ 1.2 、下載后&#xff0c;解壓到指定目錄 1.3、配置RocketMQ環境變量 注意&#xff0c;看對應的版本需要jdk版本 1.4、啟動mqnameserver 進入bin目錄下&#xff0c;雙擊啟動mqnamesrv.cmd 啟動后&#xff0c;…

灰度圖像轉化為黑白圖像、轉化圖像為一位位深度的圖像(僅保留黑色)

/// <summary> /// 灰度圖像處理 /// </summary> public class PicGray {/// <summary>/// 獲取pic圖像對應的黑白圖像/// </summary>/// <param name"pic"></param>/// <param name"NumGray">像素灰度值</p…

webpack5基礎--02_基本配置( 5 大核心概念)

基本配置 在開始使用 Webpack 之前&#xff0c;我們需要對 Webpack 的配置有一定的認識。 5 大核心概念 entry&#xff08;入口&#xff09; 指示 Webpack 從哪個文件開始打包 output&#xff08;輸出&#xff09; 指示 Webpack 打包完的文件輸出到哪里去&#xff0c;如何…

Vue項目構建時遇到的問題

Vue項目構建時遇到的問題與上線相關問題 項目構建遇到的問題構建指令關于JavaScript文件無法識別的問題關于element-plus組件庫中的模塊顯示找不到的問題關于路由懶加載時組件路徑報錯問題關于項目靜態資源基準路徑的設置關于路由模式的問題 關于nginx服務器的使用 項目構建遇到…

事物管理(黑馬學習筆記)

事物回顧 在數據庫階段我們已學習過事務了&#xff0c;我們講到&#xff1a; 事物是一組操作的集合&#xff0c;它是一個不可分割的工作單位。事務會把所有的操作作為一個整體&#xff0c;一起向數據庫提交或者是撤銷操作請求。所以這組操作要么同時成功&#xff0c;要么同時…

java實現根據 表索引 批量新增或更新數據信息

目的 通過數據庫名、表名實現動態添加活更新數據。添加或更新由唯一索引判斷。 實現 思路 查詢數據庫表的唯一索引-CSDN博客 根據數據庫表名動態查詢表字段-CSDN博客 達夢數據庫根據唯一索引批量新增或更新數據-CSDN博客 將數據轉換為sql語句需要的格式 完善代碼&#xff0c;實…

maven常用打包命令

1.背景 2.代碼 1 mvn常用命令 一般情況下對于一個maven項目&#xff0c;cd切換到當前項目路徑下&#xff0c;執行如下示例命令即可對項目進行打包。 mvn clean install mvn -U clean package -Dmaven.test.skiptrue mvn clean package -Dmaven.test.skiptrue -P prod mvn cle…