中間件-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💖點點關注,收藏不迷路💖 |