模块: 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
时间: 2024-10-29 04:44:22