Cloudflare 是全球使用最广泛的 CDN 与网络安全服务之一,免费套餐就提供 CDN 加速、DDoS 防护、WAF 基础规则和 SSL 证书管理。把搬瓦工 VPS 的域名接入 Cloudflare 之后,访客流量先经过 Cloudflare 节点,命中缓存则直接返回,不命中才回源到 VPS,既能加速又能减轻源站压力。本文详解接入步骤与关键配置。

本文要点

  • 把域名 NS 指向 Cloudflare 的接入步骤
  • DNS 代理模式(橙云)与 DNS-only(灰云)的区别
  • SSL 模式选择:灵活、完全、完全(严格)
  • 缓存规则与页面规则配置
  • 如何在 VPS 上获取真实访客 IP

接入 Cloudflare 的整体流程

  1. 在 Cloudflare 注册账号并添加站点
  2. Cloudflare 扫描现有 DNS 记录
  3. 在域名注册商处把 NS 修改为 Cloudflare 提供的名称服务器
  4. 等待 NS 生效(通常几小时内完成)
  5. 配置 SSL 模式、缓存规则等

添加站点与 DNS 迁移

登录 Cloudflare → 点击 Add a Site → 输入域名 → 选择 Free 套餐 → Cloudflare 自动扫描 DNS 记录。检查扫描结果,确认 VPS 的 A 记录已被正确导入,然后修改注册商的 NS 到 Cloudflare 提供的两个名称服务器。

NS 修改到哪里

NS 修改在域名注册商后台操作,而不是 Cloudflare 上操作。每家注册商界面不同,关键词一般是「名称服务器」「Nameserver」或「DNS 服务」。

代理模式:橙云 vs 灰云

图标状态含义适用场景
橙云Proxied(代理)流量经 Cloudflare,隐藏源站 IP网站域名,享受 CDN 与防护
灰云DNS only仅做 DNS 解析,流量直连 VPS邮件服务器、游戏服务器等

网站的 A 记录建议开启橙云(Proxied);MX 记录、FTP 等不应走 Cloudflare 的记录保持灰云。

SSL 模式选择

进入 SSL/TLS → Overview 选择加密模式,这是最容易配错的地方:

模式访客→CFCF→源站适用条件
Off(关)HTTPHTTP不推荐
灵活HTTPSHTTP源站无 SSL 时临时用(不推荐长期)
完全HTTPSHTTPS(不校验)源站有 SSL(自签名也可)
完全(严格)HTTPSHTTPS(校验有效证书)源站有 Let's Encrypt 等可信证书(推荐)

灵活模式会导致跳转循环

若源站 Nginx 已配置 HTTP→HTTPS 301 跳转,同时 CF 设为「灵活」,CF 回源走 HTTP 又被跳转到 HTTPS,会产生无限跳转循环。请改为「完全」或「完全(严格)」。

缓存配置

浏览器缓存 TTL

Caching → Configuration → Browser Cache TTL 中设置。免费套餐可设 1 小时到 1 年,推荐静态资源网站设 1 天以上。

清除缓存

更新网站内容后,在 Caching → Configuration → Purge Cache 手动清除,或指定 URL 精确清除。

缓存级别

默认「Standard」已足够大多数场景。Cache Everything(通过页面规则)可以缓存 HTML,但要注意动态内容不能缓存。

# 通过 Cloudflare API 清除缓存(需 Zone ID 与 API Token)
curl -X POST "https://api.cloudflare.com/client/v4/zones/ZONE_ID/purge_cache" \
     -H "Authorization: Bearer API_TOKEN" \
     -H "Content-Type: application/json" \
     --data '{"purge_everything":true}'

获取真实访客 IP

接入 Cloudflare 后,VPS 收到的请求来自 Cloudflare 节点,REMOTE_ADDR 变成 CF 的 IP。访客真实 IP 在 CF-Connecting-IP 头部里。Nginx 配置 real_ip 模块获取:

# 在 nginx.conf 的 http 块或 server 块中添加:
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
# ...(Cloudflare 官方 IP 范围,定期更新)
real_ip_header CF-Connecting-IP;

Cloudflare IP 范围

完整的 Cloudflare IP 段列表见 cloudflare.com/ips,建议定期核对并更新配置。

小结

  • 接入 CF 只需改 NS,DNS 记录 Cloudflare 帮你管
  • 网站 A 记录开橙云,享受 CDN 与防护
  • SSL 模式推荐「完全(严格)」,避免跳转循环
  • 更新内容后记得清除 CF 缓存
  • 用 CF-Connecting-IP 头部获取真实访客 IP

常见问题

接入 Cloudflare 后源站 IP 会泄露吗?

橙云模式下 Cloudflare 隐藏源站 IP,但历史 DNS 记录、邮件头等可能留存旧 IP。如需彻底隐藏,建议接入后更换 VPS IP 或确认从未泄露。

免费套餐的 CDN 效果够用吗?

对于普通中小型网站完全够用,全球 200+ 节点、无限流量、DDoS 基础防护都包含在免费套餐中。

Cloudflare 支持自定义缓存规则吗?

支持,通过 Page Rules 或新版 Cache Rules 可以针对特定 URL 匹配设置不同缓存行为,免费套餐含 3 条 Page Rules。

接入后 Nginx 日志里 IP 全变成 Cloudflare IP 怎么办?

在 Nginx 配置中添加 set_real_ip_from 和 real_ip_header CF-Connecting-IP,reload 后日志即可还原真实 IP。