一、先看结论
搬瓦工 VPS 接入 Cloudflare 的核心不是“把域名加进去”这么简单,而是要处理好三件事:DNS 记录是否正确、SSL/TLS 模式是否正确、源站真实 IP 是否保护好。
推荐做法是:域名交给 Cloudflare 托管;网站记录使用小黄云代理;源站安装有效证书;Cloudflare SSL/TLS 使用 Full (strict);Nginx/Apache 获取真实访客 IP;源站防火墙尽量只允许 Cloudflare 回源访问 80/443。
二、接入流程总览
- 源站先跑通。在搬瓦工 VPS 上确认 Nginx / Caddy / Apache 正常,网站能通过源站 IP 或临时域名访问。
- 添加站点。在 Cloudflare 添加你的域名,导入或手动创建 DNS 记录。
- 替换 Nameserver。到域名注册商后台,把 NS 改成 Cloudflare 分配的两个 Nameserver。
- 核对 DNS 记录。确认主域名、www、API、邮件、验证记录没有遗漏。
- 开启代理。网站流量走小黄云,邮件、SSH、数据库等非 Web 服务不要开启代理。
- 设置 SSL/TLS。源站安装证书后,Cloudflare 选择
Full (strict)。 - 配置缓存和安全。按静态资源、后台路径、登录路径分别设置缓存和绕过规则。
- 验证上线。使用
dig、curl、浏览器和日志确认解析、HTTPS、缓存和真实 IP。
三、DNS 记录怎么填?
| 记录 | 类型 | 值 | 代理状态 | 说明 |
|---|---|---|---|---|
@ | A | 搬瓦工 IPv4 | Proxied | 主域名网站访问,通常开启小黄云。 |
www | CNAME | example.com | Proxied | www 跳转或同站访问。 |
api | A / CNAME | 源站 IP 或目标域名 | 按需 | 公开 API 可代理;非 HTTP 服务不要代理。 |
mail | A | 邮件服务器 IP | DNS only | 邮件服务不要走小黄云。 |
MX | MX | 邮件服务商 | DNS only | MX 记录不走 CDN 代理。 |
_acme-challenge | TXT | 证书验证值 | DNS only | 用于 DNS-01 证书验证。 |
ssh | A | 搬瓦工 IP | DNS only | 如果用域名连 SSH,应保持灰云。 |
四、SSL/TLS 模式怎么选?
最容易出问题的是 SSL/TLS 模式。推荐路线是:搬瓦工源站先部署有效证书,然后 Cloudflare 使用 Full (strict)。这样浏览器到 Cloudflare、Cloudflare 到搬瓦工源站两段都是 HTTPS。
| 模式 | 含义 | 是否推荐 |
|---|---|---|
Flexible | 浏览器到 Cloudflare 是 HTTPS,Cloudflare 到源站是 HTTP。 | 不建议生产站长期使用,容易出现安全和跳转问题。 |
Full | Cloudflare 到源站使用 HTTPS,但不严格验证源站证书。 | 可临时过渡,长期建议升级到 Full strict。 |
Full (strict) | Cloudflare 到源站使用 HTTPS,并验证源站证书有效。 | 推荐。 |
源站可以使用 Let’s Encrypt 证书,也可以使用 Cloudflare Origin Certificate。若使用 Origin Certificate,证书只适合 Cloudflare 回源,不适合直接给普通浏览器访问。
五、源站真实 IP 怎么保护?
开启小黄云后,普通访客看到的是 Cloudflare 边缘节点 IP,不会直接看到搬瓦工 VPS IP。但这不等于源站绝对隐藏,历史 DNS 记录、邮件头、直连端口、证书记录、错误配置都可能泄露源站。
建议做以下处理:
- 网站域名使用小黄云代理,不要把源站 IP 暴露在公开 A 记录里。
- 邮件服务、SSH、数据库等不要和网站域名混用。
- 源站防火墙只允许 Cloudflare 回源 IP 访问 80/443。
- 关闭不必要的公网端口,例如数据库、Redis、管理面板、测试端口。
- 不要在网站页面、Git 仓库、配置文件或错误页暴露源站 IP。
Nginx 获取真实访客 IP 的基础写法如下。实际 Cloudflare IP 段请以官方当前列表为准,不要长期使用过期列表。
# /etc/nginx/conf.d/cloudflare-real-ip.conf
real_ip_header CF-Connecting-IP;
real_ip_recursive on;
# 示例:这里应填写 Cloudflare 官方公布的 IPv4/IPv6 回源 IP 段
# set_real_ip_from 173.245.48.0/20;
# set_real_ip_from 2400:cb00::/32;
六、缓存怎么设置更稳?
Cloudflare 缓存更适合静态资源,不要盲目缓存后台、购物车、登录态、API 写入接口和用户中心页面。对普通 WordPress 或静态站,可以先从保守规则开始:
| 路径 | 建议 | 原因 |
|---|---|---|
/wp-admin/* | 绕过缓存 | 后台页面有登录状态,不应缓存。 |
/wp-login.php | 绕过缓存 / 加安全规则 | 登录入口需要实时响应。 |
*.css / *.js / images/* | 缓存静态资源 | 适合 CDN 加速,命中率更高。 |
/api/* | 按接口类型决定 | 读接口可短缓存,写接口不要缓存。 |
| HTML 页面 | 谨慎缓存 | 动态页面缓存错误会造成登录串号或内容不更新。 |
七、A / AAAA 和 IPv6 注意事项
如果搬瓦工 VPS 同时有 IPv4 和 IPv6,可以在 Cloudflare 中同时配置 A 和 AAAA。需要注意:
- 源站 IPv6 防火墙也要配置,不要只配置 IPv4。
- 如果 IPv6 线路不稳定,可以先只放 A 记录,待验证后再加 AAAA。
- Cloudflare 代理开启后,访客看到的是 Cloudflare 的边缘 IP,不一定能直接反映源站 IPv4/IPv6 状态。
- 如果源站证书包含主域名和 www,IPv4/IPv6 回源都要能正常提供 HTTPS。
八、上线后怎么验证?
常用验证命令:
dig example.com
dig www.example.com
curl -I https://example.com
curl -I https://www.example.com
curl -I --resolve example.com:443:源站IP https://example.com
openssl s_client -connect example.com:443 -servername example.com </dev/null
重点看这些结果:
dig是否已经返回 Cloudflare 代理 IP,或灰云时返回源站 IP。curl -I是否返回 200 / 301 / 302,而不是 522、525、526、521。- 响应头中是否出现
cf-cache-status、server: cloudflare等信息。 - 源站日志是否记录真实访客 IP,而不是全部显示 Cloudflare IP。
- 直接访问源站 IP 是否已经被限制或不返回正式站点内容。
九、常见错误和处理办法
| 错误 | 常见原因 | 处理方向 |
|---|---|---|
| DNS 没生效 | NS 没改好、注册商未保存、TTL 未到、记录写错。 | 检查域名注册商 Nameserver,使用 dig NS 验证。 |
| ERR_TOO_MANY_REDIRECTS | Flexible 模式与源站 HTTPS 跳转冲突。 | 源站装证书,改用 Full strict,统一跳转规则。 |
| 521 Web server is down | 源站 Nginx/Apache 未启动、防火墙拦截 Cloudflare。 | 检查源站 Web 服务、端口和防火墙规则。 |
| 522 Connection timed out | Cloudflare 连接源站超时,源站负载高或线路异常。 | 检查 VPS 负载、回源端口、网络和 Web 服务。 |
| 525 / 526 | Cloudflare 到源站 TLS 握手或证书校验失败。 | 检查源站证书、SNI、证书链和 SSL/TLS 模式。 |
| 后台登录异常 | 缓存了动态页面或安全规则误拦截。 | 后台路径绕过缓存,检查 WAF / Bot / Rate Limit 规则。 |
十、常见问题(FAQ)
搬瓦工 VPS 接入 Cloudflare 后还需要安装证书吗?
建议安装。生产站推荐源站安装有效证书,Cloudflare 使用 Full (strict),不要长期依赖 Flexible。
小黄云和灰云怎么选?
网站访问记录通常开小黄云;邮件、SSH、数据库、面板和非 Web 服务通常保持灰云 DNS only。
Cloudflare 会让大陆访问一定变快吗?
不一定。Cloudflare 的效果取决于用户地区、运营商、缓存命中、源站机房和线路。静态资源通常更容易受益,动态页面需要实测。
开启 Cloudflare 后还能看到真实访客 IP 吗?
可以,但需要 Web 服务器读取 CF-Connecting-IP,并配置 Cloudflare 官方回源 IP 段为可信代理。
为什么直接访问源站 IP 还能打开网站?
说明源站没有做回源限制。可以配置防火墙只允许 Cloudflare IP 访问 80/443,或者让默认站点不返回正式业务内容。
相关教程
WordPress 建站安装教程
先把源站网站、运行环境和基础服务配置正确,再接入 Cloudflare。
DNS 解析器设置教程
理解 DNS 解析、递归解析器和常见解析问题。
SSH 连接教程
SSH 域名不要开启小黄云,保持 DNS only。
备份与恢复教程
切换 DNS、证书和缓存规则前建议先备份配置。
SSH 安全加固
限制管理入口、关闭密码暴力破解风险,降低源站暴露后的安全风险。
无法连接排查
区分 Cloudflare 错误、源站故障、DNS 问题和本地网络问题。