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

Cloudflare 接入避坑指南:DNS、HTTPS、缓存与源站配置一次讲清

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

Cloudflare 常见问题汇总|附配置文件

Cloudflare 是目前使用最广泛的全球网络服务平台之一,常见用途包括:DNS 解析、CDN 加速、DDoS 防护、HTTPS 证书管理、WAF 防火墙、页面规则、Zero Trust、Workers 边缘计算等。对于个人站长、中小企业、开发者和运维团队来说,Cloudflare 可以在较低成本下显著提升网站的访问速度、安全性与可用性。

不过,Cloudflare 的功能较多,新手在接入和配置过程中经常会遇到各种问题,例如:域名解析不生效、HTTPS 访问异常、网站出现 522/525 错误、真实 IP 获取不到、缓存不更新、国内访问速度不稳定等。本文将系统整理 Cloudflare 的常见问题,并附上常用配置文件示例,方便快速排查和部署。


一、Cloudflare 是什么?

Cloudflare 本质上是一个位于用户和源站服务器之间的反向代理网络平台。

当你把域名接入 Cloudflare 后,用户访问你的网站时,请求通常会先到达 Cloudflare 的边缘节点,然后由 Cloudflare 根据缓存、规则、安全策略等设置决定是否回源访问你的服务器。

简单来说,访问链路大致如下:

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

Cloudflare 可以帮助你完成以下事情:

  • DNS 托管与解析;
  • CDN 静态资源加速;
  • 免费 HTTPS 证书;
  • DDoS 攻击防护;
  • Web 应用防火墙;
  • 防爬虫、防恶意请求;
  • 页面缓存与访问规则;
  • 隐藏源站真实 IP;
  • Workers 边缘脚本处理;
  • Zero Trust 安全访问控制。

二、Cloudflare 接入流程

一般情况下,接入 Cloudflare 的流程如下:

  1. 注册 Cloudflare 账号;
  2. 添加你的域名;
  3. Cloudflare 扫描现有 DNS 记录;
  4. 检查并补充 DNS 解析记录;
  5. 将域名注册商处的 NS 服务器修改为 Cloudflare 提供的 NS;
  6. 等待 DNS 生效;
  7. 配置 SSL/TLS 模式;
  8. 配置缓存、安全、防火墙等规则;
  9. 测试网站访问是否正常。

需要注意的是,Cloudflare 接管的是域名的权威 DNS。也就是说,你需要在域名注册商后台修改 NS 服务器,而不是仅仅添加一条 A 记录或 CNAME 记录。


三、DNS 解析相关问题

1. 为什么修改 DNS 后没有立即生效?

DNS 生效需要时间。通常 NS 服务器切换后会在几分钟到数小时内生效,但在部分地区、部分运营商网络环境下,缓存可能会持续更久。

常见原因包括:

  • 本地 DNS 缓存未刷新;
  • 运营商 DNS 缓存未更新;
  • 域名注册商 NS 修改尚未完成;
  • Cloudflare DNS 记录配置错误;
  • 浏览器缓存导致访问旧地址。

可以使用以下命令检查:

nslookup example.com

或:

dig example.com
dig NS example.com

如果你想检查指定 DNS 服务器的解析结果:

dig @1.1.1.1 example.com
dig @8.8.8.8 example.com

2. Cloudflare DNS 中橙色云朵和灰色云朵有什么区别?

Cloudflare DNS 记录旁边通常有两种状态:

状态 含义
橙色云朵 开启 Cloudflare 代理,流量经过 Cloudflare
灰色云朵 仅 DNS 解析,流量不经过 Cloudflare

如果开启橙色云朵,用户看到的是 Cloudflare 节点 IP,而不是你的源站 IP。此时 Cloudflare 可以提供 CDN、WAF、HTTPS、防护等功能。

如果是灰色云朵,Cloudflare 只负责 DNS 解析,不提供反向代理保护和缓存服务。

常见建议:

  • 网站主域名、www 子域名:通常开启橙色云朵;
  • 邮件相关记录:必须保持灰色云朵;
  • SSH、FTP、数据库连接:通常保持灰色云朵,或使用 Cloudflare Tunnel;
  • API 服务:根据业务情况决定是否代理。

3. MX、TXT、SPF、DKIM、DMARC 记录能否开启代理?

不能。

邮件相关 DNS 记录不应该开启 Cloudflare 代理,尤其是 MX 记录不能走橙色云朵。Cloudflare 代理主要支持 HTTP/HTTPS 流量,邮件协议如 SMTP、POP3、IMAP 并不适合通过普通 Cloudflare CDN 代理。

