惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
博客园_首页
H
Help Net Security
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
GbyAI
GbyAI
Scott Helme
Scott Helme
D
Docker
Hacker News: Ask HN
Hacker News: Ask HN
P
Privacy & Cybersecurity Law Blog
Jina AI
Jina AI
雷峰网
雷峰网
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
G
GRAHAM CLULEY
C
Cisco Blogs
The Hacker News
The Hacker News
F
Full Disclosure
Y
Y Combinator Blog
Blog — PlanetScale
Blog — PlanetScale
Recent Announcements
Recent Announcements
G
Google Developers Blog
量子位
K
Kaspersky official blog
Cisco Talos Blog
Cisco Talos Blog
The Cloudflare Blog
A
About on SuperTechFans
C
Cybersecurity and Infrastructure Security Agency CISA
Last Week in AI
Last Week in AI
博客园 - 三生石上(FineUI控件)
Microsoft Security Blog
Microsoft Security Blog
Martin Fowler
Martin Fowler
T
Tenable Blog
P
Palo Alto Networks Blog
H
Heimdal Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Schneier on Security
Schneier on Security
The Register - Security
The Register - Security
F
Fortinet All Blogs
Stack Overflow Blog
Stack Overflow Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
The Blog of Author Tim Ferriss
N
News and Events Feed by Topic
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
V
V2EX
爱范儿
爱范儿

hsfzxjy 的博客

解决 VSCode + CMake + MSVC 编译器信息乱码的问题 使用 3090 部署 1.58bit 动态量化版 DeepSeek R1 671b 如何在 VS Code DevContainer 中配置 HTTP 代理 如何在跳板机背后的服务器上使用 VS Code Remote - Containers Cohesive Digests for Ints and Floats Rust 中的隐匿概念 —— Place(位置) 美术馆 一尺之槌,日取其半,1075日而竭 辩义 State、Nation 与 Country 将 Base64 编码的数据快速转换为 Uint8Array 折腾 NPU·第1章 —— 搭建 Level Zero 开发环境 折腾 NPU·第0章 —— Intel NPU 概述与 Level-Zero 新增域名 monad.run CSS 中为特定字符设置不同字体 Arbitary Lifetime Transmutation via Rust Unsoundness Dijkstra 算法的延伸 Manacher 回文计数算法 硬卧 Go Fact: Zero-sized Field at the Rear of a Struct Has Non-zero Size Display *big.Rat Losslessly and Smartly in Golang 代码的仪式 Building Electron From Scratch 中式亲属称谓研究之一:构建半群 Some Notes on Kotlin Coroutines Git sparse-checkout and partial clones for Mega-Repos 辩义“封建” Diving from the CUDA Error 804 into a bug of libnvidia-container Modern Cryptography, GPG and Integration with Git(hub) Move the Root Partition of Ubuntu A New Programmer Kicks a Roadblock Git-based Dependencies in Dart and Go Reversy Naming 人类一败涂地 Invalid Golang Pointers Can Bite You Even If You Don't Dereference Side Project(副业) A Flaw of Promoting Complex Trait Bounds in Rust Initialize Process Pool Worker with Individual Value Rust - Python FFI From Scratch [Extending Hexo For My Site] Part 1 [Extending Hexo For My Site] Part 0 Debug a 'torch.tensor(1).cuda()' hanging 不自由的互联网 Retrieve Contents over HTTP without curl or wget [Unravelling mocona] Part 1 - Verbosity or Anti-Pattern [Unravelling mocona] Part 0 - Preface Understanding pickle in Python Rough Notes on Deploying Vaultwarden & NextCloud Bookmarks 语言狂热者与实用主义者 Demystify the randomness in CUDA kernels Performant Bulk Mutations in IndexedDB Auto Rebuild .pyx Files with pyximport Cython and Threads Obtain a Random Available TCP Port with Bash Information Theory: KL Divergence Information Theory: Entropy and Mutual Information 铁板烧 西郊线 Proof of the Gumbel Max Trick Option::as_ref Rc, RefCell and Interior Mutability Visualizing Correlation 三月十日杂感 三月一日杂感 二月十一日杂感 一月二十六日杂感 SS Configuration 一月七日杂感 四月·病 Haskell 笔记:State Monad Haskell 笔记:Monad 引论 Haskell 笔记:Applicative Haskell 笔记:Category Theory and Functor Haskell 笔记:data, type, newtype Haskell 笔记:folds 使用 Aria2 在 Ubuntu 中下载百度云资源 从伪并行的 Python 多线程说起 一个 Reentrant Error 引发的对 Python 信号机制的探索和思考 Linux 文件权限 HSFZMUN 4.0 部署小记 午后雨·科大 最后的雨夜·广州 揭秘·变态的平方根倒数算法 神坑·Python 装饰类无限递归 Python“黑魔法”之 Encoding & Decoding Ubuntu 重新映射键盘布局 为什么我要翻墙 Python“黑魔法”之 Generator Coroutines 数学美 之 判断线段相交的最简方法 除夕杂感 17 行代码实现的简易 Javascript 字符串模板 Python“黑魔法”之 Meta Classes 诗集 生活,需要被“发现” 家书·十八岁成人礼 炫技?还是需求? 【译】响应式图片的现状 【译】“为什么有这么多的编程语言?” Wisecity 商赛总结——也谈前端自动化测试 记一次 DoS 诈骗网站的经历 那一年,我们望向星空
老生常谈:使用 Cloudflare 自选 IP 加速站点访问
2024-09-15 · via hsfzxjy 的博客

本站此前是依托 Github Pages 搭建的,即静态文件托管于 Github 上,再将自定义域名 i.hsfzxjy.site CNAME 到 hsfzxjy.github.io。这种方案免费是免费,但国内的访问速度不甚良好,有几个省甚至出现了超时的现象1。为了优化访问,本站现将静态文件迁移至 Cloudflare Pages 上,并使用 Cloudflare 的自选 IP 加速访问。

[图1] 优化前的效果;[图2] 优化后的效果。

Github Pages 为什么慢?

Github 没有对国内访问作网络优化,因此从国内出发的所有请求,无论使用 Pages 域名或是自定义域名,都会经由较差的线路到达境外的 Github 服务器。以下是网络拓扑的示意图。

国内 IP境外Github 服务器i.hsfzxjy.sitehsfzxjy.github.io

Cloudflare 比 Github Pages 好在哪里?

Cloudflare 与 Github Pages 相比,拥有众多的边缘节点。 这些边缘节点相当于 Cloudflare 的大门,只要请求到达这里,余下的流程便被 Cloudflare 接管,无论是去 Cloudflare 内部服务或是到其他的境外服务器都是很快的。而选择正确的边缘节点,可以加速特定区域到达 Cloudflare 大门的速度,进而优化整个访问的耗时。

国内 IPCloudflare其他境外服务器边缘节点CF Worker / Pagesi.hsfzxjy.site(快!)

本站优化后的网络拓扑

i.hsfzxjy.siteCloudflarehsfzxjy.github.io104.19.22.121边缘节点SSL/TLS自定义主机名gh.monad.run回退源CNAMEA 记录

以下从右到左解释整个流程:

  1. 首先,我们需要有一个辅助域名在 Cloudflare 上解析。本例中的辅助域名是 monad.run。我们新增一条 CNAME 记录,指向 hsfzxjy.github.io。如此一来,便可用 gh.monad.run 访问 Github Pages 上的内容。
  2. 其次,也是最关键的一步,我们需要让 i.hsfzxjy.site 主域名收到的请求都转发至 gh.monad.run。为完成这一步,需要在 Cloudflare 的 “SSL/TLS -> 自定义主机名”设置中,配置回退源为 gh.monad.run 及主机名为 i.hsfzxjy.site。
  3. 最后,我们添加一条从主域名 i.hsfzxjy.site 到边缘节点 104.19.22.121 的 A 记录,从而将主域名的请求转发至 Cloudflare,再由 Cloudflare 转发至后续的处理服务。此处的 104.19.22.121 即所谓的“Cloudflare 优选 IP”,经由其可优化从国内的访问速度。此类 IP 的列表随时可能变化,最新的一批可在 ip.164746.xyz 中查询。注意这一步不要求主域名 i.hsfzxjy.site 在 Cloudflare 上解析,只需要在原有的 DNS 服务商(如 DNSPod)上操作即可。

步骤 1 和 步骤 3 都是标准的 DNS 操作,不再赘述。以下重点说说步骤 2 的操作。

如何配置 Cloudflare 的自定义主机名回退源

在开始前,我们需要再明确一下此步中涉及的两个域名:主域名 i.hsfzxjy.site 和辅助域名 gh.monad.run。前者面向客户端,后者连接我们真正的服务器。读者需清楚了解这两个域名的关系,并替换为自己的情形,以免操作失误。

首先,我们找到回退源的设置。该设置位于“SSL/TLS -> Custom HostNames”下。如果是首次使用,Cloudflare 会要求你开通 Cloudflare for SaaS 服务,绑定信用卡开通即可,这个服务的免费额度足够我们使用。在右边的“Fallback Origin”中输入我们的辅助域名 gh.monad.run,然后点击“Add Fallback Origin”。

完成后点击“Add Custom Hostname”,跳转至另一个界面添加主域名 i.hsfzxjy.site。

随后回到上一步。此时我们的设置已经生效,但主域名的状态为 Pending。

Pending 状态意味着 Cloudflare 需要我们进一步验证方能确认 i.hsfzxjy.site 确实为我们所持有。验证的具体步骤需要我们在主域名的服务商处添加两条 TXT 记录,内容为上图所示。以下是在 DNSPod 中的添加截图。

添加完成后回到 Cloudflare 界面,点击“Refresh”按钮。稍等片刻,状态提示变成“The hostname is using Cloudflare and cannot be activated with an TXT or HTTP validation token. To activate the custom hostname, the DNS target needs to point to the SaaS zone.”这说明验证已生效,但还需一步将主域名的 DNS 解析指向辅助域名,即添加一条 CNAME 记录,将 i.hsfzxjy.site 指向 gh.monad.run。

再稍等片刻,状态提示变成“Active”即表示设置成功。

至此,正常的回退源配置已经完成,我们可以删除之前的两条 TXT 记录,因为它们只用于临时验证。随后我们修改 i.hsfzxjy.site 到 gh.monad.run 的 CNAME 记录为 到优选 IP 104.19.22.121 的 A 记录,从而让主域名的请求经由 Cloudflare 的优选 IP 加速访问,即可完成整个流程。


作者:hsfzxjy
链接:
许可:CC BY-NC-ND 4.0.
著作权归作者所有。本文不允许被用作商业用途,非商业转载请注明出处。