搬瓦工接入 Cloudflare 教程:DNS、HTTPS、真实 IP 和回源设置

搬瓦工接入 Cloudflare 教程:DNS、HTTPS、真实 IP 和回源设置
搬瓦工运维与建站教程 · DNS、HTTPS 与安全回源

搬瓦工接入 Cloudflare,不只是把 DNS 记录点成橙色云。源站证书、真实访客 IP、缓存和防火墙都需要分别处理。顺序建议固定为:先让源站 HTTPS 正常,再开启代理,最后收紧源站访问。

本文以已经运行的 Nginx 网站为例,不更改 SSH 管理方式,不把数据库或控制面板直接暴露到 CDN 后面。示例域名请替换为你自己的域名。

一、先区分 DNS only、代理与两段 TLS

HTTPS 实际是两段连接
Origin CA 主要用于 Cloudflare 回源,不是通用访客证书。

DNS only 主要返回解析记录,访客直接连接源站;Proxied 则由 Cloudflare 在支持的 Web 流量范围内代理请求。不是所有协议和端口都能通过普通代理,例如 SSH 不能因为域名开了橙色云就照常使用原端口。

代理模式下有两段连接:访客到 Cloudflare、Cloudflare 到 VPS。浏览器证书只反映前一段。建议在源站支持的情况下使用 Full (strict),验证回源证书的有效期、域名和签发信任。

源站若使用 Cloudflare Origin CA,通常供 Cloudflare 回源验证,不是面向所有浏览器的公众可信证书。把域名切回 DNS only 后出现不受信任提示,可能正是这个原因;需要保留直接访问能力时,优先安排公众可信证书。

二、接入前备份 DNS 和检查源站

接入顺序:先源站,后代理
普通 CDN 代理不是 SSH 和数据库的通用转发。

先记录现有 A、AAAA、CNAME、MX、TXT 和 CAA。更换权威 DNS 时,核对新区域的记录是否完整,尤其是邮箱和其他子域名。不要为了给网站接 CDN,顺手删除不认识的邮件记录。

从受控终端使用真实域名指定源站地址测试:

curl --resolve site.example.com:443:192.0.2.10 \
  --connect-timeout 8 --max-time 30 -I https://site.example.com/

此处 192.0.2.10 为示例地址。它保留 Host 和 SNI,不修改公开 DNS。源站若未完成 HTTPS,就先修复证书和监听,不在 CDN 后面隐藏这个问题。[5]

三、切换代理与 SSL 模式

确认域名在 Cloudflare 已激活,A/AAAA 指向正确源站,边缘证书可用后,再开启对应网站记录的代理。IPv6 源站尚未配置正常时,不要保留一个错误的 AAAA。

在 SSL/TLS 配置中选择 Full (strict),并检查原有应用是否把自身 URL 设为 HTTPS。Flexible 与源站强制 HTTPS 组合容易形成重定向问题;不要为了去掉报错长期使用不符合业务安全要求的模式。[3]

切换后从外部测试首页、登录、图片上传和接口。Nginx 监听、防火墙、DNS 代理状态分别检查,不能只看 DNS 页面显示成功。

四、正确记录访客真实 IP

真实 IP 只能信任可信代理
只放行 Cloudflare 网段,不等同于完整的来源身份认证。

代理后,网络连接的来源一般是边缘节点。需要在 Nginx 中只信任 Cloudflare 的现行网段,再读取 CF-Connecting-IP,不要把所有来源都设为可信。可信网段列表应从 Cloudflare 的 IPv4/IPv6 地址清单获取并维护。[6]

配置的结构如下,这不是可以直接粘贴生效的完整配置:先建立只包含经核对 set_real_ip_from 网段; 的 include 文件。

# 放在 http 上下文;下面的 include 文件必须先创建并验证
include /etc/nginx/snippets/cloudflare-trusted.inc;
real_ip_header CF-Connecting-IP;
real_ip_recursive on;

修改后运行 nginx -t,再 reload 并检查真实请求的日志。应用框架也可能有独立的 trusted proxy 设置,应与 Nginx 处理方式一致。不要在多个层次无条件信任用户可自行传入的 X-Forwarded-For。

使用 Fail2ban 时,确认封禁在哪一层执行。只在源站 INPUT 链封一个已经不直接连接源站的访客 IP,未必能阻断代理请求;反过来,封错 Cloudflare 出口可能影响一批正常用户。

五、源站保护不要误伤管理通道

网站稳定后,可以考虑仅允许所需代理网段访问 Web 端口,同时保留自己的 SSH 管理入口。IPv4 和 IPv6 都要检查,避免只限制其中一个。配置前参考 SSH 密钥与管理端口设置。

允许 Cloudflare 网段只是缩小直接访问面,不等于验证“请求一定来自你自己的站点配置”。对要求更高的源站,可进一步评估 Authenticated Origin Pulls 或受控隧道等方案,并确认应用、证书和恢复通道。

换 IP 或迁移后要更新回源地址、监控和白名单,参照 搬瓦工迁移机房完整教程。不要在唯一 SSH 会话中直接清空现有规则再重建。

六、缓存先从静态资源开始

不要给所有 URL 无差别设置强制缓存。登录、后台、购物车、结账、账户和带用户会话的响应应有明确绕过策略;API 是否缓存由业务语义决定。Cookie、缓存头和所选规则都会影响行为。[7]

用开发者工具检查 CF-Cache-Status、响应头和页面内容,同时测试登录与未登录访问。源站流量是否减少取决于命中率,不是“开启 CDN 就不消耗 VPS 流量”;回源请求、动态页面和附件上传仍会产生流量,参考 搬瓦工流量用完怎么办?流量统计和重置时间。

七、常见错误怎么定位

先确认错误发生在哪一层
上线后同时检查代理入口和受控源站入口。
现象先查哪里
重定向循环SSL 模式、应用 URL、Nginx 跳转与插件
526 等证书错误源站证书有效期、域名匹配、证书链
连接失败或超时目标 IP、80/443 监听、防火墙及应用负载
登录状态串用是否错误缓存私有页面、Cookie 绕过是否生效
源站日志全是代理 IPtrusted proxy 与真实 IP 处理是否正确

保留具体时间、请求 URL、状态码与 Ray ID,再看源站同一时刻的日志。对比源站与代理入口时,不关闭证书验证掩盖错误。

常见问题

开启代理后可以直接隐藏所有源站入口吗?

不能忽略管理、证书续期、监控和第三方回调。先列出必要来源,再逐步收紧。

Cloudflare 一定能降低中国大陆延迟吗?

不能保证。体验与访问网络、边缘选择、缓存命中和回源路径有关,应测量实际业务。

Origin CA 可以直接供普通浏览器访问吗?

它主要用于 Cloudflare 回源,不应假定所有浏览器都信任。需要直接访问时配置公众可信证书。

相关阅读

参考资料

  1. Cloudflare:DNS only 与 Proxied
  2. Cloudflare:可代理的网络端口
  3. Cloudflare:Full (strict) 回源校验
  4. Cloudflare:Origin CA 的信任范围
  5. curl:连接时序、resolve 与 TLS 验证
  6. Cloudflare:恢复访客 IP
  7. Cloudflare:缓存与 Set-Cookie

微信订阅号

VPS收割者微信公众号

QQ群(全员禁言)

VPS收割者QQ群(全员禁言)