> For the complete documentation index, see [llms.txt](https://www.axisnow.io/zh/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.axisnow.io/zh/docs/multi-edge/services/policy.md).

# 策略

一次配置即转换为每一家边缘的原生规则

策略（Policy）决定边缘提供商如何处理服务（Service）的请求：哪些内容缓存、缓存多久、哪些请求放行或拦截、返回给访客的响应头是什么。各家边缘的规则引擎、字段和限制各不相同，AxisNow 用一套统一的规则模型描述这些行为，您在 AxisNow 配置一次，由 AxisNow 翻译并同步到服务的每一家边缘提供商。

策略在服务的 **策略** 标签页管理，目前包含五个类型：

* [缓存清除](/zh/docs/multi-edge/services/policy/cache-purge.md)：清除各家边缘上已缓存的内容
* [缓存控制](/zh/docs/multi-edge/services/policy/cache-control.md)：按路径设置边缘缓存、缓存键和浏览器缓存
* [访问控制](/zh/docs/multi-edge/services/policy/access-control.md)：按 IP、地区、Referer 等条件放行、拦截或验证请求
* [限速](/zh/docs/multi-edge/services/policy/rate-limiting.md)：限制单个 IP 在一段时间内的请求次数
* [响应头](/zh/docs/multi-edge/services/policy/response-header.md)：按路径设置或删除响应头

![](https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2Fgit-blob-868d51ef97f2073b2d846a24b774037844f3050c%2Fpolicy-01.png?alt=media)

**策略** 页面的 **支持** 列显示服务中的每家边缘是否支持该策略，不支持的以灰色显示，每家边缘提供商角标上的圆点表示规则同步状态。策略只对配置同步（Provision）方式加入的边缘生效；仅调度（Steer）方式加入的边缘由您自行管理，AxisNow 不向其同步任何配置。

## 规则 <a href="#rules" id="rules"></a>

除缓存清除外，各类策略都由规则组成。一条规则包含两部分：

* **条件**：规则作用于哪些请求。缓存控制和响应头用 **路径模式** 圈定，例如 `/static/*`；访问控制和限速可以是 **所有请求**（匹配所有请求），或 **自定义**（组合 IP、地区、路径等多种字段）。
* **动作**：匹配后做什么。缓存多久、放行还是拦截、加上哪个响应头。

可用的条件字段：

<table data-search="false"><thead><tr><th>字段</th><th>说明</th><th>运算符</th></tr></thead><tbody><tr><td>主机名</td><td>请求的域名</td><td>属于 / 不属于</td></tr><tr><td>URL 路径</td><td>请求路径</td><td>属于 / 不属于 / 开头是 / 结尾是 / 开头不是 / 结尾不是 / 通配符</td></tr><tr><td>请求方法</td><td>HTTP 方法</td><td>属于 / 不属于</td></tr><tr><td>客户端 IP</td><td>访客 IP，支持 IPv4、IPv6 和 CIDR</td><td>属于 / 不属于</td></tr><tr><td>客户端国家/地区</td><td>访客所在国家或地区</td><td>属于 / 不属于</td></tr><tr><td>User Agent</td><td>请求的 User-Agent 头</td><td>属于 / 不属于 / 包含 / 不包含</td></tr><tr><td>Referer</td><td>请求的 Referer 头</td><td>属于 / 不属于 / 包含 / 不包含</td></tr><tr><td>ASN</td><td>访客 IP 所属的自治系统号</td><td>属于 / 不属于</td></tr><tr><td>完整 URI</td><td>完整 URI</td><td>开头是 / 结尾是 / 开头不是 / 结尾不是 / 包含 / 不包含 / 通配符</td></tr><tr><td>查询串</td><td>查询字符串</td><td>开头是 / 结尾是 / 开头不是 / 结尾不是 / 包含 / 不包含</td></tr></tbody></table>

规则作用于服务的全部域名。列表中的规则从上到下依次匹配，第一条匹配的规则生效，拖动行可以调整顺序。

## 变更如何生效 <a href="#how-changes-take-effect" id="how-changes-take-effect"></a>

添加、修改、删除或重排规则，都不会立即写到边缘提供商，而是进入一个三步的变更流程。多边缘环境下，一条在 AxisNow 合法的规则，到了某一家边缘可能超出套餐限制、动作被降级、或者被该边缘上已有的其他规则覆盖。这个流程的目的，是让您在写入之前看到每一家边缘会发生什么。

### 1. 审核修改 <a href="#review-local-changes" id="review-local-changes"></a>

点击 **审核修改** 后，AxisNow 对这次变更做本地检查，并逐家边缘评估：

* **变更摘要**：这次改了什么，条件和动作的前后对比。
* **草稿问题**：规则本身的错误，例如条件不完整、取值格式不正确，需要回到编辑器修改。
* **每家边缘的影响**：每一家边缘是否能承接这条规则，以及动作在该边缘上的实际形式。例如访问控制的允许在 Cloudflare 上是 Skip，挑战在 EdgeOne 上是 JS Challenge；某个条件字段需要更高的套餐，会以警告标出。

结果分为两级。**警告**说明该边缘的行为与您的预期可能有出入，确认后可以继续；**阻断**说明该边缘无法承接这条规则，必须修改后再试。

![](https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2Fgit-blob-4f69f4a7e00f762496426e40ed2a59dda9c89d6d%2Fpolicy-02.png?alt=media)

### 2. 预览远端规则 <a href="#preview-remote-rules" id="preview-remote-rules"></a>

本地检查通过后，点击 **预览远端规则**，AxisNow 展示应用这次变更后，每一家边缘上的完整规则列表。这一步是预演，不写入任何配置。

需要预演的原因是，边缘上的规则不一定都来自这个服务。承载规则的边缘资源可能被多个服务共用，例如同一个 Cloudflare zone 下的多个服务，也可能有您直接在边缘控制台创建的规则。这些规则和您的规则一起参与匹配，顺序决定了谁生效。预演按每家边缘切换查看，列表按该边缘实际的求值顺序排列，不同边缘的求值方向可能不同，例如 Cloudflare 的缓存规则是后匹配者生效，AxisNow 会按各家规则排列顺序，使最终效果与您列表中的顺序一致。每一行标明归属：

* **本服务**：当前服务的规则，这次新增或修改的标为 **新** / **已更新**
* **服务 <名称>**：同一个边缘资源上其他服务的规则
* **在边缘提供商上创建**：您直接在边缘控制台创建、不由 AxisNow 管理的规则

如果您的规则可能被前面的规则遮蔽，或被后面的规则覆盖，对应行会提示涉及的规则位置。只有在读取了边缘上现有规则后才能判断的问题，例如规则条数达到该边缘的上限，也在这一步给出。

![](https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2Fgit-blob-fea2ce45d4a61258a3b4e2323068398cee7d1b79%2Fpolicy-03.png?alt=media)

### 3. 应用修改 <a href="#apply-changes" id="apply-changes"></a>

确认无误后点击最后一步的按钮（**添加规则**、**应用修改**、**删除规则** 或 **应用排序**），AxisNow 把新的规则集同步到每一家边缘，弹窗逐家显示进度。同步在后台进行，关闭弹窗不影响，之后可以在 **任务** 面板查看详情。

同步的结果以整体为准：所有边缘成功，变更生效；某一家失败，AxisNow 把所有边缘恢复到变更前的规则，这次变更不生效。极少数情况下恢复也失败，该边缘会标为 **不一致**，需要您手动重试同步。

![](https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2Fgit-blob-bda6eac61e9785c88edae2d5f105da6c50499de6%2Fpolicy-04.png?alt=media)

## 同步状态 <a href="#sync-status" id="sync-status"></a>

规则列表的右上角显示每家边缘的同步状态：**成功** 表示边缘上的规则与 AxisNow 一致；**待处理** / **配置中** 表示同步进行中；**失败** 表示上次同步失败，悬停查看原因；**不一致** 表示回滚未完成，边缘上的规则可能与 AxisNow 不一致。失败或不一致时点击 **重试同步**，AxisNow 会把当前规则集重新同步到所有边缘。

![](https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2Fgit-blob-f64d3402afc90c3d8fb313f7b2fde8c6ca9066db%2Fpolicy-05.png?alt=media)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://www.axisnow.io/zh/docs/multi-edge/services/policy.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
