nginx的ip限制

nginx的ip限制
一、全局配置nginx.confhttp { # 已有的不用动 limit_conn_zone $binary_remote_addr zoneperip:10m; limit_conn_zone $server_name zoneperserver:10m; # 需要新增速率限制 limit_req_zone $binary_remote_addr zoneone:10m rate5r/s; }二、网站配置server { location /app-api/ { # 1️⃣ 并发连接限制每个IP最多5个同时连接 limit_conn perip 5; limit_conn_status 460; error_page 460 conn_limit; # 2️⃣ 请求速率限制每个IP每秒最多5个请求 limit_req zoneone burst10 nodelay; limit_req_status 461; error_page 461 rate_limit; } # 连接数超限响应460 location conn_limit { default_type application/json; return 460 {code:460,type:CONNECTION_LIMIT,msg:连接数过多最多5个并发,limit:5}; } # 请求频率超限响应461 location rate_limit { default_type application/json; return 461 {code:461,type:RATE_LIMIT,msg:请求频率过高每秒最多5次,limit:5r/s}; } }三、配置说明配置项作用状态码说明limit_conn perip 5每个IP最多5个同时连接460防并发攻击limit_req zoneone rate5r/s每个IP每秒最多5个请求461防高频攻击四、两种限制的区别对比并发限制速率限制限制什么同时占用的连接数每秒发多少请求攻击场景慢连接、多连接高频请求、爆破配置limit_conn perip 5limit_req zoneone burst10状态码460461五、操作步骤1. 编辑全局配置宝塔 → 软件商店 → Nginx → 设置 → 配置修改在 http { } 中添加limit_req_zone $binary_remote_addr zoneone:10m rate5r/s;2. 编辑网站配置宝塔 → 网站 → www.yougosz.com → 设置 → 配置文件在 location /app-api/ { } 中添加限流配置3. 保存并重载nginx -tnginx -s reload六、最终效果恶意IP221.229.x.x├── 同时超过5个连接 → 返回 460├── 每秒超过5个请求 → 返回 461└── 数据库连接池不会被耗尽 ✅正常用户├── 静态资源不限流 ✅├── API请求正常 ✅└── 体验不受影响 ✅七、一句话总结并发限制limit_conn管同时多少速率限制limit_req管每秒多快两个都要配才能彻底防止连接池被耗尽。