最佳实践
本章总结 Cloudflare 在生产环境中的最佳实践,帮助你构建安全、高性能、可靠的网站和应用。
安全最佳实践
SSL/TLS 配置
推荐配置:
- SSL 模式:Full (Strict)
- 启用 Always Use HTTPS
- 启用 HSTS(至少 6 个月)
- 启用 TLS 1.3
- 最低 TLS 版本:TLS 1.2
配置步骤:
SSL/TLS → Overview → Full (Strict)
SSL/TLS → Edge Certificates → Always Use HTTPS: On
SSL/TLS → Edge Certificates → HSTS: Enable
SSL/TLS → Edge Certificates → TLS 1.3: On
SSL/TLS → Edge Certificates → Minimum TLS Version: TLS 1.2
WAF 配置
推荐配置:
- 启用 OWASP Core Ruleset
- 设置 Paranoia Level 2
- 配置速率限制规则
- 启用 Bot Fight Mode
关键规则:
# 保护登录接口
URI Path contains "/login" → Rate Limit: 10/min
# 保护 API
URI Path starts with "/api/" → Rate Limit: 100/min
# 阻止已知攻击 IP
IP in list [blocked_ips] → Block
访问控制
敏感路径保护:
# 管理后台
URI Path starts with "/admin" → Block (或 Challenge)
# 敏感 API
URI Path starts with "/api/admin" → Block (或 Challenge)
安全响应头
创建 _headers 文件:
/*
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: geolocation=(), microphone=(), camera=()
Content-Security-Policy: default-src 'self'
性能最佳实践
缓存策略
静态资源:
URL 匹配: /static/* 或 /assets/*
Cache Level: Cache Everything
Edge TTL: 1 month
Browser TTL: 1 year
动态内容:
URL 匹配: /api/*
Cache Level: Bypass
HTML 页面:
URL 匹配: /*
Cache Level: Standard
Edge TTL: 4 hours
Browser TTL: 1 hour
性能优化
启用功能:
Speed → Optimization:
- Auto Minify: HTML, CSS, JS 全部启用
- Brotli: On
- Early Hints: On
- Rocket Loader: On (测试后)
图片优化:
Speed → Optimization:
- Polish: Lossy
- WebP: On
- Mirage: On
HTTP/3
启用最新协议:
Network → HTTP/3 (with QUIC): On
DNS 最佳实践
记录配置
网站记录:
类型: A
名称: @
内容: 服务器 IP
代理: 开启(橙色云朵)
类型: A
名称: www
内容: 服务器 IP
代理: 开启
邮件记录:
类型: MX
名称: @
内容: mail.example.com
优先级: 10
代理: 关闭(灰色云朵)
类型: TXT
名称: @
内容: v=spf1 include:_spf.google.com ~all
代理: 关闭
DNSSEC
启用 DNSSEC 防止 DNS 劫持:
DNS → Settings → DNSSEC: Enable
Workers 最佳实践
代码优化
使用 Hono 框架:
import { Hono } from 'hono';
const app = new Hono();
app.get('/api/users/:id', async (c) => {
const id = c.req.param('id');
const user = await c.env.DB.prepare(
'SELECT * FROM users WHERE id = ?'
).bind(id).first();
return c.json(user);
});
export default app;
错误处理:
app.get('/api/users/:id', async (c) => {
try {
const id = c.req.param('id');
const user = await getUser(c.env, id);
if (!user) {
return c.json({ error: 'Not Found' }, 404);
}
return c.json(user);
} catch (error) {
console.error('Error:', error);
return c.json({ error: 'Internal Server Error' }, 500);
}
});
环境变量
敏感信息使用 Secrets:
wrangler secret put API_KEY
非敏感信息使用 vars:
[vars]
ENVIRONMENT = "production"
CORS 处理
const corsHeaders = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Authorization',
};
app.use('*', async (c, next) => {
if (c.req.method === 'OPTIONS') {
return new Response(null, { headers: corsHeaders });
}
await next();
c.res.headers.set('Access-Control-Allow-Origin', '*');
});
Pages 最佳实践
构建配置
环境变量:
NODE_VERSION=20
BUILD_COMMAND=npm run build
OUTPUT_DIR=dist
SPA 路由:
创建 _redirects 文件:
/* /index.html 200
Functions
API 结构:
functions/
├── api/
│ ├── users.ts
│ └── posts.ts
└── _middleware.ts
中间件:
export async function onRequest(context) {
const { request, next } = context;
// 添加 CORS 头
const response = await next();
response.headers.set('Access-Control-Allow-Origin', '*');
return response;
}
监控与告警
设置告警
关键告警:
Notifications → Add:
- DDoS Attack Alert
- HTTP Error Rate Alert
- Origin Unreachable Alert
日志分析
启用 Logpush(付费):
Analytics → Logs → Logpush
推送到:
- S3
- Google Cloud Storage
- Datadog
- Splunk
成本优化
免费计划优化
合理使用免费额度:
| 服务 | 免费额度 | 优化建议 |
|---|---|---|
| Workers | 10 万请求/天 | 使用缓存减少请求 |
| Pages | 500 构建/月 | 合并部署 |
| R2 | 10GB 存储 | 定期清理 |
| D1 | 5GB 存储 | 归档旧数据 |
| KV | 1GB 存储 | 设置过期时间 |
缓存优化
减少 Workers 请求:
export default {
async fetch(request, env, ctx) {
const cache = caches.default;
const cached = await cache.match(request);
if (cached) {
return cached;
}
const response = await fetchAndProcess(request);
ctx.waitUntil(cache.put(request, response.clone()));
return response;
},
};
故障排查
常见问题
502 Bad Gateway:
- 检查源服务器是否运行
- 检查 SSL 模式是否正确
- 检查防火墙是否阻止 Cloudflare IP
504 Gateway Timeout:
- 检查源服务器响应时间
- 优化数据库查询
- 考虑使用 Workers 处理
SSL 证书错误:
- 检查 SSL 模式设置
- 确认源服务器证书有效
- 检查证书链是否完整
调试工具
检查 DNS:
dig example.com
nslookup example.com
检查 SSL:
curl -vI https://example.com
openssl s_client -connect example.com:443
检查响应头:
curl -I https://example.com
迁移清单
新站点上线清单
- DNS 记录配置正确
- SSL 模式设置为 Full (Strict)
- 启用 Always Use HTTPS
- 配置 WAF 规则
- 设置速率限制
- 配置缓存规则
- 启用性能优化
- 设置告警通知
- 测试所有功能
从其他平台迁移
- 导出 DNS 记录
- 配置 SSL 证书
- 设置页面规则
- 配置重定向
- 测试网站功能
- 更新 NS 记录
- 监控迁移状态
参考链接
下一步
完成最佳实践学习后,可以查看 速查表,获取常用命令和配置速查。