| layout | default |
|---|---|
| title | Cloudflare DNS配置指南 |
| nav_order | 4 |
| parent | 教程 |
本教程介绍如何使用Cloudflare配置DNS解析、CDN加速和安全防护。
Cloudflare是全球领先的CDN和网络安全服务商,提供:
- DNS解析:全球最快的DNS服务
- CDN加速:全球300+节点
- 安全防护:DDoS防护、WAF
- SSL证书:免费SSL/TLS加密
- 页面托管:Cloudflare Pages
| 功能 | Cloudflare | 传统方案 |
|---|---|---|
| DNS解析 | 免费,全球Anycast | 通常收费 |
| SSL证书 | 免费,自动续期 | 需购买或手动配置 |
| CDN | 免费,无限流量 | 按流量计费 |
| DDoS防护 | 免费基础防护 | 昂贵 |
| 隐藏源IP | 支持 | 需额外配置 |
- 访问 Cloudflare官网
- 点击"Sign Up"注册
- 验证邮箱
1. 登录后点击"Add a site"
2. 输入域名(不带www)
3. 选择计划(Free免费版即可)
| 计划 | 价格 | 功能 |
|---|---|---|
| Free | 免费 | 基础DNS、CDN、SSL |
| Pro | $20/月 | 高级安全、图片优化 |
| Business | $200/月 | 企业级功能 |
| Enterprise | 定制 | 定制方案 |
添加站点后,Cloudflare会分配两个名称服务器:
Nameserver 1: bob.ns.cloudflare.com
Nameserver 2: coco.ns.cloudflare.com
- 登录阿里云控制台
- 进入域名列表
- 点击域名 → 管理
- 选择"DNS修改"
- 修改为Cloudflare提供的名称服务器
- 等待生效(最长48小时,通常几小时内)
- 登录腾讯云控制台
- 进入域名注册 → 我的域名
- 点击管理 → 修改DNS服务器
- 填写Cloudflare名称服务器
- 登录Namecheap
- Domain List → Manage
- Nameservers → Custom DNS
- 填写Cloudflare名称服务器
# Windows
nslookup -type=ns your-domain.com
# Linux/Mac
dig ns your-domain.com
# 在线工具
https://dnschecker.org/指向IPv4地址:
类型: A
名称: @ (或留空)
内容: 192.168.1.1
代理状态: 已代理(橙色云朵)
TTL: 自动
指向IPv6地址:
类型: AAAA
名称: @
内容: 2001:db8::1
代理状态: 已代理
指向另一个域名:
类型: CNAME
名称: www
内容: your-domain.com
代理状态: 已代理
类型: MX
名称: @
内容: mail.your-domain.com
优先级: 10
代理状态: 仅DNS(灰色云朵)
类型 名称 内容 代理状态
A @ 192.168.1.1 已代理
CNAME www your-domain.com 已代理
类型 名称 内容 代理状态
A @ 192.168.1.1 已代理
CNAME www your-domain.com 已代理
A api 192.168.1.2 已代理
类型 名称 内容 代理状态
CNAME @ www.your-domain.com 已代理
A www 192.168.1.1 已代理
| 图标 | 状态 | 说明 |
|---|---|---|
| 🟠 橙色云朵 | 已代理 | 流量经过Cloudflare CDN |
| ⚪ 灰色云朵 | 仅DNS | 只做DNS解析,不经过CDN |
# 检查解析是否经过Cloudflare
dig your-domain.com
# 如果看到Cloudflare的IP,说明已生效
# 例如:104.21.50.100Cloudflare提供四种SSL模式:
| 模式 | 说明 | 适用场景 |
|---|---|---|
| 关闭 | 无加密 | 不推荐 |
| 灵活 | Cloudflare到用户HTTPS,到源站HTTP | 源站无SSL |
| 完全 | 全程HTTPS,不验证源站证书 | 自签名证书 |
| 完全(严格) | 全程HTTPS,验证源站证书 | 推荐方案 |
- 进入SSL/TLS → 概述
- 选择"完全(严格)"模式
- 开启"始终使用HTTPS"
- SSL/TLS → 源服务器
- 创建证书
- 设置有效期(15年)
- 下载证书和私钥
在Nginx中配置:
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/nginx/ssl/origin.pem;
ssl_certificate_key /etc/nginx/ssl/origin-key.pem;
# 其余配置...
}在源服务器上:
certbot certonly --nginx -d your-domain.com注意:使用Let's Encrypt时,需关闭代理获取证书:
1. 暂时将A记录设为"仅DNS"
2. 获取证书
3. 改回"已代理"
在Cloudflare中设置:
SSL/TLS → 边缘证书 → 始终使用HTTPS:开启
或在Page Rules中:
URL: your-domain.com/*
设置: Always Use HTTPS
进入"规则" → "页面规则":
URL: your-domain.com/static/*
设置:
- 缓存级别: 缓存所有内容
- 边缘缓存TTL: 1个月
- 浏览器缓存TTL: 4小时
URL: your-domain.com/api/*
设置:
- 缓存级别: 绕过
缓存 → 配置 → 清除所有内容
或使用API清除特定URL
安全性 → 设置
安全级别: 中(推荐)
挑战通过期: 30分钟
浏览器完整性检查: 开启
安全性 → WAF
创建防火墙规则:
- 字段: 国家
- 运算符: 等于
- 值: 选择要屏蔽的国家
- 操作: 阻止
规则:
- 字段: URI路径
- 运算符: 包含
- 值: /admin
- 且
- 字段: IP地址
- 运算符: 不等于
- 值: 你的IP
- 操作: 阻止
安全性 → WAF → 速率限制规则
创建规则:
- URL: /api/*
- 请求: 100次/分钟
- 操作: 阻止
- 持续时间: 10分钟
安全性 → Bots
机器人攻击模式: 启用
速度 → 优化
Auto Minify: HTML, CSS, JS 全部开启
Brotli: 开启
Early Hints: 开启
Rocket Loader: 可选开启
速度 → 优化
Polish: 开启(自动压缩图片)
WebP: 开启
Mirage: 开启(自适应图片加载)
# 源服务器Nginx配置
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}规则 → 页面规则
URL: old-domain.com/*
设置: 转发URL (301 - 永久重定向)
目标: https://new-domain.com/$1
DNS记录:
类型 名称 内容 代理状态
A blog 192.168.1.1 已代理
A api 192.168.1.2 已代理
CNAME shop shop.example.com 已代理
使用Cloudflare Workers实现:
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
url.hostname = 'backend-server.com'
return fetch(url, request)
}分析 → 流量
- 请求数统计
- 带宽使用
- 独立访客
- 威胁分析
分析 → 日志
- 实时日志(付费功能)
- 事件日志
通知 → 事件
配置告警:
- DDoS攻击
- WAF阻止
- SSL证书即将过期
- 站点离线
# 检查当前DNS
dig your-domain.com
# 刷新本地DNS缓存
# Windows
ipconfig /flushdns
# Mac
sudo dscacheutil -flushcache
# Linux
sudo systemd-resolve --flush-caches原因:SSL模式配置错误
解决:
1. 如果源站无SSL,选择"灵活"模式
2. 如果源站有SSL,选择"完全"或"完全(严格)"
3. 检查源站是否强制HTTPS
排查步骤:
1. 检查DNS解析:dig your-domain.com
2. 检查源站是否正常:直接访问源站IP
3. 检查防火墙规则
4. 查看Cloudflare分析日志
可能原因:
1. 缓存了动态内容 → 设置缓存绕过
2. 跨域问题 → 配置CORS头
3. 请求超时 → 调整超时设置
1. 使用Cloudflare代理(橙色云朵)
2. 源站只允许Cloudflare IP访问
3. 更换源站IP(如果已泄露)
DNS配置完成后,继续阅读 [完整实战案例]({{ site.baseurl }}/05-complete-workflow) 查看完整的实战案例。