规则
规则在帽子云网关上处理进入应用的 HTTP 请求。你可以为应用开启 WebSocket、防盗链和跨域访问,也可以按域名、路径、方法等条件转发请求、改写请求头或响应头、返回重定向,无需修改应用代码。
入口:应用详情页 → 规则。静态网站、Web 应用(含 Docker 镜像部署)支持规则,PostgreSQL 和 Redis 应用不提供此入口。
页面结构
规则页面包含两个标签页,默认打开 全局配置:
| 标签页 | 用途 |
|---|---|
| 全局配置 | 配置应用级的 WebSocket、防盗链和跨域访问能力 |
| 自定义规则 | 按请求条件管理反向代理、请求头重写、响应头重写和重定向规则 |
全局配置
入口:应用详情页 → 规则 → 全局配置。左侧选择功能,右侧编辑对应配置;左侧同时显示各项功能的 已开启 或 未开启 状态。
WebSocket
选择 WebSocket,打开 启用 WebSocket 后,网关允许该应用的 WebSocket 协议升级请求。应用自身也需要支持 WebSocket。
开关切换后立即保存,无需单独点击保存按钮。适用于在线聊天、实时通知等需要长连接的场景。
防盗链
防盗链根据请求头 Referer 中的来源域名放行或拦截请求,适用于限制其他网站直接引用图片、下载文件等资源。
- 左侧选择 防盗链,打开 启用防盗链。
- 按需要设置 允许空 Referer 访问,选择名单类型并填写域名。
- 点击 保存配置。关闭防盗链也需要点击此按钮保存。
| 字段 | 填写说明 |
|---|---|
| 允许空 Referer 访问 | 开启后,请求未携带 Referer 时直接放行。直接输入网址或使用部分客户端访问时可能没有 Referer |
| 名单类型:白名单 | 放行名单中的来源域名,拦截其他来源 |
| 名单类型:黑名单 | 拦截名单中的来源域名,放行其他来源 |
| 白名单域名 / 黑名单域名 | 一行一个域名,支持通配符,例如 example.com、*.example.com。启用防盗链时至少填写一个域名 |
例如,只允许自己的网站引用资源,可以选择 白名单,填写:
example.com
*.example.com如果还需要允许用户直接打开资源地址,可同时开启 允许空 Referer 访问。未填写域名时,保存会提示“请至少配置一个域名”。
跨域访问
跨域访问用于控制其他网站在浏览器中访问当前应用资源时的 CORS 策略。选择 跨域访问,打开 启用跨域访问 后,选择访问模式:
| 模式 | 适用场景 | 配置方式 |
|---|---|---|
| 公开访问 | 不携带凭证的公开资源 | 允许来源为 *,不允许携带凭证;预检缓存时间为 86400 秒 |
| 指定来源 | 允许指定网站访问资源 | 填写允许来源,允许携带凭证;预检缓存时间为 86400 秒 |
| 自定义 | 需要限制方法、请求头或调整凭证与缓存策略 | 填写允许来源,并设置下表中的字段 |
允许来源一行一个,填写包含协议的完整来源,可带端口;界面也支持填写 *。例如:
https://www.example.com
https://admin.example.com
https://www.example.com:8443来源只包含协议、域名和可选端口,不需要填写 /api 等路径。协议或端口不同会被浏览器视为不同来源。需要携带 Cookie 等凭证时,应使用明确的来源地址。
自定义模式还提供以下字段:
| 字段 | 填写说明 |
|---|---|
| 允许方法 | 可选择 GET、POST、PUT、DELETE、OPTIONS,至少选择一个 |
| 允许请求头 | 允许跨域请求携带的 Header 名称,多个名称用逗号分隔,例如 Content-Type, Authorization |
| 暴露响应头 | 允许浏览器脚本读取的响应 Header,多个名称用逗号分隔,例如 X-Request-Id |
| 允许携带凭证 | 选择 允许 或 不允许,控制浏览器跨域请求是否可携带 Cookie 等凭证 |
| 预检缓存时间 | 以秒填写,界面初始值为 3600。用于浏览器缓存 CORS 预检结果 |
页面下方提供 响应 Header 预览,展示 Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers、Access-Control-Expose-Headers、Access-Control-Allow-Credentials 和 Access-Control-Max-Age。
配置完成后点击 保存配置,关闭跨域访问也需要保存。指定来源或自定义模式未填写来源时,会提示“请至少配置一个允许来源”;自定义模式未选择方法时,会提示“请至少选择一个允许方法”。
note
CORS 控制浏览器的跨域访问行为,业务接口仍需自行处理鉴权。若为整个应用配置跨域策略,优先使用这里的跨域访问;仅需按路径等条件设置响应头时,可使用响应头重写规则,并避免重复配置同名 CORS 响应头。
保存配置
WebSocket 切换开关即保存;防盗链和跨域访问需要点击各自的 保存配置。保存期间按钮显示“保存中...”,成功后提示“保存成功”;保存失败时页面会显示错误提示。配置由网关处理,无需重新部署应用。
自定义规则
入口:应用详情页 → 规则 → 自定义规则。左侧选择规则类型,右侧显示该类型的规则数量和列表;点击右上角 添加对应规则 按钮打开配置抽屉。

