在虚拟主机运维场景中,合理设置站点限速能够有效避免单个站点突发流量占用全部服务器带宽,保障同服务器下其他站点的正常访问。宝塔面板作为常用的服务器管理工具,提供了便捷的站点配置入口,结合nginx的limit_rate模块就能实现虚拟主机的限速需求。

前置条件
进行限速设置前需要确认以下环境满足要求:
- 服务器已安装宝塔面板,且web服务选择的是nginx
- 需要限速的站点已在宝塔面板中完成虚拟主机添加
- 拥有宝塔面板的完整管理权限,能够修改站点配置文件
具体操作步骤
1. 进入站点配置页面
登录宝塔面板后台,在左侧导航栏找到网站选项,点击进入网站列表页面,找到需要设置限速的虚拟主机,点击对应站点右侧的设置按钮,在弹出的设置窗口中选择配置文件选项卡,即可看到当前站点的nginx配置内容。
2. 添加限速配置参数
在配置文件的server块或者location块中添加nginx的限速指令,常用的限速参数有两个:
limit_rate:设置单个连接的最大下载速度,默认单位是字节/秒,也可以指定k(千字节)、m(兆字节)为单位limit_rate_after:设置下载多少内容之后再开始限速,同样支持字节、k、m单位
以下是基础的限速配置示例,限制单个连接最大下载速度为100KB/s,前1MB内容不限速:
server
{
listen 80;
server_name test.ipipp.com; # 替换为你的站点域名
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/test.ipipp.com; # 替换为你的站点根目录
# 限速配置
limit_rate_after 1m; # 前1MB内容不限速
limit_rate 100k; # 单个连接最大下载速度100KB/s
# 其他默认配置内容
include enable-php-74.conf;
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
error_log /dev/null;
access_log /dev/null;
}
location ~ .*.(js|css)?$
{
expires 12h;
error_log /dev/null;
access_log /dev/null;
}
access_log /www/wwwlogs/test.ipipp.com.log;
error_log /www/wwwlogs/test.ipipp.com.error.log;
}
3. 保存配置并生效
添加完配置参数后,点击配置文件页面右上角的保存按钮,然后点击宝塔面板顶部的重启按钮,选择重启nginx服务,让配置生效即可。
不同场景的配置方案
场景1:限制整个站点的总带宽
如果需要限制整个虚拟主机的总带宽,而不是单个连接的速度,可以结合limit_conn_zone和limit_conn指令,先定义连接数限制区域,再限制单IP的最大连接数,间接控制总带宽。配置示例如下:
# 在http块中添加,定义连接数限制区域,以IP为key,区域大小为10m
limit_conn_zone $binary_remote_addr zone=perip:10m;
server
{
listen 80;
server_name test.ipipp.com;
root /www/wwwroot/test.ipipp.com;
# 限制单IP最多10个并发连接
limit_conn perip 10;
# 单个连接限速100KB/s,总带宽最多1MB/s
limit_rate 100k;
# 其他配置内容
}
场景2:仅限制大文件下载速度
如果只需要限制压缩包、视频等大文件的下载速度,而普通网页访问不限速,可以在location块中针对特定文件后缀做配置:
server
{
listen 80;
server_name test.ipipp.com;
root /www/wwwroot/test.ipipp.com;
# 仅对zip、rar、mp4、avi后缀的文件限速
location ~ .*.(zip|rar|mp4|avi)$
{
limit_rate_after 2m;
limit_rate 200k;
}
# 其他配置内容
}
注意事项
- 限速参数的单位是字节/秒,设置100k代表100千字节每秒,也就是约0.8Mbps的带宽,配置时不要混淆单位
- 修改配置后必须重启nginx服务才能生效,否则配置不会生效
- 如果站点使用的是apache服务,宝塔面板同样可以在站点配置中添加
Bandwidth相关模块配置实现限速,操作逻辑类似 - 限速设置过严可能会影响站点正常访问,建议先设置宽松的数值测试,再逐步调整到合适的大小
注意:如果服务器上有多个虚拟主机,每个站点的限速配置需要写在对应站点的server块中,避免配置互相影响。