站点流量限制在宝塔面板的「网站→目标站点→设置→流量限制」中配置,含并发限制、单IP限制和流量限制三项参数,仅对HTTP/HTTPS入口流量生效。

站点流量限制在哪设?别找“带宽”关键词
宝塔面板里没有叫「带宽限制」或「流量封顶」的独立开关,所有限速都落在具体站点的配置里——不是服务器全局,也不是网卡层,而是 Nginx 对该域名的请求处理环节。如果你在「监控」里看到带宽峰值 80Mbps,想“自动按这个值砍掉超的部分”,那得先放弃这个念头:宝塔不支持动态阈值触发式限速。
实操路径很固定:网站 → 找到目标站点 → 设置 → 流量限制。这里三个参数最关键:
-
并发限制:整站同时处理的请求数上限(比如设为 50,第 51 个用户会排队或被拒绝) -
单IP限制:同一 IP 在 60 秒内最多发起多少次请求(防爬、防刷,建议 5–10) -
流量限制:每个请求返回内容不能超过多少 KB(比如设300,一个 5MB 的图片接口直接被截断)
为什么改了没效果?常见失效场景
限速规则只对「用户访问你的网站」生效,也就是 HTTP/HTTPS 入口流量。如果你的程序是后台脚本(比如用 curl 或 file_get_contents)不停从其他服务器拉数据,这些请求根本不会经过 Nginx 的站点限速逻辑——它们走的是 PHP 进程或系统命令,宝塔看不见,也管不了。
另一个高频坑:你启用了「流量限制」但没点「保存并启用」,或者点了保存却忘了重载 Nginx(宝塔通常自动做,但偶发失败)。验证是否生效,最直接的方式是用 ab 或 hey 工具压测,别靠浏览器刷新看不出来。
tc 命令才是真·封顶,但要慎用
如果必须对整个服务器出向带宽硬性封死(比如把 eth0 出口锁死在 100Mbps),就得绕过宝塔,用 Linux 内核的 tc 命令。这不是宝塔功能,是系统级操作,一旦配错可能导致 SSH 断连、网站全挂。
典型命令长这样:
tc qdisc add dev eth0 root tbf rate 100mbit burst 10mbit latency 50ms
注意三点:
- 先用
ip -br a | grep UP确认真实网卡名,别默认写eth0 -
rate单位是mbit(兆比特),不是MB/s;100Mbps ≈ 12.5MB/s - 这条命令是临时的,重启就失效;要持久化,得写进
/etc/rc.local或 systemd service
API 接口单独限流,得靠自定义规则
如果你只希望 /api/user/login 每秒最多 5 次,而首页完全不限,宝塔默认的「站点级」限速做不到。必须进「后端设置 → 配置文件」,手动加 Nginx limit_req 规则:
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/s;
location /api/user/login {
limit_req zone=login burst=10 nodelay;
}
这种写法绕开了宝塔图形界面,但更精准。风险在于:手写配置语法错一个标点,Nginx 就 reload 失败,整个站点 502。改之前务必备份原配置,且用 nginx -t 校验。
真正难的从来不是“怎么设”,而是分清:这流量是谁发起的、走哪条路径、该由哪一层拦——搞混这三点,再调参数也没用。










