上一篇 下一篇 分享链接 返回 返回顶部

从 DNS 到源站防护:Cloudflare 生产部署全流程指南

发布人:慈云数据-客服中心 发布时间:24小时前 阅读量:4

Cloudflare 生产环境部署指南|零基础可学

在现代网站与应用部署中,Cloudflare 已经不仅仅是一个“CDN 加速服务”,它更像是一套覆盖 DNS、CDN、HTTPS、安全防护、访问控制、边缘计算、对象存储、零信任网络 等能力的综合平台。对于个人站长、中小企业、SaaS 服务商,甚至大型企业来说,合理使用 Cloudflare 可以显著提升网站访问速度、降低源站压力、增强安全性,并简化运维工作。

本文将从零基础角度出发,系统讲解如何在生产环境中部署 Cloudflare,包括域名接入、DNS 配置、HTTPS 设置、缓存策略、安全规则、源站保护、监控排障以及上线前检查清单。即使你之前没有使用过 Cloudflare,也可以按照本文一步步完成生产级配置。


一、Cloudflare 是什么?

Cloudflare 是一个全球化的网络服务平台,最常见的功能包括:

  • DNS 托管
  • CDN 内容分发
  • HTTPS/TLS 证书管理
  • DDoS 防护
  • Web 应用防火墙 WAF
  • Bot 防护
  • 页面规则 / 配置规则
  • Workers 边缘函数
  • Zero Trust 零信任访问控制
  • R2 对象存储
  • Turnstile 人机验证

简单来说,当你的网站接入 Cloudflare 后,用户访问你的网站时,流量会先经过 Cloudflare 的全球节点,再转发到你的源站服务器。

访问链路通常如下:

用户浏览器
   ↓
Cloudflare 边缘节点
   ↓
你的源站服务器

这样做的好处是:

  1. 静态资源可以直接从离用户最近的 Cloudflare 节点返回;
  2. 源站真实 IP 可以隐藏,减少被攻击风险;
  3. Cloudflare 可以拦截恶意请求、机器人请求和 DDoS 流量;
  4. HTTPS 证书可以由 Cloudflare 自动管理;
  5. 可以在边缘节点实现重定向、缓存、鉴权等功能。

二、生产环境部署前的准备工作

在正式接入 Cloudflare 之前,建议先完成以下准备。

1. 准备一个可用域名

你需要拥有一个域名,例如:

example.com

域名可以在任意注册商购买,例如阿里云、腾讯云、GoDaddy、Namecheap、Cloudflare Registrar 等。

2. 准备源站服务器

源站服务器可以是:

  • 云服务器 ECS / CVM / VPS
  • Kubernetes 集群入口
  • 负载均衡器
  • 对象存储静态网站
  • 自建 Nginx / Apache 服务
  • Vercel、Netlify 等平台提供的服务

假设你的源站公网 IP 为:

203.0.113.10

或者你的源站域名为:

origin.example.com

3. 确认源站服务正常

在接入 Cloudflare 前,需要确保源站本身可以正常访问。

你可以使用以下命令测试:

curl -I http://203.0.113.10

如果源站已经配置 HTTPS,也可以测试:

curl -I https://origin.example.com

正常情况下应返回类似:

HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html

4. 备份当前 DNS 记录

接入 Cloudflare 时,需要修改域名的 NS 服务器。如果之前你的域名已经配置过很多 DNS 记录,一定要提前备份,例如:

  • A 记录
  • CNAME 记录
  • MX 邮件记录
  • TXT 验证记录
  • SPF / DKIM / DMARC 邮件安全记录
  • 子域名记录

生产环境中,DNS 配置错误可能导致网站、邮件、API 服务不可用,因此备份非常重要。


三、注册并接入 Cloudflare

1. 创建 Cloudflare 账号

访问 Cloudflare 官网:

https://www.cloudflare.com/

注册账号并登录。

2. 添加站点

登录后点击:

Add a domain

输入你的域名,例如:

example.com

