CloudFlare 是一家知名的 CDN 网站加速服务公司,以向用户提供网站安全、性能优化及相关的技术支持为主要业务。使用 CDN 能够加速网站访问、节省流量、应对DDoS攻击、甚至能够在网站服务器宕机的情况下继续提供服务。CloudFlare 采用的是免费增值商业模式,基础服务免费,增值服务收费。

本文使用 CloudFlare 为静态网站套上 CDN 服务,并实现全站HTTPS加密访问。

注册账号

访问 https://cloudflare.com/

点击 Sign Up, 填写邮箱、密码,创建账户。

添加网站

输入网站域名、添加网站。选择 Free plan、确认提交。

验证邮件

进入注册使用的邮箱,在收到的 CloudFlare 验证邮件里点击 Verify,完成邮箱验证。

配置域名

CloudFlare 会扫描域名DNS解析记录并导入。

如果扫描域名解析记录失败,需要手动点击Add Record添加。

去域名服务商网站,进入域名管理,修改DNS服务器为CloudFlare提供的域名服务器。

检查域名DNS。点击继续,然后点击 Recheck Nameservers 检查域名DNS是否已修改成功(可能会有延迟),成功后会提示Status: Active。

选择加密方式

若网站已支持 HTTPS 选择 Full 或 Full (strict),否则选择 Flexible。

打开 Always uses https,设置全站HTTPS加密访问。

加密方式的区别如下:

Flexible:半程加密。网站访问者和Cloudflare之间有加密连接,但是 Cloudflare 到服务器没有加密。优点:网站不需要SSL证书也能实现SSL加密访问。

Full:全程加密。从网站到CDN服务器再到用户,全程都是SSL加密的。优点:只要服务器有SSL证书(可以是自签名证书)就可以实现SSL加密访问。

Full (strict):全程加密。与Full SSL的区别在于服务器必须安装受信任的SSL证书(即购买的SSL证书),否则无法开启SSL加密访问。

网站配置界面

CloudFlare 提供了16个网站配置界面。简单了解一下常用的几个。

Overview

注意 Quick Actions 中的两个按钮:

Under Attack Mode - 网站被攻击的时候打开它,可以阻止攻击。

Development Mode - 打开它就不会缓存,能够马上看到修改网站的效果。

上面两个设置如果不需要,请保持关闭状态。

Analytics

各种网站统计数据。Analytics 下面包含 Traffic, Security, Performance, DNS 和 Workers。

DNS

注意 Proxy status 状态,Cloudflare Logo 橙色表示开启代理,点击变成灰色,关闭代理。

SSL/TLS

SSL/TLS 加密模式: Off, Flexible, Full, Full (strict) 四选一。

Firewall

可以添加过滤器规则,限制某些IP或地区的用户访问等,提升网站安全。

包含 Overview, Managed Rules, Firewall Rules, Tools, Settings 五个子页面。

Speed

网站速度优化。包含 Overview, Optimization, Browser Insights 三个子页面。

Page Rules

可选的预设规则有21个,包括页面重定向等。Free plan 只可以设置三个规则。

源服务器设置

Cloudflare 代理网站后使用的是 Cloudflare 自己签发的证书。查看 Cloudflare 网站设置的 SSL/TLS 页面,如果是 Full 选项则要求源服务器也要安装证书。Caddy 的 DNS 验证支持 Cloudflare 签发的证书。

安装 Caddy 使用 tls.dns.cloudflare 插件:

1
curl https://getcaddy.com | bash -s personal tls.dns.cloudflare

设置 CLOUDFLARE_EMAIL 和 CLOUDFLARE_API_KEY 两个环境变量:

  • CLOUDFLARE_EMAIL - 注册 Cloudflare 帐号的邮箱
  • CLOUDFLARE_API_KEY - Global API Key(需登录后查看
1
2
3
echo "export CLOUDFLARE_EMAIL=username@email.com" >> .bashrc
echo "export CLOUDFLARE_API_KEY=xxx" >> .bashrc
source .bashrc

如果使用 systemd 来启动 Caddy 的话,需要修改服务脚本:

1
sudo vim /etc/systemd/system/caddy.service
1
2
3
[Service]
Environment=CLOUDFLARE_EMAIL=username@email.com
Environment=CLOUDFLARE_API_KEY=xxx

修改 Caddy 配置文件 Caddyfile:

1
sudo vim /etc/caddy/Caddyfile
1
2
3
4
5
6
7
8
https://markzhan.com {
  tls {
    dns cloudflare
  }
  gzip
  proxy / localhost:3000
  log /var/log/caddy/markzhan.com.log
}

重启 Caddy 服务:

1
2
sudo systemctl daemon-reload
sudo systemctl restart caddy

通配符证书

通常我们会配置 www 子域名,但实际上这不是必需的。对于小型网站来说,子目录比子域名更好。如果确实需要很多子域名,可以考虑使用通配符证书,因为给每个子域名获取证书时可能会遇到CA限速。

可在 Caddyfile 中使用 DNS 验证获取通配符证书:

1
2
3
4
5
6
*.markzhan.com {
  tls {
    dns cloudflare
  }
  redir https://markzhan.com{uri}
}

在 Caddyfile 中可以使用 tls wildcard 指令强制子域名使用通配符证书。

Caddy 配置 HTTPS 的更多信息请参考文档

结束语

虽然 CloudFlare 免费版在国内的加速效果并不理想,但可以购买付费服务来优化。或者可以试试比较小众的产品,比如 Netlify、ZEIT、Surge 等,悠着点用就好。