模塊: ngx_http_limit_conn_module
作用: 根據定義的key限制並發連接數
配置示例:
http { limit_conn_zone $binary_remote_addr zone=addr:10m; ... server { ... location /api/ { limit_conn addr 10; limit_conn_status 503; } } }
說明: 示例中定義key(zone=addr)為addr,分配內存大小為10m(zone=addr:10m)(如果限制域的存儲空間耗盡了,對於后續所有請求,服務器都會返回 503),同一個ip($binary_remote_addr)和服務器連接超過10個(limit_conn addr 10)將會被攔截並返回503(limit_conn_status 503)錯誤碼
涉及指令:
limit_conn_zone
limit_conn
limit_conn_status
limit_conn_log_level
指令詳解:
limit_conn_zone 語法: limit_conn_zone key zone=name:size;(設置限制規則、區域名稱及分配的內存大小) 可配置區域: http key: 必選項;設置限制規則;取值可以是text文本、nginx變量或兩者的組合;實例中使用的nginx變量$binary_remote_addr表示根據每個ip限制並發 name: 必選項; 自定義一個區域名稱; 任意字符串 size: 分配內存的大小
limit_conn 語法: limit_conn zone number; (使用由limit_conn_zone定義的攔截規則, 並設置具體的限制連接數量) 可配置區域: http, server, location zone: 必選項; 由limit_conn_zone(zone=name)定義的名稱; 表示使用定義的哪個限制規則 number: 必選項; 正整數; 表示具體的限制連接數量
limit_conn_status 語法: limit_conn_status code; 默認值: 503 可配置區域: http, server, location 表示超出limit_req配置的請求數量后返回給客戶端的錯誤碼使用該指令最低版本 1.3.15
limit_conn_log_level 語法: limit_conn_log_level info | notice | warn | error; 默認值: limit_conn_log_level error; 可配置區域: http, server, location 當服務器拒絕處理由於速率超過或延遲請求處理而拒絕處理請求時,設置所需的日志記錄級別。 最低版本: 0.8.18