🚥 访问控制&缓存规则
在 EdgeHit 上完成 CDN 域名的部署和初始化后,用户可在 访问控制 部分进行访问权限管理和 CDN 缓存规则配置。以下是该部分提供的可用选项:
注意
所有配置仅适用于 CDN 域名,但这些设置可同时映射到多个 CDN 域名。
📏 缓存规则
CDN缓存规则用于定义应缓存的内容,缓存的持续时间,与缓存的触发条件。通过减少回源服务器负载和加速内容分发,有效提升终端用户访问性能。
缓存规则可应用于多个用户CDN域名。用户可按以下目标类型定义缓存规则:
| 类型 | 描述 |
|---|---|
| 文件 | 缓存单个文件(例如 /style.css、/image.png) |
| 完整路径 | 缓存与完整URL路径(包括查询字符串)完全匹配的请求 |
| 目录 | 缓存特定目录路径下的所有内容(例如 /assets/) |
| 首页 | 仅缓存主页(即域名的 / 或索引路由) |
| 整站 | 缓存整个站点的所有资源,无论路径如何 |
| 正则表达式 | 使用正则表达式自定义URL的缓存模式 |
每种类型定义了特定的缓存模式,其对应的规则字段必须根据所选类型填写。将鼠标悬停在规则输入框上可查看针对所选类型的指导说明。
默认情况下,所有未自定义缓存规则的CDN域名都会应用全局默认规则。默认缓存规则如下:
🔥 防盗链
防盗链通过验证HTTP请求中的Referer头部,防止未经授权的网站或用户嵌入您CDN托管的资源(如图片、视频或脚本)。您可以为每个域名灵活配置白名单或黑名单规则来启用此保护功能。
-
当用户请求通过CDN分发的资源时,CDN边缘节点会在将请求转发至源站前检查其
Referer请求头。 -
根据所选类型(白名单或黑名单),规则将决定是否:
- 允许访问(放行请求)
- 拦截访问(返回403禁止状态码或重定向)
-
可选的重定向URL允许您将拒绝的请求跳转至自定义页面
- 空来路访问设置用于控制无
Referer请求头的请求行为,这类请求通常来自:- 直接URL访问(例如浏览器地址栏粘贴)
- 特定浏览器或隐私工具
- 移动应用
| 字段 | 说明 |
|---|---|
| 名称 | 热链防护规则的唯一标识名称 |
| 选择CDN域名 | 该规则适用的CDN域名列表 |
| 类型 | 决定规则行为: • 白名单 — 仅允许列出的Referer• 黑名单 — 拦截列出的Referer |
| 规则 | 要匹配的Referer模式列表(如example.com、*.competitor.com) |
| 重定向URL | (可选)请求被拦截时的重定向地址 |
| 空来路访问 | 是否允许无Referer请求头的访问。默认为禁用(拦截) |
| 描述 | 用于内部备注或文档说明的自由文本字段 |
白名单范例
仅允许来自自有域名的请求,拦截其他所有请求:
- 类型:
白名单 - 规则:
- 重定向 URL:
https://example.com/no-hotlinking.html - 空来路访问: 禁用(被拦截)
黑名单范例
拦截已知恶意来源,放行其他所有请求:
- 类型:
黑名单 - 规则:
- 重定向 URL:
https://example.com/warning.html - 空来路访问: 允许
提示
- 使用通配符(如
*.domain.com)实现灵活匹配 - 若资源需通过直接链接分享(如邮件、移动应用),建议启用空来路访问
- 相比直接拦截,重定向能提供更优用户体验,避免出现空白或破损的嵌入内容
🧱 防火墙规则
防火墙规则采用ACL式评估(访问控制列表),规则按优先级降序逐条检查。系统在找到首个匹配规则后即停止评估,并执行对应的操作。
单条规则内可使用AND、OR逻辑运算符定义多个匹配条件,但每条规则仅允许设置一个操作。
以下字段可作为匹配条件使用:
| 字段 | 描述 | 例子 |
|---|---|---|
| Country | 基于GeoIP国家代码或名称匹配 | MY, US, CN |
| IP Address | 匹配特定IP或CIDR范围 | 192.168.1.1, 10.0.0.0/16 |
| ASN | 基于自治系统号(ASN)匹配 | 13335 (Cloudflare) |
| URI Path | 仅匹配请求路径 | /login, /home/about |
| Full URL | 匹配完整请求URL | https://example.com/docs |
| HTTP Method | 匹配请求方法(如GET、POST) | GET, POST |
| Header Value | 匹配请求头(如User-Agent、Referer) |
User-Agent: curl/7.68.0 |
| Cookie | 匹配特定Cookie或值 | sessionid=abc123 |
| Query String | 匹配查询字符串中的键值对 | token=xyz |
| TLS Version | 基于TLS协议版本匹配 | TLSv1.2, TLSv1.3 |
| User Agent | 匹配浏览器或机器人特征 | Mozilla, curl |
当规则匹配时,将触发以下操作之一:
| 动作 | 描述 |
|---|---|
| 允许 | 允许请求正常通过 |
| 拒绝 | 拒绝请求并返回403或等效拒绝状态 |
| JS 跳转 (自动) | 自动提供基于JavaScript的验证质询 |
| JS 跳转 (检测到鼠标移动时) | 仅在检测到疑似机器人行为时触发JS验证 |
| 302 跳转 (自动) | 自动将用户重定向至其他URL |
| 滑动验证 (交互验证) | 向用户显示滑动验证码(slide-to-verify CAPTCHA) |
| 验证码 (交互验证) | 显示CAPTCHA验证码进行人工验证 |
提示
您可以定义多条具有不同优先级的规则,其工作逻辑类似于物理防火墙设备中的安全规则机制。
🚦限速规则
速率限制规则通过临时拦截或响应超出设定阈值的请求,有效防御如DDoS攻击,数据爬取,暴力破解等滥用行为。限速规则采用与防火墙规则相同的条件配置并可以针对客户端或行为模式触发。
规则详解
1. 匹配条件
限速规则首先需要定义需要评估的请求类型,其配置方式与防火墙规则类似,支持通过以下字段匹配传入请求:
- 源IP地址
- 国家 (GeoIP)
- URI 路径
- HTTP方法
- Header (例如, User-Agent)
- Cookie
匹配条件可通过 AND/OR 逻辑运算符组合多个条件,构建复杂过滤规则。若请求满足所有条件,则触发限速。
条件范例:
2. 定义需识别的特征
可指定分组(即"特征")定义请求计数方式,常见分组维度包括:
- IP地址
- 自治系统编号 (Autonomous System Number, ASN)
- 国家
- Cookie
- Header (例如, API令牌)
该配置决定了规则如何区分不同客户端或流量来源。例如,以IP分组会根据用户IP计算请求数。
3. 速率阈值
限速规则的核心是阈值,它定义了在采取行动前允许的流量大小。
- 请求数:允许的请求数量…
- 周期(秒):…在多少秒内。
如果任何客户端(基于分组特征)超过阈值,则会触发配置的操作。
4. 动作
一旦超过阈值,将触发拦截响应。类型可自定义为多种响应方式:
| 响应类型 | 说明 |
|---|---|
| 默认响应 | 标准拦截(例如返回403禁止访问) |
| 自定义HTML | 返回自定义HTML页面 |
| 自定义文本 | 纯文本拦截消息 |
| 自定义JSON | 带JSON正文的API风格响应 |
| 自定义XML | 结构化XML响应 |
| 重定向至URL | 302跳转到其他页面 |
| 无响应 | 静默断开连接(不返回任何应答) |
配置持续时间字段可控制拦截生效时长,超过该时长后可疑客户端才能再次访问CDN域名。
🔨 自定义标头
自定义标头功能允许您定义 HTTP 响应标头,这些标头将由 CDN 边缘节点 自动插入到发送给客户端的响应中。通过此功能,您可以添加元数据、调试信息或控制行为(如缓存或安全设置),而无需修改源服务器配置。
用途
- 添加诊断或调试标头(例如
X-Edge-Node、X-Cache-Status) - 设置自定义安全策略或 CORS 规则
- 注入静态值(如
X-App-Version、X-Service-Env) - 通过自定义标识通知客户端或下游服务
行为特性
- 这些标头是在 CDN 边缘层注入 的,而非由您的源服务器添加
- 它们会被附加到匹配域名的 每个响应 中
- 不会影响 请求标头或请求的路由方式
范例
以 cdn.example.com 为例子, 可以添加以下标头:
| 键名 | 值 |
|---|---|
X-Env |
Production |
X-Powered-By |
CDN-Edge |
结果:
所有由边缘节点返回的 cdn.example.com 域名响应都将包含以下标头:
🔧 自定义回源标头
自定义回源标头功能允许您定义自定义HTTP标头,这些标头将被CDN边缘节点包含在回源请求中。这些标头仅在CDN与您的源站通信时添加,不会出现在客户端响应中。
此功能适用于身份识别、认证鉴权、环境控制以及源站行为自定义场景。
用途
- 标识来自CDN的请求(如
X-Forwarded-For、X-CDN-Node) - 向源站传递API密钥或令牌
- 指示环境或路由逻辑(如
X-App-Version: staging) - 添加用于源站日志记录或过滤的自定义标头
行为特性
- 这些标头会被注入到从CDN边缘节点发往源站的请求中
- 与响应标头不同,这些标头对客户端不可见
- 如果请求中已存在相同标头,CDN可能会根据配置覆盖它
Info
若需在共享主机场景下将 host 值设置为CDN域名,您也可以通过CDN域名设置中的 自定义回源host标头 来实现。
这两种设置都会使从EdgeHit发往源站的请求中设置 host HTTP标头,这在许多无服务器托管场景中对于识别虚拟主机非常有用
📦 缓存预取
Note
使用缓存预取功能时,请填写包含HTTP/HTTPS协议的完整URL地址。
缓存预取功能允许您在用户请求之前,主动将特定内容加载到CDN边缘节点。通过预先从源站获取内容,有效减少初始访问延迟,确保用户能更快获取重要资源。
缓存预取可以在 CDN > 缓存预取 > 添加 中设置。
应用场景
缓存预取功能可在以下情况使用:
- 针对预期将迎来高流量的新发布内容进行预缓存
- 避免高并发场景下的"冷缓存"问题
- 预先缓存目标URL,显著降低首次访问的TTFB(time-to-first-byte)延迟
提交预取请求后,系统将自动验证URL可达性并立即触发内容预加载至CDN缓存节点。
🧹 缓存清除
Note
使用缓存清除功能时,请填写包含HTTP/HTTPS协议的完整URL地址。
缓存刷新功能用于 主动清除CDN边缘节点上的指定内容, 强制在下一次请求时从源站重新获取最新版本。该功能适用于内容更新后需要立即在全球所有缓存节点失效的场景。
缓存刷新功能可以在 CDN > 缓存清除 > 添加 中设置。
应用场景 缓存清除功能可在以下情况使用:
- 当静态资源(如CSS/JS文件)发生版本更新时
- 需要立即下线缓存中的敏感或过时内容
- 缓存TTL未过期但要求内容立即生效









