爬坑Nginx limit_req

本文介绍了Nginx的limit_req模块配置误区,澄清了rate参数实际含义,并通过实例展示了如何正确设置burst参数以避免大量503错误。正确理解limit_req的配置能有效限制请求速率,防止DDoS攻击,确保服务稳定性。

测试代码:https://github.com/MacwinWin/docker_nginx_quick_test
不知道什么时候开始,我对Nginx的limit_req印象是下面这样的:
下面的配置通过rate参数,实现每秒300次请求的处理

http {
  limit_req_zone  $binary_remote_addr zone=perip:2m rate=300r/s;
  server {
    location ~ / {
      limit_req zone=perip;
    }
  }
}

但如果你用ab进行测试,你会发现

>>> ab -c 300 -n 300 'http://0.0.0.0:8080/'
This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 0.0.0.0 (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Finished 300 requests


Server Software:        nginx/1.21.3
Server Hostname:        0.0.0.0
Server Port:            8080

Document Path:          /
Document Length:        153 bytes

Concurrency Level:      300
Time taken for tests:   0.183 seconds
Complete requests:      300
Failed requests:        275
   (Connect: 0, Receive: 0, Length: 275, Exceptions: 0)
Non-2xx responses:      300
Total transferred:      97500 bytes
HTML transferred:       50300 bytes
Requests per second:    1635.59 [#/sec] (mean)
Time per request:       183.420 [ms] (mean)
Time per request:       0.611 [ms] (mean, across all concu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值