Aiapi-doc/apps/hapi-advanced.md
2026-05-14 11:01:11 +08:00

288 lines
9.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Hapi 进阶配置Cloudflare 优选 IP 高速穿透
**没有公网 IP使用 Cloudflare 优选 IP打造高速内网穿透通道**
> **适用场景**:已配置 Cloudflare Tunnel但访问速度慢、延迟高
> **解决方案**:利用 Cloudflare for SaaS + 优选 IP 服务,绕过拥堵节点
> **前置要求**:已完成 [Hapi 基础配置](/apps/hapi),并拥有两个域名
## 📺 视频教程
推荐先观看视频:[没有公网 IPCloudflare 优选 IP高速内网穿透 - 哔哩哔哩](https://www.bilibili.com/video/BV1PPy6YzE5C)
视频完整演示了配置过程,建议先看一遍再上手操作。
## 🎯 你正在解决什么问题
### 默认 Tunnel 的痛点
直接用 Cloudflare Tunnel 绑定域名时常见以下问题:
- ❌ Cloudflare 分配的 Anycast IP 在国内可能被绕路(绕到美国、欧洲)
- ❌ 运营商 QoS 限速,访问速度慢
- ❌ 延迟高达数百毫秒,严重影响使用体验
![优选 IP 前的访问速度](https://minio.oneinai.com/oneinai/images/docs/hapi/优选前.png)
### 优选 IP 方案的优势
通过本教程的配置,可以做到:
- ✅ 强制流量走对国内网络友好的节点(香港、新加坡等)
- ✅ 大幅提升访问速度,延迟降至几十毫秒
- ✅ 完全免费,利用 Cloudflare 企业级功能
- ✅ 稳定性高,自动切换最优路由
![优选 IP 后的访问速度](https://minio.oneinai.com/oneinai/images/docs/hapi/优选后.png)
> 🚀 **速度提升对比**
> 从两张对比图可以看到,优选 IP 后访问延迟从数百毫秒降到几十毫秒,页面加载也更顺畅。
## 🔍 原理解析
### 流量走向链路
当用户访问你的域名时,流量按以下路径流转:
```
用户浏览器
DNS 解析hapi.justdo.xin
CNAME → cdn.ttdk.fun
CNAME → isp.qzz.io优选 IP 调度器)
返回最优 Cloudflare IP根据用户运营商
Cloudflare 边缘节点(通过 Host Header 识别)
SaaS 路由hapi.justdo.xin → hapi.ttdk.fun
Cloudflare Tunnel加密隧道
你的本地服务器 localhost:3006
```
> 💡 **提示**
> [isp.qzz.io](https://isp.qzz.io/) 在这里充当"智能交警",根据你的网络环境自动选择最优路线。
### 核心技术要点
1. **优选 IP 调度器**[isp.qzz.io](https://isp.qzz.io/) 会根据用户的运营商(电信/联通/移动),返回当前速度最快、延迟最低的 Cloudflare 官方 CDN 节点 IP。
2. **Cloudflare for SaaS**:通过 Custom Hostnames 功能把"访问域名"和"隧道域名"解耦,实现"走优选 IP 进隧道"。
3. **DNS 链式解析**:通过 CNAME 链把用户请求引导到优选 IP同时保持 Cloudflare 对域名的正确识别。
> 💡 **关于优选 IP 调度器**
> [isp.qzz.io](https://isp.qzz.io/) 是社区维护的 Cloudflare 优选 IP 调度服务,会自动测速并返回对当前网络环境最优的 Cloudflare CDN 节点。访问该网站可查看更多说明。
## 🛠️ 配置步骤
### 前置准备
你需要准备:
1. **主力域名**:用于展示给用户访问(例如:`hapi.justdo.xin`
2. **辅助域名**:用于承载 Cloudflare Tunnel例如`ttdk.fun`
3. 两个域名都需要托管在 Cloudflare
> ⚠️ **重要说明**
> - 主力域名和辅助域名**不能是同一个域名**
> - 辅助域名需要是你自己拥有的,不能用别人的
> - 两个域名都必须在 Cloudflare 上管理
### 第一步:配置 Cloudflare Tunnel辅助域名
在辅助域名(例如 `ttdk.fun`)上设置 Tunnel
1. 登录 Cloudflare选择辅助域名
2. 进入 **Zero Trust → Access → Tunnels**
3. 创建隧道并安装 cloudflared
4. 配置公共主机名:
- **子域名**`hapi`
- **域名**`ttdk.fun`
- **服务**`http://localhost:3006`
完成后,你应该可以通过 `hapi.ttdk.fun` 访问 Hapi 服务。
### 第二步:启用 Cloudflare for SaaS辅助域名
在辅助域名(`ttdk.fun`)上启用 SaaS 功能:
1. 进入 Cloudflare 控制台
2. 选择 `ttdk.fun` 域名
3. 进入 **SSL/TLS → Custom Hostnames**
4. 点击 **Add Custom Hostname**
5. 填写:
- **Custom Hostname**`hapi.justdo.xin`(主力域名)
- **Wildcard**:不勾选
6. 点击 **Add Custom Hostname**
> 💡 **提示**
> 添加后会生成 2 条 TXT 验证记录,先保留页面,下一步会用到。
### 第三步:配置 DNS 解析(主力域名)
在主力域名(`justdo.xin`)的 DNS 设置中添加以下记录。
#### 3.1 添加 SSL 验证记录
把第二步生成的 2 条 TXT 记录添加到主力域名的 DNS
| 类型 | 名称 | 内容 | 代理状态 |
| --- | --- | --- | --- |
| TXT | `_acme-challenge.hapi` | `xxxxxxxxxx`(从 SaaS 页面复制) | 仅限 DNS |
| TXT | `_acme-challenge.hapi` | `yyyyyyyyyy`(从 SaaS 页面复制) | 仅限 DNS |
#### 3.2 添加 CNAME 记录
| 类型 | 名称 | 目标 | 代理状态 |
| --- | --- | --- | --- |
| CNAME | `cdn` | `isp.qzz.io` | 仅限 DNS ⚠️ |
| CNAME | `hapi` | `cdn.justdo.xin` | 仅限 DNS ⚠️ |
> 🚨 **关键配置**
> **必须关闭小黄云(代理状态设为「仅限 DNS」**。
> 一旦开启代理,会导致 DNS 解析链中断,无法触发优选 IP。
### 第四步:配置回退源(辅助域名)
在辅助域名(`ttdk.fun`)的 DNS 设置中:
| 类型 | 名称 | 目标 | 代理状态 |
| --- | --- | --- | --- |
| CNAME | `hapi` | `[你的隧道ID].cfargotunnel.com` | 已代理 ✅ |
> 💡 **提示**
> 这条记录通常在创建 Tunnel 时会自动生成。请确保小黄云为**开启**状态(已代理)。
### 第五步:等待 SSL 证书生效
1. 回到辅助域名的 **SSL/TLS → Custom Hostnames** 页面
2. 查看 `hapi.justdo.xin` 的状态
3. 等待几分钟,状态变为 **Active有效** 即配置成功
> ⏳ **耐心等待**
> SSL 证书签发通常需要 5-15 分钟。如超过 30 分钟仍未生效,请检查 TXT 记录是否正确添加。
## ✅ 验证配置
### 测试访问
在浏览器中访问 `https://hapi.justdo.xin`,能正常打开 Hapi 界面即表示配置成功。
### 测试速度提升
使用 ping 或测速工具对比延迟。
**优化前**
```bash
ping hapi.ttdk.fun
# 延迟通常 200-500ms
```
**优化后**
```bash
ping hapi.justdo.xin
# 延迟通常 20-100ms
```
## 🎓 角色分配总结
| 角色 | 域名示例 | 作用 |
| --- | --- | --- |
| **主力域名** | `hapi.justdo.xin` | 最终展示给用户访问的地址 |
| **辅助域名** | `hapi.ttdk.fun` | 承载 Tunnel 的「回退源」,用户不直接感知 |
| **优选 IP 调度器** | [isp.qzz.io](https://isp.qzz.io/) | 像「交警」,告诉流量走哪条不堵的路 |
| **中转域名** | `cdn.justdo.xin` | 作为跳板,把主力域名引向优选 IP 池 |
## 🔧 故障排查
### SSL 证书一直显示 Pending
**可能原因**
- TXT 记录添加错误或未生效
- DNS 传播尚未完成
**解决方法**
1. 使用 [DNS 检查工具](https://dnschecker.org/) 验证 TXT 记录
2. 等待 DNS 全球传播(最长 24 小时)
3. 必要时重新添加 Custom Hostname
### 访问显示 526 错误
**可能原因**
- 辅助域名的 `hapi` 记录未开启代理(小黄云)
- Tunnel 未正确配置
**解决方法**
1. 确认 `hapi.ttdk.fun` 的小黄云为**开启**状态
2. 检查 Tunnel 是否正常运行
### 访问仍然很慢
**可能原因**
- 主力域名的 CNAME 记录开启了代理
- DNS 解析链断裂
**解决方法**
1. 确认 `hapi.justdo.xin``cdn.justdo.xin` 的小黄云均为**关闭**状态
2. 使用 `nslookup` 检查 DNS 解析链是否完整
## 🚀 进阶优化
### 自建优选 IP 服务
如果你追求更稳定的体验,可以:
1. 使用 CloudflareSpeedTest 工具本地测速
2. 手动选择最优 IP
3. 创建自己的优选域名,替代 `isp.qzz.io`
### 多运营商优化
可以针对不同运营商配置不同的优选路径:
- 电信用户:`cdn-ct.yourdomain.com`
- 联通用户:`cdn-cu.yourdomain.com`
- 移动用户:`cdn-cm.yourdomain.com`
通过 DNS 智能解析GeoDNS根据用户运营商返回不同的 CNAME 记录。
## 📚 相关资源
- [Cloudflare for SaaS 官方文档](https://developers.cloudflare.com/cloudflare-for-platforms/cloudflare-for-saas/)
- [Cloudflare Tunnel 文档](https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/)
- [isp.qzz.io - 优选 IP 调度器](https://isp.qzz.io/)
- [视频教程Cloudflare 优选 IP 配置](https://www.bilibili.com/video/BV1PPy6YzE5C)
## ⚠️ 安全提醒
1. 不要泄露 Tunnel 令牌
2. 定期检查 Custom Hostnames 配置
3. [isp.qzz.io](https://isp.qzz.io/) 是社区维护的优选 IP 服务,可靠但非官方,必要时可自建
4. 建议配合 Cloudflare Access 限制访问来源
## 💡 总结
通过这套配置,你可以做到:
- ✅ 不花一分钱
- ✅ 利用 Cloudflare 企业级 SaaS 功能
- ✅ 把原本数百毫秒延迟的内网穿透优化到接近直连的体验
- ✅ 打造一条「高速内网穿透通道」
这是目前免费方案中,提升 Cloudflare 内网穿透速度的**天花板级别配置**。
---
**下一步**:配置完成后,你就可以在任何地方高速访问 Hapi 服务了 🎉