上图为旧版规则列表,供查看规则类型时参考;当前版本请先切换到 自定义规则 标签页。
| 类型 | 作用 | 典型场景 | 文档 |
|---|---|---|---|
| 反向代理规则 | 按匹配条件转发请求到上游节点 | /api 转发到后端服务器;接入第三方服务 | 反向代理规则 |
| 请求头重写 | 在转发前设置、增加或删除请求头 | 给上游传递标识、去掉敏感头 | 请求头重写 |
| 响应头重写 | 在返回前设置、增加或删除响应头 | 按条件设置跨域头、缓存控制、安全头 | 响应头重写 |
| 重定向规则 | 命中后返回 HTTP 重定向到目标地址 | 旧域名跳新域名、旧链接跳新链接 | 重定向规则 |
通用字段
每条自定义规则都包含:
- 规则名称:必填,1 ~ 30 个字符,例如
API 转发。 - 匹配规则:选择 匹配所有请求 时对所有请求生效;选择 自定义筛选 时只对满足条件的请求生效。
- 规则配置:不同类型的具体配置,参见对应的规则文档。
填写完成后点击 添加 或 保存。保存成功后抽屉关闭,规则在网关中生效,无需重新部署应用。点击 取消 关闭抽屉,不保存本次修改。
匹配条件
选择 自定义筛选 后,每一行是一个条件,由 匹配字段、运算符 和 值 组成。GET 参数、POST 参数和 Cookie 参数还需要在 参数值 一列填写参数名。
条件组合
- 行右侧的加号在同一组内增加条件,减号删除条件。同一组内的条件需要同时满足(且)。
- 点击 或者 新增一个条件组。多个组之间满足任意一组即可(或)。
- 自定义筛选至少需要一组条件,每组至少保留一条完整条件。无需筛选时请选择 匹配所有请求。
例如:组 1 为“请求路径 开头是 /api”且“请求方法 等于 POST”,组 2 为“主机名 等于 api.example.com”。请求满足组 1 或组 2 都会命中。
匹配字段与运算符
| 匹配字段 | 说明 | 可用运算符 | 值示例 |
|---|---|---|---|
| 主机名(域名) | 请求的 Host | 字符串运算符 | *.maoziyun.com |
| 完整 URL | 路径和查询参数 | 字符串运算符 | /api/user?id=1 |
| 请求路径 | 不含查询参数的路径 | 字符串运算符 | /api |
| 请求方法 | HTTP 方法 | 等于、不等于、包含以下各项、不包含以下各项 | GET、POST、PUT、PATCH、DELETE、OPTIONS |
| 文件后缀 | 请求路径的扩展名 | 包含以下各项、不包含以下各项 | 输入后按回车,如 jpg、png,最多 50 个 |
| 国家/地区 | 根据客户端 IP 识别的国家或地区 | 等于、不等于、包含以下各项、不包含以下各项 | 中国、美国 |
| GET参数 | URL 查询参数 | 字符串运算符、小于、大于、存在、不存在 | 参数值 lang,值 en |
| POST参数 | 表单参数 | 同 GET参数 | 参数值 type,值 vip |
| Cookie参数 | Cookie 中的字段 | 同 GET参数 | 参数值 ab_test,值 b |
字符串运算符:等于、不等于、通配符、包含、不包含、开头是、开头不是、结尾是、结尾不是。
- 通配符使用
*匹配任意字符,例如*.example.com、/static/*。 - 小于 / 大于的值必须是数字。
- 存在 / 不存在只判断参数是否存在,无需填写值,参数名仍需填写。
执行顺序
- 在当前规则类型的列表中,规则按从上到下的顺序匹配。拖动规则左侧的图标可以调整同类型规则的顺序。
- 新建的规则默认添加到该类型列表末尾并启用。
- 更具体的规则(如
/api/v2)建议放在更宽泛的规则(如/api)前面。
启用、编辑和删除
- 每条规则右侧的开关可以随时 启用 或 关闭,关闭后规则保留但不生效。
- 点击编辑按钮打开配置抽屉,修改后点击 保存。
- 删除规则需要确认,删除后不可恢复。如果只是临时停用,建议关闭开关。
列表中每条规则会显示摘要,例如 1 组匹配 · 2 个节点 · HTTP。
更新于
