> 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/guide/axisnow-cloudflare.md).

# AxisNow + Cloudflare

AxisNow + Cloudflare 双 CDN 互备架构。优化中国网络，自动延迟优选和故障切换。

Cloudflare 提供了慷慨的免费服务，以及其著名的 DDoS 保护能力。本篇文章将为您阐述我们如何充分利用 Cloudflare 的能力。您可以根据自身业务需要灵活组合。

## 名词解释

我们先来理解一下本文用到的一些名词术语。

* **代理域：**&#x662F;您提供给客户端访问的业务域名，也是实际在边缘进行反向代理的主机名。
* **虚拟域：**&#x8BE5;域名是专为 Cloudflare 创建的配置载体。需将 DNS 托管至 CF。
* **回源域：**&#x6B64;域名在虚拟域中配置解析记录指向您的源服务器，并开启小黄云。
* **调度域：**&#x662F;工作在 DNS 层的解析域名。对于客户端/访客来说，并不需要知道该域名。

## AxisNow + Cloudflare 优化中国网络

此部署架构非常适合已经采用 Cloudflare，但需要优化中国大陆网络的业务。

<figure><img src="https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2FJFjFZfdUUqrd0QL28f9x%2Fimage.png?alt=media&amp;token=5d546bb4-7ee8-40c3-9444-6f72efef0195" alt=""><figcaption><p>AxisNow + Cloudflare 双 CDN 互备（中国网络优化）</p></figcaption></figure>

## 架构概述

* **左侧是用户**
  * 分布在全球不同的区域的访客，他们需要访问的**代理域**为：`www.axisnow.io`
* **顶部是 DNS 控制层**
  * 负责实现 DNS 分流解析和故障切换，在多 CDN 架构中，将以域名（CNAME）为调度对象。
  * 如图所示，我们以 `gtm.axisnowdns.com` 作为**一级全局调度域。**
  * &#x20;`cn.axisnowdns.com` 和 `cf.axisnow.dev` 作为**二级调度域**地址池。
  * &#x20;默认线路和中国大陆线路可**自动优选最快的地址，并在故障发生时自动切换**。
* **底部是 Proxy 代理层**
  * 也称为数据面/边缘节点，负责**代理域** `www.axisnow.io` 的代理、转发和流量处理。
  * 我们使用 AxisNow 部署了中国大陆优化节点，也在 Cloudflare for SaaS 配置了对应的端点，CF 的配置将在下文详细阐述。
* **右侧是 AxisNow Origin**
  * 也称为上游、源站。在我们的用例中，如**绿色虚线**所示，自建节点即可以回源到 Cloudflare，也可以回源到源站。

## 配置 Cloudflare for SaaS

使用 Cloudflare CDN 默认要求您进行 DNS 托管。这意味着您无法使用多家 CDN，一旦某条记录开启小黄云，该条记录的域名解析会被 CF 全局接管控制，自动路由至 CF 的边缘节点。

我们要回答的一个核心问题是：

