背景

买了域名之后不知道怎么用,搜了一圈发现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记录:

如果要开CDN(隐藏源站IP),就用橙色云朵。如果不需要CDN(比如SSH、游戏服务器),就用灰色云朵。

SSL证书配置

Cloudflare免费提供SSL证书。在"SSL/TLS"页面设置加密模式:

推荐用 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功能

总结

Cloudflare免费套餐对个人站点来说完全够用了。DNS解析速度快,SSL证书自动管理,CDN还能加速访问。唯一的缺点是如果源站在国外,套CDN可能会增加延迟。但对于静态站点来说,Cloudflare的缓存可以大幅减少回源请求,反而更快。