Nginx加固的幾種方式(控制超時(shí)時(shí)間&限制客戶端下載速度&并發(fā)連接數(shù))
1.1 Nginx 控制超時(shí)時(shí)間配置
在 Nginx 服務(wù)器中,超時(shí)時(shí)間是一個(gè)重要的配置選項(xiàng),它決定了服務(wù)器在處理請(qǐng)求時(shí)等待客戶端響應(yīng)的最大時(shí)間。
通過(guò)適當(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"
輸出配置:

說(shuō)明:
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ù)是一種常見(jiàn)的服務(wù)器優(yōu)化策略。
通過(guò)限制每個(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 中,可以通過(guò)配置 limit_conn_module 模塊來(lái)限制客戶端的并發(fā)連接數(shù)。該模塊可以根據(jù)客戶端 IP 地址或其他標(biāo)識(shí)符來(lái)限制并發(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)求速率超過(guò)限制時(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。超過(guò)這個(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)文章
在Nginx服務(wù)器中配置mod_proxy反向代理的方法
這篇文章主要介紹了在Nginx服務(wù)器中配置mod_proxy反向代理的方法,Nginx服務(wù)器最大的特點(diǎn)就是作高性能反向代理使用,需要的朋友可以參考下2015-07-07
nginx多https證書(shū)配置實(shí)現(xiàn)
本文主要介紹了nginx多https證書(shū)配置實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-04-04
Nginx URL重寫rewrite機(jī)制原理及使用實(shí)例
這篇文章主要介紹了Nginx URL重寫(rewrite)機(jī)制原理及使用實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
解決nginx 503 Service Temporarily Unavailable方法示例
這篇文章主要介紹了解決nginx 503 Service Temporarily Unavailable方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
高并發(fā)nginx服務(wù)器的linux內(nèi)核優(yōu)化配置講解
今天小編就為大家分享一篇關(guān)于高并發(fā)nginx服務(wù)器的linux內(nèi)核優(yōu)化配置講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03