邮件相关记录应保持 DNS Only。

例如:

MX    example.com    mail.example.com
A     mail           192.0.2.10      DNS Only
TXT   example.com    v=spf1 include:_spf.example.com ~all
TXT   default._domainkey.example.com  DKIM_PUBLIC_KEY
TXT   _dmarc.example.com  v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com

四、SSL/TLS 常见问题

1. Cloudflare SSL/TLS 模式应该怎么选?

Cloudflare 常见 SSL/TLS 模式包括:

模式 浏览器到 Cloudflare Cloudflare 到源站 是否推荐
Off HTTP HTTP 不推荐
Flexible HTTPS HTTP 不推荐
Full HTTPS HTTPS 一般可用
Full Strict HTTPS HTTPS 且校验证书 推荐

最推荐的模式是:

Full (strict)

也就是“完全(严格)”模式。

原因是它可以保证浏览器到 Cloudflare、Cloudflare 到源站之间全链路 HTTPS 加密,并且会校验源站证书是否有效。


2. 为什么 Flexible 模式容易出问题?

Flexible 模式下,用户到 Cloudflare 是 HTTPS,但 Cloudflare 到源站是 HTTP。这样容易导致以下问题:

  • WordPress 后台无限重定向;
  • 网站强制 HTTPS 后循环跳转;
  • 登录状态异常;
  • Cookie Secure 属性异常;
  • 后端应用判断协议错误;
  • SEO 与安全性不佳。

如果你的源站支持 HTTPS,应尽量避免使用 Flexible,改为 Full 或 Full Strict。


3. 525 SSL handshake failed 是什么原因?

525 错误表示 Cloudflare 与源站建立 SSL 握手失败。

常见原因:

  • 源站没有开启 443 端口;
  • 源站证书过期;
  • 源站证书域名不匹配;
  • 源站仅支持过旧 TLS 版本;
  • Nginx/Apache SSL 配置错误;
  • 防火墙阻止了 Cloudflare 回源 IP;
  • SNI 配置异常。

排查方法:

curl -Iv https://example.com --resolve example.com:443:源站IP

如果直连源站 HTTPS 都失败,则说明问题在源站配置,而不是 Cloudflare。


4. 526 Invalid SSL certificate 是什么原因?

526 表示 Cloudflare 在 Full Strict 模式下无法验证源站证书。

常见原因包括:

  • 使用了自签名证书;
  • 证书已过期;
  • 证书域名不匹配;
  • 中间证书链不完整;
  • 源站证书不是受信任 CA 签发;
  • Cloudflare Origin Certificate 配置错误。

解决方案:

  • 使用 Let’s Encrypt 证书;
  • 使用 Cloudflare Origin Certificate;
  • 确保证书包含当前访问域名;
  • 补全 fullchain 证书链;
  • 检查 Nginx 或 Apache 配置。

五、Cloudflare 常见错误码

1. 521 Web Server Is Down

521 表示 Cloudflare 无法连接到你的源站服务器。

可能原因:

  • 源站服务器宕机;
  • Nginx/Apache 未启动;
  • 80 或 443 端口未开放;
  • 安全组、防火墙拦截 Cloudflare IP;
  • 源站拒绝 Cloudflare 请求;
  • 服务器负载过高。

排查命令:

systemctl status nginx
systemctl status apache2
ss -lntp
curl -I http://127.0.0.1

2. 522 Connection Timed Out

522 表示 Cloudflare 连接源站超时。

常见原因:

  • 源站响应慢;
  • 防火墙拦截;
  • 网络质量差;
  • 源站服务器负载过高;
  • 后端程序阻塞;
  • 数据库查询过慢;
  • 回源链路不稳定。

建议检查:

top
htop
iostat
free -m
journalctl -xe

如果是应用性能问题,还需要检查数据库慢查询、PHP-FPM、Node.js、Java 服务状态等。


3. 523 Origin Is Unreachable

523 表示 Cloudflare 无法到达源站 IP。

常见原因:

  • DNS A 记录写错;
  • 源站 IP 已变更;
  • 服务器网络故障;
  • 云服务器安全组限制;
  • 路由不可达。

可以使用:

ping 源站IP
traceroute 源站IP
curl -I http://源站IP

4. 524 A Timeout Occurred

524 表示 Cloudflare 已连接源站,但源站长时间没有返回响应。

常见场景:

  • 后台导入导出任务;
  • 大文件上传处理;
  • API 请求耗时过长;
  • 数据库查询非常慢;
  • 程序死循环;
  • 队列任务同步执行。

