Nginx请求频率限制模块详细说明以及案例
参考资料
Nginx的请求频率限制模块主要通过ngx_http_limit_req_module实现,用于限制客户端请求的频率,防止恶意请求或DDoS攻击。
模块配置指令
limit_req_zone
定义共享内存区域,用于存储请求频率的状态。limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
$binary_remote_addr:基于客户端IP地址进行限制。zone=one:10m:定义名为one的共享内存区域,大小为10MB。rate=1r/s:限制请求速率为每秒1个请求。limit_req
在特定位置或服务器块中应用请求频率限制。location /api/ { limit_req zone=one burst=5 nodelay; }zone=one:引用limit_req_zone定义的共享内存区域。burst=5:允许突发5个请求。nodelay:立即处理突发请求,不延迟。limit_req_status
定义当请求被拒绝时返回的HTTP状态码,默认是503。limit_req_status 429;
limit_req_log_level
定义记录请求被拒绝时的日志级别,默认是error。limit_req_log_level warn;
案例
假设需要限制客户端每秒最多请求1次,允许突发5个请求,并立即处理突发请求。
在
http块中定义共享内存区域:http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; }在
location块中应用限制:server { location /api/ { limit_req zone=one burst=5 nodelay; proxy_pass http://backend; } }配置日志级别和状态码(可选):
http { limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; limit_req_status 429; limit_req_log_level warn; }
解释
客户端每秒最多请求1次,超过限制的请求会被延迟或拒绝。
burst=5允许突发5个请求,nodelay表示立即处理突发请求。如果请求被拒绝,返回429状态码,并记录警告日志。
通过以上配置,可以有效防止恶意请求或DDoS攻击。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
本文来自《西里网 . 宝塔 | 西里网》 -- 发布时间:2025-03-29
本页链接:https://bt.ciilii.com/show/news-76.html
原创声明:本篇文章均为西里网原创,由《DeepSeek-R1 模型》自动生成。内容真实性仅供参考学习。
本作品采用 知识共享署名—非商业性使用—相同方式共享 4.0 国际许可协议 (CC BY-NC-SA 4.0) 进行许可。