注意不要输入 www.example.com,而是输入根域名 example.com

3. 选择套餐

Cloudflare 提供多个套餐:

套餐 适合场景
Free 个人网站、小型博客、测试环境
Pro 小型商业网站,需要基础 WAF
Business 生产业务,需要更强 SLA、更多规则
Enterprise 大型企业、金融、电商、高并发场景

如果是零基础学习或中小型网站,Free 版本已经足够入门。如果是企业生产环境,建议至少考虑 Pro 或 Business。

4. 导入 DNS 记录

Cloudflare 会自动扫描你当前域名的 DNS 记录,但扫描结果不一定完整,因此需要人工检查。

常见配置示例:

类型 名称 内容 代理状态
A @ 203.0.113.10 已代理
A www 203.0.113.10 已代理
CNAME api origin-api.example.com 已代理
MX @ mail.example.com 仅 DNS
TXT @ v=spf1 include:xxx ~all 仅 DNS

这里要特别注意 代理状态

  • 橙色云朵:已代理
    流量经过 Cloudflare,支持 CDN、安全防护、隐藏源站 IP。

  • 灰色云朵:仅 DNS
    只使用 Cloudflare DNS,不经过代理,不提供 CDN 和 WAF。

通常网站、API 可以开启代理;邮件相关记录不要开启代理。


四、修改域名 NS 服务器

添加域名后,Cloudflare 会分配两个 NS 服务器,例如:

amy.ns.cloudflare.com
bob.ns.cloudflare.com

你需要登录域名注册商后台,将原来的 NS 修改为 Cloudflare 提供的 NS。

修改后,等待全球 DNS 生效。通常几分钟到数小时不等,最长可能需要 24-48 小时。

你可以使用命令检查:

dig NS example.com

如果返回 Cloudflare 的 NS,说明接入成功。


五、DNS 生产环境配置建议

DNS 是生产环境的基础,配置时应遵循稳定、清晰、最小暴露原则。

1. 根域名和 www 域名

常见配置:

example.com      A       203.0.113.10
www.example.com  CNAME   example.com

或者:

@    A       203.0.113.10
www  CNAME   @

推荐将 example.comwww.example.com 都开启 Cloudflare 代理。

2. API 子域名

如果你的后端 API 使用:

api.example.com

可以配置:

api  A  203.0.113.10

是否开启代理取决于业务场景:

  • 普通 HTTP API:建议开启代理;
  • WebSocket API:Cloudflare 支持 WebSocket,可以开启代理;
  • 特殊 TCP 服务:普通 Cloudflare 代理不支持,需要 Spectrum;
  • 内部 API:不建议公网暴露,可结合 Zero Trust。

3. 邮件记录不要代理

邮件相关记录如 MX、mail、smtp、imap、pop 等通常不要开启代理。

示例:

MX    @     mail.example.com
A     mail  203.0.113.20
TXT   @     v=spf1 include:example.com ~all

其中 mail.example.com 应保持灰色云朵,即仅 DNS。

4. 管理后台子域名

例如:

admin.example.com

生产环境不建议直接公开管理后台。可以采用以下方式:

  • 使用 Cloudflare Access 进行身份验证;
  • 配置 IP 白名单;
  • 单独使用不易猜测的域名;
  • 后台服务不直接暴露公网;
  • 增加 MFA 多因素认证。

六、HTTPS/TLS 配置

HTTPS 是生产环境必须配置的基础能力。

Cloudflare 的 SSL/TLS 模式常见有以下几种:

模式 说明 是否推荐
Off 不启用 HTTPS 不推荐
Flexible 浏览器到 Cloudflare 是 HTTPS,Cloudflare 到源站是 HTTP 不推荐生产
Full 两段都是 HTTPS,但不严格校验证书 可临时使用
Full Strict 两段都是 HTTPS,并校验证书 强烈推荐

1. 推荐使用 Full Strict

生产环境推荐:

SSL/TLS encryption mode: Full (strict)

这意味着:

