nginx請求限制配置方法

Nginx 是一個很強大的高性能Web和反向代理服務,它具有很多非常優越的特性:
在連接高並發的情況下,Nginx是Apache服務不錯的替代品:Nginx在美國是做虛擬主機生意的老板們經常選擇的軟件平臺之一。能夠支持高達 50,000 個並發連接數的響應,感謝Nginx為我們選擇瞭 epoll and kqueue作為開發模型。

一、Nginx的請求限制

  • limit_conn_module 連接頻率限制
  • limit_req_module 請求頻率限制

二、HTTP協議的連接與請求

1、HTTP協議的連接與請求的概念

  • HTTP請求是建立在一次TCP連接基礎之上,完成一次http協議的請求先要進行tcp的三次握手。
  • 在TCP連接的基礎之上再建立HTTP的請求,一次TCP請求至少產生一次HTTP請求。

2、HTTP協議的連接與請求的圖解

在這裡插入圖片描述

3、HTTP協議的連接與請求的版本關系

HTTP協議版本 連接關系
HTTP1.0 TCP不能復用
HTTP1.1 順序性TCP復用
HTTP2.0 多路復用TCP復用

三、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表示並發請求的限制,即同一時間限制連接數
  • 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表示超過瞭設置的速率以後,遺留的請求數量放到下一秒執行;
  • Default:—— 表示默認沒有配置
  • Context:http,server,location 表示需要在http塊或server塊或location塊中進行配置

五、Nginx請求限制的配置演示

1、先創建是一個submodule.html頁面,上傳到/opt/app/html目錄下,以便配置好sub_module模塊編譯參數後訪問/opt/app/html目錄下的submodule.html頁面,查看替換的內容。

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表示同一個客戶端地址發起的請求的存儲空間名稱
#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壓力測試工具做並發請求

ab壓力測試工具的安裝參考lz此博文鏈接:https://wwwxz.blog.csdn.net/article/details/118584751

#-n表示發起請求次數,-c表示並發請求次數 
[root@localhost ~]# ab -n 20 -c 10 http://localhost/submodule.html

在這裡插入圖片描述

到此這篇關於nginx請求限制配置方法的文章就介紹到這瞭,更多相關nginx請求限制內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: