如何做一个应用同时服务海内外的用户
大家都知道国内网络限制的原因,如果要做一个 Web 应用需要同时服务于国内用户或者海外用户,一般来说有两种方法。
方法一,在国内和海外同时部署两套应用,分别服务于国内和海外的用户。这个是最常见,也是最普遍的方式。
方法二,在海外部署一套应用,然后使用支持国内 CDN 加速的服务商(只有少部分的海外 CDN 加速服务商支持,所以大家在选择的时候,要注意挑选一下),绕开国内的防火墙,从而使得国内的用户也能够进行使用。
需要注意一点的是:如果使用国内 的 CDN 加速服务商,是需要 ICP 备案。这个整个流程大概需要一周左右吧。我之前走过一次全流程。
我选择的第二个方法。我使用的 赛博佛祖 的 Cloudflare,原因有两个,首先最重要的支持国内的 CDN 加速。其次对于他们提供的免费计划,对于我来说完全够用了。
我的情况
我自己做了小产品,现在是部署在 vercel 上。部署在 vercel 上,也就意味着在国内的用户如果不使用魔法 🧙♀️ 或者梯子 🪜,实际上是访问不了这个应用的。
如何配置 Cloudflare 的 CDN 服务
如果想要使用 Cloudflare 的 CDN 服务。大概要经历以下四步。
第一步:购买域名
注册一个域名。Vercel 提供的域名,是不能通过 Cloudflare 进行 CDN 配置。因为 Cloudflare 要求添加到其平台的域名必须是你自己拥有并能管理 DNS 解析的域名。我是在 namesilo 上购买的域名,这个网站是以廉价域名而著称的网站。所以想要购买便宜的域名的话,建议在这个网站上进行购买,对了,这个网站支持支付宝购买。我本来需要的域名大概只需要 2 美元,结果买域名的时候,不小心买错了,结果又花了 2 美元 重新买了一个。所以域名一共花了 4 美元$。
第二步:Cloudflare 进行 DNS 配置
- 在 Cloudflare 进行账号注册,并登录 Cloudflare 后台,然后添加自己刚刚买的域名。

- 这里可以直接选择它的默认选项,点击继续。

- 直接选择 Free Plan,对于我们这种刚刚起步的 web 应用,基本上够用了。

- 开始添加 DNS 记录。

关于 DNS 添加的小知识点:选择 DNS 记录的类型,不同的类型承载不同的解析逻辑。
以下是 DNS 各记录类型的核心信息汇总表:
| 类型名称 | 核心作用 | 典型场景 | 是否依赖 DNSSEC |
|---|---|---|---|
| A | 将域名解析到 IPv4 地址 | 网站、服务器等域名 →IPv4 的基础解析 | 否 |
| AAAA | 将域名解析到 IPv6 地址 | 支持 IPv6 网络的域名解析(如 IPv6-only 服务器) | 否 |
| CAA | 指定允许为域名颁发 SSL 证书的机构 | 增强 SSL 证书安全性,防止非法机构颁发证书 | 否 |
| CERT | 存储公钥基础设施(PKI)相关的证书 / 公钥信息 | 证书验证、公钥分发等 PKI 场景 | 否 |
| CNAME | 为域名设置 “别名”(将一个域名指向另一个域名) | 子域名别名(如www.example.com指向example.com) | 否 |
| DNSKEY | 存储 DNSSEC 的公钥,用于验证 DNS 记录的完整性与真实性 | DNSSEC 体系中 “验证 DNS 记录未被篡改” | 是 |
| DS | 在父域名中存储子域名的 DNSSEC 公钥信息,实现子域 DNSSEC 验证委托 | DNSSEC 体系中子域与父域的安全层级验证 | 是 |
| HTTPS | 专门用于 HTTPS 服务的配置绑定,关联域名与 TLS 参数(加密公钥、协议版本等) | 加速 HTTPS 连接、加密 SNI(服务器名称指示)、支持 HTTP/3 | 否(部分高级功能依赖公钥) |
| LOC | 存储域名对应的物理地理位置信息(纬度、经度、海拔等) | 紧急救援、物流追踪等需地理定位的特殊场景 | 否 |
| MX | 指定接收域名电子邮件的邮件服务器地址(支持优先级,实现容灾) | 企业 / 个人邮箱的邮件路由(如@example.com 的邮件服务器) | 否 |
| NAPTR | 用于服务发现与协议转换(如 SIP、XMPP 等协议) | VOIP 电话、即时通讯的自动服务器发现 | 否 |
| NS | 标识域名的权威 DNS 服务器(负责解析该域名的服务器) | DNS 层级解析的核心(定位域名的解析服务器) | 否 |
| PTR | 实现反向 DNS 解析(将 IP 地址映射为域名) | 邮件服务器 IP 信誉验证、网络设备身份识别 | 否 |
| SMIMEA | 关联电子邮件地址与 S/MIME 证书(或公钥),验证邮件发件人身份 | 企业级安全邮件通信(如政府、金融行业) | 是 |
| SRV | 定位提供特定服务的服务器,包含服务类型、端口、权重、优先级 | 微软 Active Directory、即时通讯的服务发现 | 否 |
| SSHFP | 存储 SSH 服务器公钥的指纹(SHA-1/SHA-256),验证服务器身份 | 企业内部 SSH 服务器集群的身份验证(防中间人攻击) | 是 |
| SVCB | 通用的服务绑定记录,关联域名与服务参数(IP、TLS 配置、协议版本等) | 替代 CNAME、优化 HTTPS 连接、多协议服务发现 | 否 |
| TLSA | 属于 DANE 体系,存储 TLS 证书的哈希值,验证服务器 TLS 证书 | 自签名证书安全验证、减少对传统 CA 的依赖 | 是 |
| TXT | 存储任意文本信息,用途广泛 | 域名所有权验证、邮件防垃圾(SPF/DKIM)、DNSSEC 辅助记录 | 部分场景(如 DNSSEC 相关) |
| URI | 将域名解析为 URI(如https://example.com/path),支持优先级与权重 | 简化客户端对复杂资源的访问(如 API Endpoint 发现) | 否 |
因为我是使用的 vercel 进行部署的,因而我们知道 vercel 的访问域名。因为我希望用户能够通过比如 xxx.com 或者 www.xxx.com 访问我的网站。因此,在这里我只需要配置两个 DNS 即可。
- 类型选择 CNAME, 名称填写 @ ,IPv4 地址就填写 vercel 的访问域名即可:myname.vercel.app。
- 类型选择 CNAME,名称填写 www, IP4 填写和上面同样的内容即可。

- 点击继续前往激活。然后按照它描述的步骤,更新我的名称服务器,并且复制 Cloudflare 名称服务器。

第三步:更新 NameServers
- 再次回到 namesilo 的后台,点击 Domain Manager

- 点击需要更新的域名。

- 点击 Quick Settings,将 Cloudflare 名称的 NameServers

- 切换到 DNS 的 tab 页面,然后往下滑,确保 DNSSEC 关掉。如果没有关掉,则点击关掉。


截止到目前这一步,已经完成对 NameServers 的更新。且已经完成大部分的工作。
最后一步:在 Vercel 上添加我的域名
- 登录 Vercel 后台,点击需要更新的项目,进入到项目的设置页面。

- 从 overview 标签页,点击 Domains,添加新买的域名。


- 如果域名下面有 Proxy Detected 的标签显示,基本上到此就算是配置成功了。

然后你现在应该可以在国内,不使用魔法 🧙♀️ 或者梯子 🪜 通过这个新域名进行访问了 🎉。