Nginx加固的幾種方式(控制超時(shí)時(shí)間&限制客戶端下載速度&并發(fā)連接數(shù))
1.1 Nginx 控制超時(shí)時(shí)間配置
在 Nginx 服務(wù)器中,超時(shí)時(shí)間是一個(gè)重要的配置選項(xiàng),它決定了服務(wù)器在處理請(qǐng)求時(shí)等待客戶端響應(yīng)的最大時(shí)間。
通過適當(dāng)配置超時(shí)時(shí)間,可以提高服務(wù)器的性能和穩(wěn)定性。本文將介紹如何在 Nginx 中配置不同類型的超時(shí)時(shí)間。
編輯nginx.conf,是否存在如下內(nèi)容:
keepalive_timeout 5 5; #第一個(gè)參數(shù)指定客戶端連接保持活動(dòng)的超時(shí)時(shí)間,第二個(gè)參數(shù)是可選的,它指定了消息頭保持活動(dòng)的有效時(shí)間 client_body_timeout 10; #設(shè)置客戶端請(qǐng)求主體讀取超時(shí)時(shí)間 client_header_timeout 10; #設(shè)置客戶端請(qǐng)求頭讀取超時(shí)時(shí)間 send_timeout 10; #指定響應(yīng)客戶端的超時(shí)時(shí)間
存在以上內(nèi)容則合規(guī),否則不合規(guī)。
加固步驟:
1、編輯nginx.conf,配置如下內(nèi)容(如果存在則修改,不存在則新增):
keepalive_timeout 5 5; #第一個(gè)參數(shù)指定客戶端連接保持活動(dòng)的超時(shí)時(shí)間,第二個(gè)參數(shù)是可選的,它指定了消息頭保持活動(dòng)的有效時(shí)間 client_body_timeout 10; #設(shè)置客戶端請(qǐng)求主體讀取超時(shí)時(shí)間 client_header_timeout 10; #設(shè)置客戶端請(qǐng)求頭讀取超時(shí)時(shí)間 send_timeout 10; #指定響應(yīng)客戶端的超時(shí)時(shí)間
2、重新加載或者重啟nginx服務(wù)
/usr/local/nginx/sbin/nginx -s reload ##加載配置 /usr/local/nginx/sbin/nginx -s stop ##停止 /usr/local/nginx/sbin/nginx ##啟動(dòng)
3、驗(yàn)證配置
##使用命令 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中使用。
需要根據(jù)應(yīng)用場(chǎng)景的需要選擇合適的參數(shù)值.
1.2 Nginx 限制客戶端下載速度&并發(fā)連接數(shù)
在高并發(fā)的網(wǎng)絡(luò)環(huán)境下,限制客戶端下載的并發(fā)連接數(shù)是一種常見的服務(wù)器優(yōu)化策略。
通過限制每個(gè)客戶端可以同時(shí)建立的連接數(shù)量,可以有效控制服務(wù)器的負(fù)載,提高系統(tǒng)的穩(wěn)定性和性能。本文將介紹如何在 Nginx 中配置限制客戶端下載的并發(fā)連接數(shù)。
1、編輯文件nginx.conf,查看是否存在如下配置:
limit_zone one $binary_remote_addr 10m; limit_conn one 10;
判定依據(jù):
1).限制了每個(gè)ip能發(fā)起的并發(fā)連接數(shù)
2).設(shè)置了存儲(chǔ)session狀態(tài)的容器
以上兩個(gè)條件同時(shí)滿足則合規(guī),否則不合規(guī)。
加固步驟:
配置示例:
在 Nginx 中,可以通過配置 limit_conn_module 模塊來限制客戶端的并發(fā)連接數(shù)。該模塊可以根據(jù)客戶端 IP 地址或其他標(biāo)識(shí)符來限制并發(fā)連接數(shù)。
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; #限制每個(gè)連接的限制速度為20K,IP的下載速度為連接數(shù)*限制速度
}
}
………
}
配置指令的含義如下:
limit_req_zone $binary_remote_addr zone=req_limit_zone:10m rate=1r/s;
limit_req_zone: 這是 Nginx 的指令,用于定義一個(gè)請(qǐng)求速率限制區(qū)域。
$binary_remote_addr: 這是一個(gè) Nginx 內(nèi)置變量,表示客戶端的二進(jìn)制形式的遠(yuǎn)程地址。
zone=req_limit_zone:10m: 這里定義了一個(gè)名為 req_limit_zone 的請(qǐng)求速率限制區(qū)域,大小為 10MB。
rate=1r/s: 這表示在 req_limit_zone 區(qū)域內(nèi),每秒允許的請(qǐng)求速率為 1 個(gè)請(qǐng)求。
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
limit_conn_zone: 這是 Nginx 的指令,用于定義一個(gè)連接數(shù)限制區(qū)域。
$binary_remote_addr: 這是一個(gè) Nginx 內(nèi)置變量,表示客戶端的二進(jìn)制形式的遠(yuǎn)程地址。
zone=conn_zone:10m: 這里定義了一個(gè)名為 conn_zone 的連接數(shù)限制區(qū)域,大小為 10MB。
limit_req zone=req_limit_zone burst=5 nodelay;
limit_req: 這是 Nginx 的指令,用于設(shè)置請(qǐng)求速率限制。
zone=req_limit_zone: 這指定了要應(yīng)用的請(qǐng)求速率限制區(qū)域,即之前定義的 req_limit_zone。
burst=5: 這表示在達(dá)到請(qǐng)求速率限制時(shí),允許的最大突發(fā)請(qǐng)求數(shù)為 5。當(dāng)請(qǐng)求速率超過限制時(shí),允許一定數(shù)量的請(qǐng)求突發(fā)到達(dá)。
nodelay: 這表示不延遲請(qǐng)求,即不等待,立即應(yīng)用速率限制。
limit_conn conn_zone 10;
limit_conn: 這是 Nginx 的指令,用于設(shè)置連接數(shù)限制。
conn_zone: 這指定了要應(yīng)用的連接數(shù)限制區(qū)域,即之前定義的 conn_zone。
10: 這表示允許的最大連接數(shù)為 10。超過這個(gè)連接數(shù)限制時(shí),新的連接將被拒絕。
limit_rate 20k;
限制每個(gè)連接的限制速度為20K,IP的下載速度為連接數(shù)*限制速度
(2).重啟nginx服務(wù)
./nginx -s reload # 加載nginx配置 ./nginx -s stop # 停止 ./nginx #啟動(dòng)
根據(jù)應(yīng)用場(chǎng)景的需要進(jìn)行并發(fā)數(shù)、速度限制 。
注:
limit_zone 這個(gè)變量只能在http中使用
limit_coon和limit_rate變量可以在http,server,location中使用
nginx自從1.1.8版本發(fā)布后將limit_conn更換為limit_conn_zone。需要在配置文件中將 limit_zone 修改為 limit_conn_zone,然后重新加載 Nginx 配置文件。
否則會(huì)出現(xiàn)錯(cuò)誤:
nginx: [emerg] unknown directive "limit_zone" in /usr/local/nginx/conf/nginx.conf:37


