nginx的ip限制
2026/8/2 18:34:18 网站建设 项目流程

一、全局配置(nginx.conf

http { # ===== 已有的(不用动) ===== limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_name zone=perserver:10m; # ===== 需要新增(速率限制) ===== limit_req_zone $binary_remote_addr zone=one:10m rate=5r/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 zone=one burst=10 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 zone=one rate=5r/s每个IP每秒最多5个请求461防高频攻击

四、两种限制的区别

对比并发限制速率限制
限制什么同时占用的连接数每秒发多少请求
攻击场景慢连接、多连接高频请求、爆破
配置limit_conn perip 5limit_req zone=one burst=10
状态码460461

五、操作步骤

1. 编辑全局配置
宝塔 → 软件商店 → Nginx → 设置 → 配置修改
在 http { } 中添加:limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;

2. 编辑网站配置
宝塔 → 网站 → www.yougosz.com → 设置 → 配置文件
在 location /app-api/ { } 中添加限流配置

3. 保存并重载
nginx -t
nginx -s reload

六、最终效果

恶意IP(221.229.x.x):
├── 同时超过5个连接 → 返回 460
├── 每秒超过5个请求 → 返回 461
└── 数据库连接池不会被耗尽 ✅

正常用户:
├── 静态资源不限流 ✅
├── API请求正常 ✅
└── 体验不受影响 ✅

七、一句话总结

并发限制(limit_conn)管"同时多少",速率限制(limit_req)管"每秒多快",两个都要配,才能彻底防止连接池被耗尽。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询