用户浏览器 --HTTPS--> Cloudflare --HTTPS--> 源站

这样可以确保全链路加密。

2. 源站证书配置

你可以使用以下证书之一:

  • Let’s Encrypt 免费证书;
  • Cloudflare Origin Certificate;
  • 商业 CA 证书。

如果源站只通过 Cloudflare 访问,使用 Cloudflare Origin Certificate 是很方便的选择。

路径:

SSL/TLS → Origin Server → Create Certificate

生成证书后,将证书和私钥配置到 Nginx。

Nginx 示例:

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate /etc/nginx/ssl/cloudflare-origin.pem;
    ssl_certificate_key /etc/nginx/ssl/cloudflare-origin.key;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

然后重载 Nginx:

nginx -t
systemctl reload nginx

3. 开启 Always Use HTTPS

在 Cloudflare 中开启:

SSL/TLS → Edge Certificates → Always Use HTTPS

这样所有 HTTP 请求都会自动跳转到 HTTPS。

4. 开启 HSTS 需谨慎

HSTS 可以强制浏览器使用 HTTPS,但一旦配置错误,可能导致用户长时间无法访问网站。

生产环境建议在确认 HTTPS 完全正常后再开启,且先使用较短时间测试,例如:

max-age=86400

确认无问题后再逐步延长。


七、缓存配置策略

Cloudflare 的核心能力之一是缓存。合理缓存可以大幅降低源站压力,提高访问速度。

1. 默认缓存行为

默认情况下,Cloudflare 通常会缓存静态资源,例如:

  • .jpg
  • .png
  • .gif
  • .css
  • .js
  • .ico
  • .svg
  • .woff
  • .woff2

动态 HTML 页面默认一般不会强缓存,除非你手动配置规则。

2. 静态资源缓存建议

对于带版本号的静态资源,例如:

/static/app.9f3a2c.js
/static/style.84ab1.css

可以设置较长缓存时间:

Cache-Control: public, max-age=31536000, immutable

这类资源内容变更后文件名会变化,因此可以长期缓存。

3. HTML 页面缓存建议

对于普通动态网站,不建议盲目缓存 HTML。否则可能出现:

  • 用户看到旧页面;
  • 登录状态错乱;
  • 后台数据不更新;
  • 个性化内容被错误缓存。

如果是纯静态网站、博客、文档站,可以考虑缓存 HTML,但需要设计好清理机制。

4. API 缓存建议

API 通常不建议默认缓存,尤其是涉及用户数据、订单、支付、权限的接口。

可以缓存的 API 一般包括:

  • 公共配置接口;
  • 商品分类;
  • 新闻列表;
  • 公共字典数据;
  • 不含用户隐私的数据。

并且需要明确设置响应头:

Cache-Control: public, max-age=60

对于敏感接口,应设置:

Cache-Control: no-store

5. 缓存清理

当静态资源或页面更新后,可以在 Cloudflare 后台执行:

Caching → Configuration → Purge Cache

常见方式:

  • Purge Everything:清理全部缓存;
  • Custom Purge:按 URL 清理;
  • Cache Tags:按标签清理,适合复杂业务。

生产环境不建议频繁使用 Purge Everything,因为可能瞬间增加源站压力。


八、安全防护配置

生产环境使用 Cloudflare 的重要目的之一就是安全防护。

1. 开启基础 DDoS 防护

Cloudflare 默认提供 DDoS 防护,通常无需额外配置。

在遭遇攻击时,可以开启:

Under Attack Mode

开启后,Cloudflare 会对访问者进行浏览器挑战验证。但这可能影响正常用户体验,因此不建议长期打开。

2. 配置 WAF 防火墙

路径通常为:

Security → WAF

建议开启 Cloudflare Managed Rules,尤其是针对:

  • SQL 注入;
  • XSS;
  • 文件包含;
  • 常见 CMS 漏洞;
  • 恶意爬虫;
  • 可疑请求头。

如果使用 WordPress,可以开启 WordPress 相关规则。

3. 配置自定义规则