解决建议:

  • 将耗时任务改为异步队列;
  • 优化数据库查询;
  • 增加缓存;
  • 避免请求中执行长时间任务;
  • 使用后台任务处理导出;
  • 对接口做分页和限流。

六、缓存相关问题

1. 为什么修改网页后 Cloudflare 仍显示旧内容?

Cloudflare 会缓存静态资源,例如:

  • CSS;
  • JavaScript;
  • 图片;
  • 字体;
  • HTML 页面,取决于规则配置。

解决方法:

  1. 在 Cloudflare 后台清理缓存;
  2. Purge Everything;
  3. 只清理指定 URL;
  4. 修改静态资源版本号;
  5. 配置合理的 Cache-Control;
  6. 对后台、接口、动态页面绕过缓存。

例如给静态资源加版本号:



2. Cache Everything 是否可以直接开启?

不建议对整个网站无脑开启 Cache Everything。

如果你的网站是纯静态站点,可以开启。但如果是 WordPress、电商网站、会员系统、后台系统、API 服务,直接缓存所有内容可能导致严重问题,例如:

  • 用户 A 看到用户 B 的页面;
  • 登录状态异常;
  • 购物车内容错乱;
  • 后台页面被缓存;
  • API 返回旧数据;
  • 表单提交异常。

建议只对静态页面开启缓存,并排除:

