背景
买了域名之后不知道怎么用,搜了一圈发现Cloudflare的免费套餐就够用了。DNS解析、SSL证书、CDN加速全都有,而且不要钱。记录一下整个配置过程。
注册Cloudflare并添加域名
首先去 cloudflare.com 注册账号,然后点"添加站点",输入你的域名。选择免费套餐就行。
Cloudflare会扫描你现有的DNS记录,确认无误后进入下一步。关键的一步是:去你的域名注册商那里,把Nameserver改成Cloudflare提供的两个NS记录。
# Cloudflare会给你两个NS,类似:
ns1.cloudflare.com
ns2.cloudflare.com
改完之后等几分钟到几小时不等(取决于注册商),Cloudflare那边就会显示"Active"了。
配置DNS记录
在Cloudflare的DNS页面添加A记录:
- 类型:A
- 名称:@(表示根域名)或者你想要的子域名比如www
- 内容:你的服务器IP
- 代理状态:橙色云朵=开启CDN,灰色云朵=仅DNS
如果要开CDN(隐藏源站IP),就用橙色云朵。如果不需要CDN(比如SSH、游戏服务器),就用灰色云朵。
SSL证书配置
Cloudflare免费提供SSL证书。在"SSL/TLS"页面设置加密模式:
- Flexible:Cloudflare到源站不加密,不推荐
- Full:Cloudflare到源站也加密,但不验证证书,可以用自签名证书
- Full (Strict):最安全,源站必须有有效证书
推荐用 Full 模式。然后在源站(你的服务器)上也配置SSL。
Nginx配置
服务器上的Nginx配置:
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
root /var/www/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
# HTTP跳转HTTPS
server {
listen 80;
server_name your-domain.com;
return 301 https://$host$request_uri;
}
Let's Encrypt自动续期
用certbot申请Let's Encrypt证书:
# 安装certbot
sudo apt install certbot python3-certbot-nginx
# 申请证书(如果用了Cloudflare代理,需要先暂时关闭橙色云朵)
sudo certbot --nginx -d your-domain.com
# 测试自动续期
sudo certbot renew --dry-run
certbot会自动设置cron job来续期证书,不用手动管。
坑:如果Cloudflare开着橙色云朵(CDN模式),certbot的HTTP验证可能失败。解决办法是暂时关掉CDN(灰色云朵),申请完再开回来。或者用Cloudflare的Origin Certificate,有效期15年,不用续期。
其他有用的Cloudflare功能
- Page Rules:可以对特定URL设置缓存规则
- Firewall Rules:免费版有5条规则,可以限制特定国家/地区访问
- Analytics:查看访问量、带宽使用等
- Speed:自动优化JS/CSS/图片
总结
Cloudflare免费套餐对个人站点来说完全够用了。DNS解析速度快,SSL证书自动管理,CDN还能加速访问。唯一的缺点是如果源站在国外,套CDN可能会增加延迟。但对于静态站点来说,Cloudflare的缓存可以大幅减少回源请求,反而更快。