{% hint style="info" %}
**如何让 [www.axisnow.io](http://www.axisnow.io) 在 Cloudflare 有代理配置，但不控制我的解析记录？**
{% endhint %}

好在，这两年 CF 开放了一些功能，使得我们采用多 CDN 或 CNAME 接入 CF 成为可能。您可以购买 CF 的付费版本以实现 CNAME 接入，具体请[参阅官方文档](https://developers.cloudflare.com/dns/zone-setups/partial-setup/)。

而更经济实惠的方式是采用 Cloudflare for SaaS 自定义主机名，此方法类似 AxisNow 中为一个资源绑定别名的方式来实现代理配置。让我们来进一步了解前述名词在 CF 的作用：

* **代理域：**&#x4EE3;理域即您要实际接入 Cloudflare 代理的业务域名。此域名可以将 DNS 托管在 Cloudflare（不开启小黄云），也可以托管在您喜欢的其他 DNS 提供商。在我们的示例中，`www.axisnow.io` 为代理域。
* **虚拟域：**&#x865A;拟域仅作为 Cloudflare 配置载体。必须将 DNS 托管至 Cloudflare。在我们的示例中，`axisnow.dev` 将作为虚拟域接入到 Cloudflare。
* **回源域：**&#x63D0;供给代理域回源的域名（CF 称为回退源）。此域名在虚拟域中配置解析记录指向源服务器，并**开启小黄云**。在我们的示例中：`cf.axisnow.dev` 将作为回源域。
* **调度域：**&#x7528;于指向 CF 边缘节点的域名，我们将**复用回源域** `cf.axisnow.dev` 作为 CF 的调度端点。实际上您也可以自定义任何能指向 CF 边缘节点的域名，但这是违反 CF 服务条款的。

### 步骤指引

{% stepper %}
{% step %}

#### 添加虚拟域到 Cloudflare

`axisnow.dev` 作为虚拟域将 DNS 托管到 Cloudflare。
{% endstep %}

{% step %}

#### 在虚拟域中配置回源域

进入 `axisnow.dev` 仪表板 > `DNS 记录`。

添加 `cf.axisnow.dev` 记录值填写我们的`源服务器地址`，**开启小黄云**。
{% endstep %}

{% step %}

#### 在虚拟域中配置代理域

进入 `axisnow.dev` 仪表板 > `SSL/TLS` > `自定义主机名`。

回源（回退源）填写：`cf.axisnow.dev`。

添加自定主机名：`www.axisnow.io`
{% endstep %}
{% endstepper %}

完成上述配置后，Cloudflare 的全球边缘节点将可代理 `www.axisnow.io`，并回源至 `cf.axisnow.dev` 指向的源服务器。剩下的工作取决于您如何将客户端流量路由至 Cloudflare 的边缘节点。

{% hint style="info" %}
由于 Cloudflare 产品设计配置同步是**全局性**的，因此 [www.axisnow.io](http://www.axisnow.io) 将流量路由至任何 Cloudflare 边缘地址都可以代理，以达到**优选**的目的。但这是**违反 Cloudflare 服务条款**的，强烈不建议您这么做。
{% endhint %}

## 配置 AxisNow&#x20;

{% stepper %}
{% step %}

#### 部署节点并配置代理域

我们采用阿里云香港地区部署了中国大陆优化的 EIP，您可以根据自己需要部署；

配置业务所需的代理域，策略和规则等，您可以参考[快速入门](/zh/docs/edge/quick-start.md)。
{% endstep %}

{% step %}

#### 配置中国大陆优化二级调度域

* 进入 DNS 路由插件，创建 `A` 录类型的调度域：`cn.axisnowdns.com`。
* 点击域名进入路由规则管理，创建一条路由规则：
  * 线路配置为 `默认` 。
  * 地址池配置为中国大陆优化的 EIP 地址。
  * 地址监控选择默认监控模版：`Default China Network` 。
  * 地址选取策略为`最小延迟` 。
    {% endstep %}

{% step %}

#### 配置全局调度域

* 创建 `gtm.axisnowdns.com` 全局调度域，选择 `CNAME` 类型。
* 创建 `默认` 线路路由规则：
  * 地址池为 `cf.axisnow.dev` `cn.axisnowdns.com` 。
  * 地址监控关联 `Default Intl Network` 。
  * 地址选取策略为`最小延迟`；
* 创建 `中国大陆` 线路路由规则，地址监控关联 `Default China Network` ，其他配置同上。

<figure><img src="https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2Frv2sJciJDt93OweoJeQK%2Fimage.png?alt=media&amp;token=42791a1f-8dbe-4438-86c3-33f29ff9586a" alt=""><figcaption><p>例图：域名和文中不符可忽略</p></figcaption></figure>
{% endstep %}
{% endstepper %}

现在，一切准备就绪！我们只需将 `www.axisnow.io` 的 DNS 解析通过 `CNAME` 指向到 `gtm.axisnowdns.com` 即可。从而实现中国大陆访问自建 CDN，以实现更快更稳定的用户体验。全球用户仍然访问 Cloudflare，享受高速、安全和免费的服务。

{% hint style="info" %}
AxisNow 系统预设了两个拨测任务模版：

* Default Intl Network 配置了 3 个国际拨测点，可用于监控国际链路。
* Default China Network 配置了 3 个中国大陆拨测点，可用于监控中国大陆方向链路。
  {% endhint %}

{% hint style="info" %}
由于 BGP 多播的特点，使用国际拨测点监控一个覆盖中国大陆优化的 EIP 可能会不准确。

正确的做法是**将拨测点和最终用户地区/线路保持一致**。
{% endhint %}

{% hint style="info" %}
默认模版配置的请求协议和参数都为：`https://拨测目标:443/aegis_node_ping/`&#x20;

**请注意：**&#x5982;果地址池是 AxisNow Edge，那么采用默认配置参数即可。若地址池并不是 AxisNow Edge。您需要配置**正确的拨测 URL**（创建新的模版或修改默认模版）以正确探测和评估。

在上述用例中 Cloudflare 的默认拨测请求为：`https://cf.axisnow.dev:443/aegis_node_ping/` 。我们修改为  `https://www.axisnow.io:443/` 来作为请求协议和参数。
{% endhint %}

<figure><img src="https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2FDwLLu7thC1bvBM4WwSTB%2Fimage.png?alt=media&amp;token=130dc2ad-70fa-426a-975d-d90d59b95ca7" alt=""><figcaption></figcaption></figure>

## 自动优选和故障切换

AxisNow 可以实现多个 CNAME 的自动优选和故障切换，如图所示，但这会违反 CF 的服务条款。&#x20;

<figure><img src="https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2FCPEEanilQ6STyqNIbh6R%2Fimage.png?alt=media&amp;token=39c2fe6d-9582-4a8c-bc95-2a6600e3b251" alt=""><figcaption></figcaption></figure>

我们建议您只需配置在 CF 的调度域以及您自建 CDN 的调度域，如图所示：

<figure><img src="https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2Fh5Vjxb5ZRvFd5mPlLmwe%2Fimage.png?alt=media&amp;token=4d18ac74-bd59-481c-9b43-8a8bff23683f" alt=""><figcaption></figcaption></figure>

在 DNS 路由规则可快速查看地址监控状态。点击可跳转至相关拨测任务查看。

{% hint style="info" %}
基于监控的路由规则会有首次初始化过程，因为监控数据需要一段时间的拨测和评估，所以**首次地址选取策略将忽略监控**。地址池会**在几分钟后**呈现<mark style="color:green;">绿色（正常）</mark>或<mark style="color:red;">红色（异常）</mark>。
{% endhint %}

## 串联用例

除了平行部署外，您还可以将他们串联部署使用，具体取决于您的业务偏好。

### Cloudflare 前置，AxisNow 作为统一回源网关

此部署架构可将 AxisNow 视为您的统一接入网关，充当反向代理、负载均衡器、回源/中间缓存层等。将 CF 作为您的互联网流量入口，负责处理边缘缓存、DDoS、WAF、Bot Manager 等强大的边缘能力。

<figure><img src="https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2FYABA24NnLM4Pw1idULSo%2Fimage.png?alt=media&amp;token=10191c28-a454-43a1-a01f-f52b93664629" alt=""><figcaption></figcaption></figure>

### AxisNow 前置，Cloudflare 作为统一回源网关

此部署架构将 AxisNow 作为互联网入口，填补 CF 网络覆盖不足的区域，但回源到 CF。适合那些将复杂业务逻辑已重度使用在 Cloudflare 的用户。

<figure><img src="https://3062891322-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKDgGNU6JXG7cqYCk2aCz%2Fuploads%2FZBaBLxJtOotuI6jemeSL%2Fimage.png?alt=media&amp;token=297ef7a8-7a32-4c9c-9e16-a88ed7f07c63" alt=""><figcaption></figcaption></figure>


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://www.axisnow.io/zh/docs/guide/axisnow-cloudflare.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