常见规则示例:

阻止特定国家访问

如果业务只服务中国大陆或特定地区,可以限制其他国家访问。但要谨慎,避免误伤海外用户。

限制后台访问

例如仅允许指定 IP 访问后台:

URI Path contains "/admin"
AND IP Source Address not in {你的办公 IP}
→ Block

阻止恶意 User-Agent

User-Agent contains "sqlmap"
→ Block

限制敏感路径访问

URI Path contains ".env"
→ Block

常见应阻止的路径包括:

/.env
/.git
/wp-config.php.bak
/backup.zip
/config.php

4. Rate Limiting 限速

对于登录、注册、短信验证码、搜索等接口,建议配置速率限制。

示例:

路径:/api/login
规则:同一 IP 1 分钟超过 10 次
动作:Managed Challenge 或 Block

这样可以有效缓解暴力破解和恶意刷接口。

5. Bot 防护

如果你发现大量异常爬虫请求,可以使用:

  • Bot Fight Mode;
  • Super Bot Fight Mode;
  • WAF 自定义规则;
  • Turnstile 验证。

对于登录、注册、评论、表单提交场景,Cloudflare Turnstile 是一个不错的人机验证方案。


九、隐藏和保护源站 IP

很多人接入 Cloudflare 后,以为源站就安全了。但如果源站 IP 泄露,攻击者仍然可以绕过 Cloudflare 直接攻击服务器。

因此,生产环境必须保护源站 IP。

1. 防火墙只允许 Cloudflare IP

在服务器安全组或防火墙中,仅允许 Cloudflare IP 段访问 80 和 443 端口。

思路如下:

允许 Cloudflare IP → 访问 80/443
拒绝其他所有 IP → 访问 80/443

Cloudflare 官方会公布 IP 段,需要定期同步。

Linux UFW 示例:

ufw allow from 173.245.48.0/20 to any port 443
ufw allow from 103.21.244.0/22 to any port 443
ufw deny 443

实际生产中建议使用自动脚本同步 Cloudflare IP 列表。

2. 不要暴露源站域名

避免将源站地址设置为容易被猜到的域名,例如:

origin.example.com
server.example.com
ip.example.com

如果必须使用源站域名,建议不要公开,且不要开启代理错误导致泄露。

3. 检查历史 DNS 记录

攻击者可能通过历史 DNS 数据查到你的源站 IP。因此,如果源站 IP 曾经暴露,建议更换源站 IP。

4. 源站增加鉴权

更严格的做法是在源站校验请求是否来自 Cloudflare,例如:

  • 校验 Cloudflare IP;
  • 校验自定义请求头;
  • 使用 Cloudflare Authenticated Origin Pulls;
  • 使用 mTLS。

其中 Authenticated Origin Pulls 可以确保请求确实来自 Cloudflare。


十、真实客户端 IP 配置

接入 Cloudflare 后,源站看到的访问 IP 默认可能是 Cloudflare 节点 IP,而不是用户真实 IP。

Cloudflare 会通过请求头传递真实 IP:

CF-Connecting-IP: 用户真实 IP
X-Forwarded-For: 用户真实 IP, Cloudflare IP

Nginx 配置真实 IP

需要配置 real_ip_header

set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;

real_ip_header CF-Connecting-IP;

生产环境应配置完整 Cloudflare IP 段。

配置后,你的日志中才能正确记录用户真实 IP,便于安全分析、限流、审计。


十一、页面规则与重定向

Cloudflare 可以在边缘节点处理重定向,减少源站负担。

1. www 与非 www 统一

如果你希望统一到非 www:

www.example.com/* → https://example.com/$1

如果你希望统一到 www:

example.com/* → https://www.example.com/$1

建议全站只保留一个主域,避免 SEO 权重分散。

2. HTTP 跳转 HTTPS

虽然可以在源站 Nginx 配置,但在 Cloudflare 开启 Always Use HTTPS 更简单。

3. 旧路径跳转新路径

例如网站改版:

/old-post/* → /new-post/$1

生产环境需要尽量使用 301 永久重定向,但上线前要确认路径正确,避免搜索引擎收录错误。


十二、Cloudflare Workers 简介

Cloudflare Workers 是运行在边缘节点的 JavaScript/TypeScript 代码,可以在请求到达源站之前处理逻辑。

常见用途:

  • 边缘重定向;
  • A/B 测试;
  • 请求鉴权;
  • 修改响应头;
  • 简单 API;
  • 防盗链;
  • 图片处理;
  • 灰度发布。

示例:添加安全响应头:

export default {
  async fetch(request, env, ctx) {
    const response = await fetch(request);
    const newResponse = new Response(response.body, response);

    newResponse.headers.set("X-Frame-Options", "DENY");
    newResponse.headers.set("X-Content-Type-Options", "nosniff");
    newResponse.headers.set("Referrer-Policy", "strict-origin-when-cross-origin");

    return newResponse;
  }
}

对于零基础用户,不建议一开始就在生产环境大量使用 Workers。可以先从简单重定向、响应头修改开始。


十三、生产环境监控与日志

上线后不能只看“能不能访问”,还要持续监控。

1. Cloudflare Analytics

Cloudflare 后台提供基础分析,包括:

  • 请求量;
  • 带宽;
  • 缓存命中率;
  • 威胁请求;
  • 状态码;
  • 国家地区分布;
  • 边缘节点情况。

重点关注:

5xx 错误
缓存命中率
WAF 拦截数量
源站响应时间
异常流量峰值

2. 源站日志

源站仍然需要保留日志,例如 Nginx access.log、error.log。

建议日志中记录:

  • 真实客户端 IP;
  • 请求路径;
  • User-Agent;
  • 状态码;
  • 响应时间;
  • Referer;
  • 请求 ID。

3. 告警系统

生产环境建议配置告警,例如:

  • 网站不可访问;
  • 5xx 错误增多;
  • 源站 CPU/内存过高;
  • 带宽异常;
  • 登录接口请求异常;
  • 证书即将过期。

可以使用 Prometheus、Grafana、Uptime Kuma、阿里云监控、腾讯云监控等工具。


十四、常见故障与排查方法

1. 521 Web Server Is Down

含义:Cloudflare 无法连接源站。

可能原因:

  • 源站服务器宕机;
  • Nginx 未启动;
  • 安全组拦截了 Cloudflare;
  • 防火墙配置错误;
  • 源站端口未开放。

排查:

systemctl status nginx
curl -I http://127.0.0.1
curl -I https://源站IP

2. 522 Connection Timed Out

含义:Cloudflare 连接源站超时。

可能原因:

  • 源站负载过高;
  • 网络不稳定;
  • 防火墙丢弃连接;
  • 源站响应太慢。

建议检查服务器性能和安全组规则。

3. 525 SSL Handshake Failed

含义:Cloudflare 与源站 SSL 握手失败。

可能原因:

  • 源站证书配置错误;
  • SSL 模式不匹配;
  • Nginx 不支持所需协议;
  • 证书过期。

建议使用 Full Strict 并确保证书有效。

4. 526 Invalid SSL Certificate

含义:源站证书无效,常见于 Full Strict 模式。

解决:

  • 安装有效证书;
  • 使用 Let’s Encrypt;
  • 使用 Cloudflare Origin Certificate;
  • 检查证书域名是否匹配。

5. 循环重定向

常见原因是 Cloudflare 使用 Flexible 模式,而源站又强制 HTTP 跳 HTTPS。

解决:

  • 不要使用 Flexible;
  • 改为 Full 或 Full Strict;
  • 检查 Nginx 重定向规则。

十五、上线前生产检查清单

正式上线前,建议逐项检查。

DNS 检查

  • [ ] 根域名解析正确;
  • [ ] www 解析正确;
  • [ ] API 域名解析正确;
  • [ ] 邮件 MX/TXT 记录未丢失;
  • [ ] 不该代理的记录保持灰色云朵;
  • [ ] TTL 设置合理。

HTTPS 检查

  • [ ] Cloudflare SSL 模式为 Full Strict;
  • [ ] 源站证书有效;
  • [ ] HTTP 自动跳转 HTTPS;
  • [ ] 无循环重定向;
  • [ ] HSTS 配置谨慎。

安全检查

  • [ ] WAF 已开启;
  • [ ] 后台路径有限制;
  • [ ] 登录接口有限速;
  • [ ] 敏感路径已阻止;
  • [ ] 源站防火墙只允许 Cloudflare IP;
  • [ ] 真实客户端 IP 配置正确。

缓存检查

  • [ ] 静态资源缓存策略合理;
  • [ ] HTML 是否缓存已明确;
  • [ ] API 不误缓存敏感数据;
  • [ ] 更新发布后有缓存清理方案;
  • [ ] 缓存命中率有监控。

监控检查

  • [ ] 网站可用性监控已配置;
  • [ ] 源站资源监控已配置;
  • [ ] 错误日志可查看;
  • [ ] 5xx 告警已配置;
  • [ ] 证书过期告警已配置。

十六、推荐的生产环境配置方案

对于大多数网站,推荐如下配置:

DNS:
- example.com 开启代理
- www.example.com 开启代理
- api.example.com 按需开启代理
- mail / smtp / imap 不开启代理

SSL/TLS:
- Full Strict
- Always Use HTTPS
- 源站使用有效证书

缓存:
- 静态资源长期缓存
- HTML 谨慎缓存
- 用户接口不缓存
- 配置按 URL 精确清理缓存

安全:
- 开启 WAF 托管规则
- 登录接口限速
- 后台路径访问控制
- 阻止敏感文件路径
- 源站只允许 Cloudflare IP

监控:
- Cloudflare Analytics
- 源站日志
- 可用性监控
- 5xx 错误告警

十七、新手常见误区

误区一:开启 Cloudflare 就一定安全

Cloudflare 能提升安全性,但不是万能的。如果源站 IP 泄露、后台弱密码、应用存在漏洞,仍然可能被攻击。

误区二:所有记录都开启代理

邮件、SSH、数据库等服务不能随意开启 Cloudflare HTTP 代理。普通 Cloudflare 代理主要适用于 HTTP/HTTPS 流量。

误区三:使用 Flexible SSL

Flexible 容易导致循环重定向,也无法保证 Cloudflare 到源站之间的加密安全。生产环境应使用 Full Strict。

误区四:缓存越多越好

缓存错误比不缓存更危险。尤其是用户页面、订单页面、支付接口,一旦被错误缓存,可能造成严重数据泄露。

误区五:忽略真实 IP

如果源站没有配置真实客户端 IP,日志里全是 Cloudflare 节点 IP,会影响审计、封禁、限流和问题定位。


十八、总结

Cloudflare 是一个非常强大的生产环境网络平台。对于零基础用户来说,最重要的是先掌握几个核心概念:DNS、代理状态、HTTPS 模式、缓存、安全规则、源站保护

如果你是第一次部署,建议按照以下顺序进行:

  1. 备份原 DNS;
  2. 添加域名到 Cloudflare;
  3. 导入并检查 DNS 记录;
  4. 修改 NS;
  5. 配置 Full Strict HTTPS;
  6. 开启 Always Use HTTPS;
  7. 设置合理缓存策略;
  8. 开启基础 WAF;
  9. 配置源站防火墙;
  10. 设置监控和告警;
  11. 小流量验证后正式上线。

生产环境部署的目标不是“能访问就行”,而是要做到:

  • 访问稳定;
  • HTTPS 安全;
  • 缓存可控;
  • 源站隐藏;
  • 日志准确;
  • 攻击可防;
  • 故障可排查;
  • 发布可回滚。

只要你按照本文的步骤逐项完成,即使是零基础,也可以搭建出一套相对规范、可靠、安全的 Cloudflare 生产环境部署方案。

目录结构
全文