1. 程式人生 > >Nginx基礎之請求限制

Nginx基礎之請求限制

基礎階段回顧:

Nginx基礎之簡介與快速安裝

Nginx基礎之安裝目錄和配置語法詳解

Nginx基礎之配置檔案nginx.conf

Nginx基礎之官方模組

前言知識: 

HTTP協議版本

連線關係

HTTP1.0 TCP不能複用
HTTP1.1 順序性TCP複用
HTTP2.0 多路複用TCP複用

HTTP請求建立在一次TCP連線基礎上, 一次TCP請求至少產生一次HTTP請求

連線頻率限制的配置語法: limit_conn_zone

開闢空間做儲存連線狀態:

systax: limit_conn_zone  $[Key的名稱, 例如nginx的ip對應的Key為remote_addr] zone=[開闢的空間的名稱(自定義的)]:[所要開闢的空間的大小, 例如1m/2m10m...];

default: 無配置

context: http域

呼叫上面自定義的空間名稱:

systax: limit_conn [要呼叫的自定義的空間的名稱] [併發限制數, 表示同一時間有多少個];

default: 無配置

context: http域/server域/location域

進入default.conf檔案進行配置:

藉助ab壓力測試工具進行壓力測試:

ab -n 20 -c 20 http://192.168.19.134/html2.html

情景① 不開啟任何配置:

情景② 開啟配置: 

限制併發連線數為1:

請求頻率限制的配置語法: limit_req_zone

開闢空間做儲存連線狀態:

systax: limit_req_zone $[Key的名稱, 例如nginx的ip對應的Key為remote_addr]

 zone=[開闢的空間的名稱(自定義的)]:[所要開闢的空間的大小, 例如1m/2m10m...] rate=[以秒為單位的請求限制多少個];

default: 無配置

context: http域

呼叫上面自定義的空間名稱:

systax: limit_req_zone=[要呼叫的自定義的空間的名稱] [burst=number] [nodelay];

default: 無配置

context: http域/server域/location域

進入default.conf檔案進行配置:

藉助ab壓力測試工具進行壓力測試:

ab -n 20 -c 20 http://192.168.19.134/html2.html

情景① 不開啟任何配置:

情景② 開啟配置:

無參:

設定引數burst=3和nodelay:

附上配置檔案中的內容:

limit_conn_zone $binary_remote_addr zone=conn_zone:1m;

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

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html/test;
        #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;
    }

    error_page   500 502 503 504 404  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}