到此這篇關(guān)于Nginx加固的幾種方式(控制超時(shí)時(shí)間&限制客戶端下載速度&并發(fā)連接數(shù))的文章就介紹到這了,更多相關(guān)Nginx加固內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL操作Pandas?DataFrame的三種方式示例詳解
這篇文章主要為大家介紹了SQL操作Pandas?DataFrame的三種方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
Windows下Nginx的啟動(dòng)停止等基本操作命令詳解
在Windows下使用Nginx,我們需要掌握一些基本的操作命令,今天為大家分享幾個(gè)Windows下操作Nginx的基本命令2018-10-10
Nginx 中 ssl_buffer_size 參數(shù)調(diào)優(yōu)的具體實(shí)現(xiàn)
ssl_buffer_size 不是越大越好,也不是越小越快,它本質(zhì)是在首包響應(yīng)速度和 TLS 協(xié)議開銷之間做取舍,本文主要介紹了Nginx 中 ssl_buffer_size 參數(shù)調(diào)優(yōu)的具體實(shí)現(xiàn),感興趣的可以了解一下2026-04-04
nginx rewrite重寫規(guī)則與防盜鏈配置方法教程詳解
這篇文章主要介紹了nginx rewrite重寫規(guī)則與防盜鏈配置方法教程詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
Nginx配置四層、七層網(wǎng)絡(luò)代理轉(zhuǎn)發(fā)的方法示例
nginx作為透明代理可以充分利用其高性能和靈活性來實(shí)現(xiàn)網(wǎng)絡(luò)流量的轉(zhuǎn)發(fā)和處理,本文主要介紹了Nginx配置四層、七層網(wǎng)絡(luò)代理轉(zhuǎn)發(fā)的方法示例,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
nginx反向代理60s超時(shí)報(bào)錯(cuò)問題解決
本文主要介紹了Nginx反向代理時(shí)遇到60秒超時(shí)報(bào)錯(cuò)的問題,經(jīng)過排查發(fā)現(xiàn)是由于代理服務(wù)執(zhí)行時(shí)間過長導(dǎo)致的,具有一定的參考價(jià)值,感興趣的可以了解一下2025-02-02
使用Nginx反向代理實(shí)現(xiàn)多端口跳轉(zhuǎn)的實(shí)戰(zhàn)分享
在現(xiàn)代Web開發(fā)中,Nginx作為一款高性能的開源反向代理服務(wù)器,提供了強(qiáng)大的功能來管理網(wǎng)絡(luò)流量和路由,本文將介紹如何利用 Nginx 的反向代理功能,以實(shí)現(xiàn)多端口跳轉(zhuǎn)的效果,需要的朋友可以參考下2024-02-02

