nginx請求限制配置方法
Nginx 是一個很強大的高性能Web和反向代理服務(wù),它具有很多非常優(yōu)越的特性:
在連接高并發(fā)的情況下,Nginx是Apache服務(wù)不錯的替代品:Nginx在美國是做虛擬主機生意的老板們經(jīng)常選擇的軟件平臺之一。能夠支持高達 50,000 個并發(fā)連接數(shù)的響應(yīng),感謝Nginx為我們選擇了 epoll and kqueue作為開發(fā)模型。
一、Nginx的請求限制
- limit_conn_module 連接頻率限制
- limit_req_module 請求頻率限制
二、HTTP協(xié)議的連接與請求
1、HTTP協(xié)議的連接與請求的概念
- HTTP請求是建立在一次TCP連接基礎(chǔ)之上,完成一次http協(xié)議的請求先要進行tcp的三次握手。
- 在TCP連接的基礎(chǔ)之上再建立HTTP的請求,一次TCP請求至少產(chǎn)生一次HTTP請求。
2、HTTP協(xié)議的連接與請求的圖解

3、HTTP協(xié)議的連接與請求的版本關(guān)系
| HTTP協(xié)議版本 | 連接關(guān)系 |
|---|---|
| HTTP1.0 | TCP不能復(fù)用 |
| HTTP1.1 | 順序性TCP復(fù)用 |
| HTTP2.0 | 多路復(fù)用TCP復(fù)用 |
三、Nginx連接限制的配置語法
1、limit_conn_zone的配置語法
- Syntax:limit_conn_zone key zone=name:size; limit_conn_zone表示申請的連接存儲空間。key 表示連接以哪個作為key,例如以客戶端的ip作為key,限制的就是客戶端的ip。zone=name表示申請的存儲空間的名稱。size表示申請的存儲空間的大小
- Default:—— 表示默認沒有配置
- Context:http 表示需要在http塊中進行配置
2、limit_conn的配置語法
- Syntax:limit_conn zone number; zone表示limit_conn_zone中申請的存儲空間的名稱,number表示并發(fā)請求的限制,即同一時間限制連接數(shù)
- Default:—— 表示默認沒有配置
- Context:http,server,location 表示需要在http塊或server塊或location塊中進行配置
四、Nginx請求限制的配置語法
1、limit_req_zone的配置語法
- Syntax:limit_req_zone key zone=name:size rate=rate; limit_req_zone表示申請的連接存儲空間。key 表示連接以哪個作為key,例如以客戶端的ip作為key,限制的就是客戶端的ip。zone=name表示申請的存儲空間的名稱。size表示申請的存儲空間的大小。rate表示請求的限制是多大,指的是一個限制的單位(以秒為單位)
- Default:—— 表示默認沒有配置
- Context:http 表示需要在http塊中進行配置
2、limit_req的配置語法
- Syntax:limit_req zone=name [burst = number] [nodelay]; zone=name表示limit_req_zone中申請的存儲空間的名稱;burst = number表示超過了設(shè)置的速率以后,遺留的請求數(shù)量放到下一秒執(zhí)行;
- Default:—— 表示默認沒有配置
- Context:http,server,location 表示需要在http塊或server塊或location塊中進行配置
五、Nginx請求限制的配置演示
1、先創(chuàng)建是一個submodule.html頁面,上傳到/opt/app/html目錄下,以便配置好sub_module模塊編譯參數(shù)后訪問/opt/app/html目錄下的submodule.html頁面,查看替換的內(nèi)容。
submodule.html頁面
<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>
瀏覽器訪問如下圖

2、編輯nginx.conf配置文件
[root@localhost /]# vim /etc/nginx/nginx.conf

3、在http塊中添加如下配置
#$binary_remote_addr表示客戶端的地址; #zone=req_zone表示同一個客戶端地址發(fā)起的請求的存儲空間名稱 #1r/s 表示每秒一次 limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;

4、在http塊的location塊中添加如下配置
#nginx連接請求限制的配置
location / {
root /opt/app/html;
limit_req zone=req_zone;
}

5、檢查配置修改的配置文件是否正確,返回successful表示配置文件修改無錯。否則檢查配置文件語法。

6、重新加載配置文件
[root@localhost /]# systemctl reload nginx

7、借助ab壓力測試工具做并發(fā)請求
ab壓力測試工具的安裝參考lz此博文鏈接:https://wwwxz.blog.csdn.net/article/details/118584751
#-n表示發(fā)起請求次數(shù),-c表示并發(fā)請求次數(shù) [root@localhost ~]# ab -n 20 -c 10 http://localhost/submodule.html

到此這篇關(guān)于nginx請求限制配置方法的文章就介紹到這了,更多相關(guān)nginx請求限制內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信