需在Nginx全局配置层面设置访问速率限制,具体包括:一、在nginx.conf的http块中添加limit_req_zone指令;二、新建limit_global.conf并在nginx.conf中include;三、通过宝塔防火墙插件启用频率限制;四、用curl验证是否返回503或429状态码。

如果您在宝塔面板中希望限制所有网站对服务器的请求频率,防止恶意刷量或DDoS试探,则需在Nginx全局配置层面设置访问速率限制。以下是实现该目标的具体步骤:
一、通过Nginx主配置文件添加limit_req_zone指令
该方法在Nginx全局上下文(http块)中定义共享内存区域与限速规则,适用于所有站点,无需逐站修改。宝塔默认不开放直接编辑nginx.conf的界面入口,需通过命令行或文件管理器操作主配置文件。
1、使用宝塔面板的【文件】功能,定位到/www/server/nginx/conf/nginx.conf路径。
2、在http {块的开头位置(即所有server块之前),插入以下两行配置:
limit_req_zone $binary_remote_addr zone=global_rate:10m rate=10r/s;
limit_req_zone $server_name zone=host_rate:10m rate=50r/s;
3、保存文件后,在宝塔面板【软件商店】中找到Nginx,点击【重载配置】按钮使变更生效。
二、在全局include文件中统一启用limit_req策略
宝塔将各站点配置拆分为独立文件并统一include进主配置,可在全局include处注入限速指令,避免重复写入每个site配置。此方式保持配置集中可控,且不受站点增删影响。
1、进入目录/www/server/nginx/conf/,新建文件limit_global.conf。
2、在该文件中写入以下内容:
limit_req zone=global_rate burst=20 nodelay;
limit_req zone=host_rate burst=100 nodelay;
3、打开/www/server/nginx/conf/nginx.conf,找到包含include other.conf;或类似include语句的行,在其下方新增一行:include limit_global.conf;
4、保存并执行Nginx重载配置操作。
三、通过宝塔防火墙插件启用速率限制模块
宝塔官方防火墙插件(需付费版)内置了基于Nginx的请求频率控制功能,无需手动编辑配置文件,适合不熟悉Nginx语法的用户。该方式依赖插件运行时注入规则,实际仍作用于Nginx http上下文。
1、登录宝塔面板,进入【安全】→【宝塔防火墙】,确认已安装并启用插件。
2、点击【高级防护】选项卡,勾选【开启请求频率限制】。
3、在【全局频率限制】设置中,将【每秒请求数】设为10,【突发请求数】设为30。
4、点击【保存设置】,插件会自动重写Nginx配置并重载服务。
四、验证限速是否生效
配置完成后,需通过外部工具模拟高频请求,观察响应头与状态码变化,确认限速策略已正确加载并触发。此步骤不依赖面板界面,直接验证底层Nginx行为。
1、在终端执行以下curl命令连续请求任意站点首页:
for i in {1..20}; do curl -I http://your-domain.com | head -n 1; sleep 0.1; done
2、观察返回结果中是否出现HTTP/1.1 503 Service Temporarily Unavailable或HTTP/1.1 429 Too Many Requests状态码。
3、检查响应头中是否存在X-RateLimit-Limit、X-RateLimit-Remaining等字段(需在配置中额外添加add_header指令才可见)。










