nginx請(qǐng)求限制配置方法
Nginx 是一個(gè)很強(qiáng)大的高性能Web和反向代理服務(wù),它具有很多非常優(yōu)越的特性:
在連接高并發(fā)的情況下,Nginx是Apache服務(wù)不錯(cuò)的替代品:Nginx在美國(guó)是做虛擬主機(jī)生意的老板們經(jīng)常選擇的軟件平臺(tái)之一。能夠支持高達(dá) 50,000 個(gè)并發(fā)連接數(shù)的響應(yīng),感謝Nginx為我們選擇了 epoll and kqueue作為開(kāi)發(fā)模型。
一、Nginx的請(qǐng)求限制
- limit_conn_module 連接頻率限制
- limit_req_module 請(qǐng)求頻率限制
二、HTTP協(xié)議的連接與請(qǐng)求
1、HTTP協(xié)議的連接與請(qǐng)求的概念
- HTTP請(qǐng)求是建立在一次TCP連接基礎(chǔ)之上,完成一次http協(xié)議的請(qǐng)求先要進(jìn)行tcp的三次握手。
- 在TCP連接的基礎(chǔ)之上再建立HTTP的請(qǐng)求,一次TCP請(qǐng)求至少產(chǎn)生一次HTTP請(qǐng)求。
2、HTTP協(xié)議的連接與請(qǐng)求的圖解
3、HTTP協(xié)議的連接與請(qǐng)求的版本關(guān)系
HTTP協(xié)議版本 | 連接關(guān)系 |
---|---|
HTTP1.0 | TCP不能復(fù)用 |
HTTP1.1 | 順序性TCP復(fù)用 |
HTTP2.0 | 多路復(fù)用TCP復(fù)用 |
三、Nginx連接限制的配置語(yǔ)法
1、limit_conn_zone的配置語(yǔ)法
- Syntax:limit_conn_zone key zone=name:size; limit_conn_zone表示申請(qǐng)的連接存儲(chǔ)空間。key 表示連接以哪個(gè)作為key,例如以客戶端的ip作為key,限制的就是客戶端的ip。zone=name表示申請(qǐng)的存儲(chǔ)空間的名稱。size表示申請(qǐng)的存儲(chǔ)空間的大小
- Default:—— 表示默認(rèn)沒(méi)有配置
- Context:http 表示需要在http塊中進(jìn)行配置
2、limit_conn的配置語(yǔ)法
- Syntax:limit_conn zone number; zone表示limit_conn_zone中申請(qǐng)的存儲(chǔ)空間的名稱,number表示并發(fā)請(qǐng)求的限制,即同一時(shí)間限制連接數(shù)
- Default:—— 表示默認(rèn)沒(méi)有配置
- Context:http,server,location 表示需要在http塊或server塊或location塊中進(jìn)行配置
四、Nginx請(qǐng)求限制的配置語(yǔ)法
1、limit_req_zone的配置語(yǔ)法
- Syntax:limit_req_zone key zone=name:size rate=rate; limit_req_zone表示申請(qǐng)的連接存儲(chǔ)空間。key 表示連接以哪個(gè)作為key,例如以客戶端的ip作為key,限制的就是客戶端的ip。zone=name表示申請(qǐng)的存儲(chǔ)空間的名稱。size表示申請(qǐng)的存儲(chǔ)空間的大小。rate表示請(qǐng)求的限制是多大,指的是一個(gè)限制的單位(以秒為單位)
- Default:—— 表示默認(rèn)沒(méi)有配置
- Context:http 表示需要在http塊中進(jìn)行配置
2、limit_req的配置語(yǔ)法
- Syntax:limit_req zone=name [burst = number] [nodelay]; zone=name表示limit_req_zone中申請(qǐng)的存儲(chǔ)空間的名稱;burst = number表示超過(guò)了設(shè)置的速率以后,遺留的請(qǐng)求數(shù)量放到下一秒執(zhí)行;
- Default:—— 表示默認(rèn)沒(méi)有配置
- Context:http,server,location 表示需要在http塊或server塊或location塊中進(jìn)行配置
五、Nginx請(qǐng)求限制的配置演示
1、先創(chuàng)建是一個(gè)submodule.html頁(yè)面,上傳到/opt/app/html目錄下,以便配置好sub_module模塊編譯參數(shù)后訪問(wèn)/opt/app/html目錄下的submodule.html頁(yè)面,查看替換的內(nèi)容。
submodule.html頁(yè)面
<html> <head> <meta charset="utf-8"> <title>submodule</title> </head> <body> <a>html</a></br> <a>xml</a></br> <a>json</a></br> <a>xml</a></br> <a>jsp</a></br> <a>html</a> </body> </html>
瀏覽器訪問(wèn)如下圖
2、編輯nginx.conf配置文件
[root@localhost /]# vim /etc/nginx/nginx.conf
3、在http塊中添加如下配置
#$binary_remote_addr表示客戶端的地址; #zone=req_zone表示同一個(gè)客戶端地址發(fā)起的請(qǐng)求的存儲(chǔ)空間名稱 #1r/s 表示每秒一次 limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;
4、在http塊的location塊中添加如下配置
#nginx連接請(qǐng)求限制的配置 location / { root /opt/app/html; limit_req zone=req_zone; }
5、檢查配置修改的配置文件是否正確,返回successful表示配置文件修改無(wú)錯(cuò)。否則檢查配置文件語(yǔ)法。
6、重新加載配置文件
[root@localhost /]# systemctl reload nginx
7、借助ab壓力測(cè)試工具做并發(fā)請(qǐng)求
ab壓力測(cè)試工具的安裝參考lz此博文鏈接:https://wwwxz.blog.csdn.net/article/details/118584751
#-n表示發(fā)起請(qǐng)求次數(shù),-c表示并發(fā)請(qǐng)求次數(shù) [root@localhost ~]# ab -n 20 -c 10 http://localhost/submodule.html
到此這篇關(guān)于nginx請(qǐng)求限制配置方法的文章就介紹到這了,更多相關(guān)nginx請(qǐng)求限制內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。