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]
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;
}
}