/wp-admin/*
/wp-login.php
/api/*
/user/*
/cart/*
/checkout/*

3. 推荐的缓存策略

对于常规网站,可以采用如下策略:

  • HTML:短缓存或不缓存;
  • CSS/JS:长缓存;
  • 图片:长缓存;
  • API:通常不缓存;
  • 后台页面:不缓存;
  • 带登录态页面:不缓存。

源站可以设置:

location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|webp|woff|woff2)$ {
    expires 30d;
    add_header Cache-Control "public, max-age=2592000";
}

七、真实 IP 获取问题

开启 Cloudflare 代理后,源站服务器看到的访问 IP 默认会变成 Cloudflare 节点 IP,而不是用户真实 IP。

Cloudflare 会通过请求头传递真实 IP,常见字段包括:

CF-Connecting-IP
X-Forwarded-For
X-Real-IP

其中最推荐使用:

CF-Connecting-IP

八、Nginx 获取 Cloudflare 真实 IP 配置

下面是 Nginx 配置示例:

# /etc/nginx/conf.d/cloudflare-real-ip.conf

real_ip_header CF-Connecting-IP;

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;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;

set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2a06:98c0::/29;
set_real_ip_from 2c0f:f248::/32;

配置完成后测试:

nginx -t
systemctl reload nginx

在日志中可以验证真实 IP 是否恢复。


九、Nginx 站点 HTTPS 配置示例

以下是一个较通用的 Nginx HTTPS 配置:

server {
    listen 80;
    server_name example.com www.example.com;

    return 301 https://$host$request_uri;
}

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

    root /var/www/example.com;
    index index.html index.htm index.php;

    ssl_certificate /etc/ssl/example.com/fullchain.pem;
    ssl_certificate_key /etc/ssl/example.com/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers off;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|webp|woff|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, max-age=2592000";
    }

    location ~ /\. {
        deny all;
    }
}

如果是 PHP 项目,可增加:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}

十、Apache 获取真实 IP 配置

如果你使用 Apache,可以安装并启用 mod_remoteip

a2enmod remoteip
systemctl restart apache2

配置文件示例:

# /etc/apache2/conf-available/cloudflare-remoteip.conf

RemoteIPHeader CF-Connecting-IP

RemoteIPTrustedProxy 173.245.48.0/20
RemoteIPTrustedProxy 103.21.244.0/22
RemoteIPTrustedProxy 103.22.200.0/22
RemoteIPTrustedProxy 103.31.4.0/22
RemoteIPTrustedProxy 141.101.64.0/18
RemoteIPTrustedProxy 108.162.192.0/18
RemoteIPTrustedProxy 190.93.240.0/20
RemoteIPTrustedProxy 188.114.96.0/20
RemoteIPTrustedProxy 197.234.240.0/22
RemoteIPTrustedProxy 198.41.128.0/17
RemoteIPTrustedProxy 162.158.0.0/15
RemoteIPTrustedProxy 104.16.0.0/13
RemoteIPTrustedProxy 104.24.0.0/14
RemoteIPTrustedProxy 172.64.0.0/13
RemoteIPTrustedProxy 131.0.72.0/22

启用配置:

a2enconf cloudflare-remoteip
systemctl reload apache2

十一、Cloudflare 防火墙与安全设置

1. 安全等级应该怎么设置?

Cloudflare 安全等级包括:

  • Essentially Off;
  • Low;
  • Medium;
  • High;
  • Under Attack。

一般网站建议使用:

Medium

如果遭受攻击,可以临时开启:

Under Attack

但不建议长期使用 Under Attack,因为它会增加访问验证步骤,影响用户体验。


2. 如何限制后台访问?

如果你的后台路径固定,例如 WordPress 后台,可以在 Cloudflare WAF 中添加规则:

URI Path starts with /wp-admin
AND Country not equals CN
Then Block

或者只允许指定 IP:

URI Path starts with /admin
AND IP Source Address not in 你的办公IP
Then Block

这样可以有效减少后台暴力破解和扫描攻击。


3. 如何防止恶意爬虫?

可采用以下方式:

  • 开启 Bot Fight Mode;
  • 对异常 User-Agent 设置拦截;
  • 对高频访问 IP 限速;
  • 对敏感接口添加 Turnstile;
  • 使用 WAF 自定义规则;
  • 对 API 增加鉴权;
  • 禁止空 UA 或明显恶意 UA。

示例规则:

User Agent contains python-requests
OR User Agent contains curl
OR User Agent contains wget
Then Managed Challenge

需要注意,不能完全依赖 User-Agent,因为它很容易伪造。


十二、Cloudflare 页面规则与规则集建议

虽然 Cloudflare 旧版 Page Rules 仍然常见,但现在更推荐使用 Rules,包括:

  • Cache Rules;
  • Redirect Rules;
  • Origin Rules;
  • Transform Rules;
  • WAF Custom Rules。

常见规则示例:

1. 后台不缓存

If URI Path starts with /wp-admin
Then Cache eligibility: Bypass cache

2. API 不缓存

If URI Path starts with /api
Then Cache eligibility: Bypass cache

3. 静态资源长缓存

If File extension is css/js/png/jpg/jpeg/webp/svg/woff2
Then Edge TTL: 1 month

4. HTTP 跳转 HTTPS

If scheme is http
Then Redirect to https://hostname/path

十三、WordPress 使用 Cloudflare 的注意事项

WordPress 站点接入 Cloudflare 后,最常见的问题是 HTTPS 重定向循环和后台缓存异常。

建议配置:

  1. SSL/TLS 使用 Full Strict;
  2. 源站安装有效 HTTPS 证书;
  3. 后台路径不缓存;
  4. 登录页面不缓存;
  5. WooCommerce 页面不缓存;
  6. 评论、搜索、预览页面谨慎缓存;
  7. 使用真实 IP 配置;
  8. 开启 Brotli 压缩;
  9. 静态资源设置长缓存;
  10. 不要对登录用户缓存 HTML。

WordPress 可在 wp-config.php 中加入:

if (isset($_SERVER['HTTP_CF_VISITOR'])) {
    $cf_visitor = json_decode($_SERVER['HTTP_CF_VISITOR']);
    if (isset($cf_visitor->scheme) && $cf_visitor->scheme === 'https') {
        $_SERVER['HTTPS'] = 'on';
    }
}

if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
    $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}

十四、Cloudflare Tunnel 配置示例

Cloudflare Tunnel 可以让你不暴露源站公网 IP,也不需要在服务器上开放 80/443 端口,适合内网服务、安全后台、开发测试环境。

安装 cloudflared 后,可以创建配置文件:

# /etc/cloudflared/config.yml

tunnel: your-tunnel-id
credentials-file: /etc/cloudflared/your-tunnel-id.json

ingress:
  - hostname: app.example.com
    service: http://127.0.0.1:3000

  - hostname: admin.example.com
    service: http://127.0.0.1:8080

  - service: http_status:404

启动服务:

cloudflared tunnel run your-tunnel-name

设置为系统服务:

cloudflared service install
systemctl enable cloudflared
systemctl start cloudflared

Tunnel 的优点:

  • 不暴露源站 IP;
  • 减少被扫描风险;
  • 适合内网穿透;
  • 可结合 Zero Trust 做身份验证;
  • 不需要开放入站端口。

十五、Cloudflare Workers 简单配置示例

Cloudflare Workers 可以在边缘节点运行 JavaScript 代码,用于重定向、修改请求、鉴权、接口代理等。

示例:强制跳转到 www 域名:

export default {
  async fetch(request) {
    const url = new URL(request.url)

    if (url.hostname === 'example.com') {
      url.hostname = 'www.example.com'
      return Response.redirect(url.toString(), 301)
    }

    return fetch(request)
  }
}

示例:添加安全响应头:

export default {
  async fetch(request) {
    const response = await fetch(request)
    const newHeaders = new Headers(response.headers)

    newHeaders.set('X-Frame-Options', 'SAMEORIGIN')
    newHeaders.set('X-Content-Type-Options', 'nosniff')
    newHeaders.set('Referrer-Policy', 'strict-origin-when-cross-origin')
    newHeaders.set('Content-Security-Policy', "default-src 'self'")

    return new Response(response.body, {
      status: response.status,
      statusText: response.statusText,
      headers: newHeaders
    })
  }
}

十六、国内访问 Cloudflare 慢怎么办?

很多用户会关心国内访问 Cloudflare 的速度。需要明确的是,Cloudflare 免费版在中国大陆通常没有专门的大陆节点,访问质量受运营商、地区、国际出口、线路拥塞等因素影响。

可考虑以下方案:

  • 静态资源使用国内 CDN;
  • 主站根据地区分流;
  • 使用 Cloudflare 仅做海外访问加速;
  • 使用 DNS 智能解析;
  • 购买适合国内访问的 CDN;
  • 图片、JS、CSS 分离到更稳定的资源域名;
  • 减少页面资源数量;
  • 开启 Brotli 和 HTTP/2、HTTP/3;
  • 优化首屏加载。

如果用户主要来自中国大陆,Cloudflare 免费版不一定是最佳加速方案。它更适合全球访问、海外用户、防护和安全场景。


十七、常用安全响应头配置

可以在 Nginx 中添加如下安全响应头:

add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;

如果确定全站 HTTPS 稳定,可以添加 HSTS:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

注意:HSTS 一旦启用,浏览器会强制使用 HTTPS。如果源站 HTTPS 配置不稳定,不建议贸然开启较长时间的 HSTS。


十八、常见排查命令汇总

DNS 检查

dig example.com
dig NS example.com
dig A example.com
dig AAAA example.com

HTTP 检查

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

指定源站 IP 检查

curl -Iv https://example.com --resolve example.com:443:源站IP

检查端口

ss -lntp

查看 Nginx 状态

systemctl status nginx
nginx -t

查看日志

tail -f /var/log/nginx/access.log
tail -f /var/log/nginx/error.log

十九、推荐配置清单

如果你希望快速获得一个较稳定的 Cloudflare 配置,可以参考以下清单:

  • DNS:网站记录开启橙色云朵;
  • 邮件记录:保持 DNS Only;
  • SSL/TLS:选择 Full Strict;
  • 源站:安装有效证书;
  • Always Use HTTPS:开启;
  • Automatic HTTPS Rewrites:开启;
  • Brotli:开启;
  • HTTP/2:开启;
  • HTTP/3:视情况开启;
  • 后台路径:绕过缓存;
  • API 路径:绕过缓存;
  • 静态资源:设置长缓存;
  • 真实 IP:源站配置 CF-Connecting-IP;
  • WAF:开启基础安全规则;
  • 登录后台:限制地区或 IP;
  • 遭受攻击时:临时开启 Under Attack;
  • 定期检查 Cloudflare IP 段更新;
  • 定期查看访问日志与安全事件。

二十、总结

Cloudflare 是一个非常强大的网络服务平台,既可以作为 DNS 服务商,也可以作为 CDN、安全网关和边缘计算平台。对于大多数网站来说,正确接入 Cloudflare 后,可以获得更好的安全性、更简单的 HTTPS 管理、更强的抗攻击能力以及一定程度的访问加速。

但 Cloudflare 并不是“开启就万事大吉”。很多问题并非来自 Cloudflare 本身,而是由于 DNS、SSL、源站防火墙、缓存策略、真实 IP 配置、应用程序逻辑等环节没有正确设置。尤其是 SSL/TLS 模式、缓存规则、后台路径排除、源站证书、Cloudflare 回源 IP 放行,是最容易出错的几个重点。

如果你是新手,建议优先采用以下原则:

  1. SSL 使用 Full Strict;
  2. 源站安装有效证书;
  3. 不要无脑缓存动态页面;
  4. 后台和 API 必须绕过缓存;
  5. 配置真实 IP;
  6. 邮件记录不要开启代理;
  7. 出现错误码时先区分是源站问题还是 Cloudflare 问题;
  8. 国内用户为主的网站,应谨慎评估 Cloudflare 免费版的访问质量。

只要按照本文的排查思路和配置示例逐项检查,大多数 Cloudflare 常见问题都可以快速定位并解决。

目录结构
全文