Cloudflare 是全球使用最广泛的 CDN 与网络安全服务之一,免费套餐就提供 CDN 加速、DDoS 防护、WAF 基础规则和 SSL 证书管理。把搬瓦工 VPS 的域名接入 Cloudflare 之后,访客流量先经过 Cloudflare 节点,命中缓存则直接返回,不命中才回源到 VPS,既能加速又能减轻源站压力。本文详解接入步骤与关键配置。
本文要点
- 把域名 NS 指向 Cloudflare 的接入步骤
- DNS 代理模式(橙云)与 DNS-only(灰云)的区别
- SSL 模式选择:灵活、完全、完全(严格)
- 缓存规则与页面规则配置
- 如何在 VPS 上获取真实访客 IP
接入 Cloudflare 的整体流程
- 在 Cloudflare 注册账号并添加站点
- Cloudflare 扫描现有 DNS 记录
- 在域名注册商处把 NS 修改为 Cloudflare 提供的名称服务器
- 等待 NS 生效(通常几小时内完成)
- 配置 SSL 模式、缓存规则等
添加站点与 DNS 迁移
登录 Cloudflare → 点击 Add a Site → 输入域名 → 选择 Free 套餐 → Cloudflare 自动扫描 DNS 记录。检查扫描结果,确认 VPS 的 A 记录已被正确导入,然后修改注册商的 NS 到 Cloudflare 提供的两个名称服务器。
NS 修改到哪里
代理模式:橙云 vs 灰云
| 图标 | 状态 | 含义 | 适用场景 |
|---|---|---|---|
| 橙云 | Proxied(代理) | 流量经 Cloudflare,隐藏源站 IP | 网站域名,享受 CDN 与防护 |
| 灰云 | DNS only | 仅做 DNS 解析,流量直连 VPS | 邮件服务器、游戏服务器等 |
网站的 A 记录建议开启橙云(Proxied);MX 记录、FTP 等不应走 Cloudflare 的记录保持灰云。
SSL 模式选择
进入 SSL/TLS → Overview 选择加密模式,这是最容易配错的地方:
| 模式 | 访客→CF | CF→源站 | 适用条件 |
|---|---|---|---|
| Off(关) | HTTP | HTTP | 不推荐 |
| 灵活 | HTTPS | HTTP | 源站无 SSL 时临时用(不推荐长期) |
| 完全 | HTTPS | HTTPS(不校验) | 源站有 SSL(自签名也可) |
| 完全(严格) | HTTPS | HTTPS(校验有效证书) | 源站有 Let's Encrypt 等可信证书(推荐) |
灵活模式会导致跳转循环
缓存配置
浏览器缓存 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 范围
小结
- 接入 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。