访问控制与限速配置
概述
矩尺平台在四层(TCP/UDP)和七层(HTTP/HTTPS)均提供访问控制与流量限制能力,帮助您保护后端服务免受恶意流量、过度请求和资源滥用的影响。
配置方式:
- 七层:先创建"HTTP 访问策略"(独立页签),再在"HTTP 策略"中通过「HTTP 访问控制策略」字段引用它
- 四层:TCP/UDP 策略自带黑白名单和连接限制,无需单独创建访问策略
本文档以七层为主线(功能最全面),四层的差异在末尾补充。
七层 HTTP 访问策略
创建与引用流程
第一步:创建访问策略
入口:【负载流量管理 → 策略配置 → 七层策略 → 访问策略】页签
点击"新增",配置以下参数(见下方各节)
第二步:创建 HTTP 策略并引用
入口:【负载流量管理 → 策略配置 → 七层策略 → HTTP策略】页签
在「HTTP 访问控制策略」字段中选择第一步创建的访问策略
→ 这样 HTTP 策略就具备了访问控制能力
第三步:在分发规则中绑定 HTTP 策略
虚拟服务 → 分发规则 → 七层HTTP策略 → 选择第二步创建的 HTTP 策略
一、IP 黑白名单
在策略中绑定预先创建的 IP 集合,实现基于客户端 IP 的访问控制。
| 配置项 | 作用 |
|---|---|
| 白名单 IP | 选择 IP 集合,仅允许集合内的 IP 访问。不在白名单中的请求将被拒绝 |
| 黑名单 IP | 选择 IP 集合,禁止集合内的 IP 访问。黑名单中的 IP 请求将被拒绝 |
白名单和黑名单可同时使用:先检查白名单(不在白名单中直接拒绝),再检查黑名单(在黑名单中则拒绝)。
二、身份认证
基本认证 Realm
开启后,客户端请求必须携带 Authorization: Basic <base64> 头部,用户名和密码由管理员预设。适用于简单的 API 认证或内部工具访问,不建议在生产环境对公网暴露。
| 配置项 | 说明 |
|---|---|
| 基本认证 Realm | 认证域标识,浏览器弹窗中显示的提示文字 |
| 用户名/密码 | 预设一组或多组凭据 |
用户鉴权服务器地址
开启后,每个请求到达时,负载均衡会先向指定的鉴权服务器发送子请求。如果鉴权服务器返回 2xx,放行;返回 401 或 403,则拒绝客户端请求。
工作流程:
客户端请求 → 矩尺 → (子请求) → 鉴权服务器
← 2xx → 放行,正常转发到后端
← 401/403 → 拒绝客户端请求这种方式比 Basic 认证更灵活——鉴权逻辑由外部服务实现,支持 Token、OAuth 等复杂认证方式。
三、并发与频率限制(全局)
限制所有客户端合计的访问量,用于保护后端服务的总容量。
| 配置项 | 含义 |
|---|---|
| 最大并发请求数 | 同时处理的最大并发请求数。可勾选"不限制" |
| 最大并发延迟请求数 | 超出并发限制后允许排队等待的最大数量。可勾选"不限制" |
| 每秒最大处理请求数 | 每秒允许的最大请求数(QPS 上限)。可勾选"不限制" |
| 每秒最大处理延迟请求数 | QPS 超出后允许的突发缓冲量。可勾选"不限制" |
| 窗口时间内最大并发请求 | 指定时间窗口内的最大并发数。可勾选"不限制" |
| 窗口时间内最大并发延迟请求数 | 窗口内超出并发限制后允许排队的数量。可勾选"不限制" |
| QPS 超限返回错误码 | 当请求被 QPS 限制拒绝时返回的 HTTP 状态码,默认 503 |
| 并发数超限返回错误码 | 当请求被并发限制拒绝时返回的 HTTP 状态码,默认 503 |
四、并发与频率限制(单客户端)
限制每个客户端 IP 独立的访问量,防止单个 IP 占用过多资源。
| 配置项 | 含义 |
|---|---|
| 最大并发请求数 | 单个 IP 同时处理的并发请求数上限。可勾选"不限制" |
| 最大并发延迟请求数 | 单 IP 超出并发限制后允许排队的数量。可勾选"不限制" |
| 每秒最大处理请求数 | 单个 IP 每秒允许的最大请求数。可勾选"不限制" |
| 每秒最大处理延迟请求数 | 单 IP QPS 超出后允许的突发缓冲量。可勾选"不限制" |
| 窗口时间内最大并发请求 | 单 IP 在时间窗口内的最大并发数。可勾选"不限制" |
| 窗口时间内最大并发延迟请求数 | 单 IP 窗口内超出并发限制后允许排队的数量。可勾选"不限制" |
全局 + 单客户端,建议同时配置
- 全局限制保护后端总容量(如全局 QPS 1000)
- 单客户端限制防止单个 IP 独占资源(如单 IP QPS 50)
五、上传与响应速率控制
访问策略中还可限制单个请求的传输速度(非请求频率),适用于大文件上传/下载场景。
| 配置项 | 含义 | 适用场景 |
|---|---|---|
| HTTP 上传速率最大值 | 限制客户端上传文件的速度(字节/秒) | 大文件上传 |
| HTTP 上传不限速阈值 | 上传文件超过此大小(字节)后才开始限速 | 小文件不受限速影响 |
| HTTP 响应限速 | 限制向客户端下发响应的速度(字节/秒) | 大文件下载 |
| HTTP 响应不限速阈值 | 响应超过此大小(字节)后才开始限速 | 小响应不受限速影响 |
为什么需要这些参数?
如果直接将大文件全速下发,一个下载请求就可能占满带宽。限速参数让每个连接公平分享带宽。不限速阈值 的设计确保小文件(如 API 响应 JSON)不受影响,只有真正的"大文件"才触发限速。
举例:
# 大文件下载限速
HTTP 响应限速:2097152(2MB/s)
HTTP 响应不限速阈值:1048576(1MB)
→ 前 1MB 不限速,超过后以 2MB/s 发送
# 大文件上传限速
HTTP 上传速率最大值:2097152(2MB/s)
HTTP 上传不限速阈值:10485760(10MB)
→ 前 10MB 不限速,超过后以 2MB/s 接收可信网关
可信网关是基于区块链技术构建的联盟链访问控制。请求需通过链上合约授权后才能访问。开启后,需配置相关合约参数。具体使用请咨询矩尺技术支持。
四层访问控制
TCP 策略
入口:【SLB 本地负载 → 策略配置 → 四层策略 → 虚拟服务TCP策略】。
TCP 策略自带 IP 黑白名单和连接限制,字段分为全局和单客户端两组。限流对象是连接数(TCP 有连接):
全局限制(所有客户端合计):
| 配置项 | 含义 |
|---|---|
| 最大并发连接数 | 同时处理的最大并发连接数。可勾选"不限制" |
| 最大并发延迟连接数 | 超出并发限制后允许排队的数量 |
| 每秒最大处理连接数 | 每秒允许的最大新建连接数 |
| 每秒最大处理延迟连接数 | 新建连接超出后的突发缓冲量 |
| 窗口时间内最大并发连接 | 时间窗口内的最大并发数 |
| 窗口时间内最大并发延迟连接数 | 窗口内超限后允许排队的数量 |
单客户端限制(每个 IP 独立): 同样六项配置,仅作用于单个客户端 IP。
此外 TCP 策略还支持 IP 黑白名单(绑定 IP 集合)和 SNAT 源地址转换。
UDP 策略
入口:【SLB 本地负载 → 策略配置 → 四层策略 → 虚拟服务UDP策略】。
UDP 策略支持 IP 黑白名单和请求数限制。由于 UDP 无连接,限流对象是请求数(每个数据包计为一个请求)。
配置场景
场景一:大文件上传限速(★ NGINX 不具备的能力)
背景: 开源 NGINX 的 limit_rate 指令只能限制响应发送(下载)的速率,无法限制请求接收(上传)的速率。当用户通过 HTTP POST/PUT 上传大文件(如视频、安装包、日志文件)时,NGINX 会全速接收,可能导致:
- 单个上传请求占满带宽,影响其他用户
- 后端存储服务的写入压力瞬时飙升
- 无法对不同大小的文件做差异化限速
矩尺的"HTTP 上传速率最大值"填补了这个空缺。
配置步骤:
- 创建访问策略:【七层策略 → 访问策略】→ 新增
- 配置上传限速:
- HTTP 上传速率最大值:
2097152(2MB/s) - HTTP 上传不限速阈值:
10485760(前 10MB 不限速)
- HTTP 上传速率最大值:
- 创建 HTTP 策略:【七层策略 → HTTP策略】→ 在「HTTP 访问控制策略」字段引用刚创建的访问策略
- 在虚拟服务的分发规则中,选择此 HTTP 策略
效果:
客户端 POST /api/upload(100MB 文件)
前 10MB:全速上传(不限速)
↓ 超过 10MB 后
剩余 90MB:以 2MB/s 的速度上传
总耗时 ≈(10MB 瞬间)+(90MB ÷ 2MB/s)= 约 45 秒
对比:
不限速:总耗时约 5 秒,但一个人占满带宽
限速后:总耗时约 45 秒,带宽占用均匀,不影响其他用户与 NGINX 的对比:
| 能力 | NGINX 开源版 | 矩尺 |
|---|---|---|
| 限制下载速率 | limit_rate | HTTP 响应限速 |
| 限制上传速率 | 不支持 | HTTP 上传速率最大值 |
| 大文件/小文件差异化 | 不支持 | HTTP 上传/响应不限速阈值 |
适用场景
- 文件存储服务(用户上传视频、图片、文档)
- 日志收集服务(多个客户端批量上传日志)
- CI/CD 制品仓库(上传构建产物)
- 任何需要保护后端不被单个大文件上传压垮的场景
场景二:保护后端 API 不被刷爆
配置步骤:
- 创建访问策略,配置:
- 每秒最大处理请求数:
1000(全局 QPS) - 每秒最大处理延迟请求数:
200(全局突发缓冲) - QPS 超限返回错误码:
429 - 单客户端每秒最大处理请求数:
50(单 IP QPS) - 单客户端每秒最大处理延迟请求数:
10
- 每秒最大处理请求数:
- 按场景一步骤 3-4 完成引用和绑定
场景三:大文件下载限速
配置步骤:
- 创建访问策略,配置:
- HTTP 响应限速:
2097152(2MB/s) - HTTP 响应不限速阈值:
1048576(1MB 以内不限速)
- HTTP 响应限速:
- 按场景一步骤 3-4 完成引用和绑定
场景四:内部管理后台 IP 白名单
配置步骤:
- 预先在 IP 集合管理 中创建"公司内网 IP 段"集合
- 创建访问策略,配置:
- 白名单 IP:选择"公司内网 IP 段"集合
- 按场景一步骤 3-4 完成引用和绑定
- 在虚拟服务中创建高优先级分发规则:
- 分发策略:URL 前缀 =
/admin/ - 处理方式:HTTP 代理 → admin-pool
- 七层 HTTP 策略:选择关联了此访问策略的 HTTP 策略
- 分发策略:URL 前缀 =
七层访问策略和 HTTP 策略的详细配置参见 七层策略用户手册,四层参见 四层策略用户手册,IP 集合管理参见 IP 集合管理。
