Nginx基礎(chǔ)四(Nginx的請求限制和連接限制)

一、語法

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

(1) 連接限制語法

Syntax:limit_conn_zone key zone=name:size;
Default: --
Context: http

Syntax:limit_conn zone number;
Default:--
Context:http,server,location

(2) 請求限制語法

Syntax:limit_req_zone key zone=name:size rate=rate;
Default: --
Context: http

Syntax:limit_req zone=name [burst=numaber] [nodelay];
Default:--
Context: http,server,location

二、未對請求和連接做限制的壓力測試

(1)yum install -y ab 安裝壓力測試工具ab
(2)ab -n 50 -c 20 http://192.168.122.1/test.html 手動(dòng)壓力測試,總共發(fā)起50個(gè)請求,并發(fā)數(shù)為20

以下為無任何配置下的壓力測試結(jié)果,測試結(jié)果含義可參考這篇文章

測試結(jié)果.png

三、對請求和連接做限制的壓力測試

(1)vi /etc/nginx/conf.d/default.conf 打開 default.conf 文件并添加配置

default.conf.png

limit_conn_zone $binary_remote_addr zone=conn_zone:1m;

釋意 : $binary_remote_addrremote_addr 都是指客戶端地址,但是存儲remote_addr比存儲$binary_remote_addr 會(huì)多十個(gè)字節(jié),一個(gè)會(huì)話多十個(gè)字節(jié),成千上萬個(gè)會(huì)話就需要多出很多空間,故而使用$binary_remote_addr
1m指的是:申請的空間大小為1M

limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;

釋意 :對于同一個(gè)remote_addr(客戶端地址)過來的請求,限制每秒只允許發(fā)起一個(gè)請求

limit_conn conn_zone 1

釋意 :連接限制,同一時(shí)刻,只允許一個(gè)ip連接

limit_req zone=req_zone burst=3 nodelay

釋意 :請求限制, burst=3 ,客戶端超過了指定的請求速率后,遺留的三個(gè)請求釋放到下一秒執(zhí)行(即對客戶端延遲響應(yīng)), nodelay:除了這3個(gè)請求外,其它超出的直接返回503(503:由于超載或停機(jī)維護(hù),服務(wù)器目前無法使用)

(2)接下來,可將四條注釋逐一取消進(jìn)行測試
以下為請求限制的測試:

limit_conn_zone $binary_remote_addr zone=conn_zone:1m;
limit_req_zone $binary_remote_addr zone=req_zone:1m rate=1r/s;
...
location / {
  root /opt/app/code;
  # limit_conn conn_zone 1;
  # limit_req zone=req_zone burst=3 nodelay;
  # limit_req zone=req_zone burst=3;
  limit_req zone=req_zone;
  index index.html index.htm;
}
...

查看錯(cuò)誤日志 tail -f /var/log/nginx/error.log

錯(cuò)誤日志.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容