免费 SSL 与 CDN 配置指南

2026 年 09 月 28 日 · 约 5 分钟读完

HTTPS 现在是标配:浏览器给没证书的网站标「不安全」,搜索引擎降权,用户不敢付款。好消息是证书和 CDN 都不用花钱:Let's Encrypt 免费证书加 Caddy 自动续期,Cloudflare 免费版做 CDN。这篇把从域名解析到看到小锁、再到缓存配置的完整步骤走一遍,每一步都有验证方法,做完一步再走下一步。

第一步:域名解析到服务器

去域名注册商,加一条 A 记录:主机名填 @(或者 www),值填你的服务器 IP。等几分钟,ping 一下域名,返回的是你的 IP 就生效了。这一步是地基,后面所有步骤都建立在「域名能找到服务器」上。地基没打好,后面全是白搭,所以先验证,再往下走。

第二步:用 Caddy,两行配置自动 HTTPS

Caddy 是个反向代理,和 Nginx 干一样的活,但 HTTPS 是全自动的:你告诉它域名和网站端口,它自己去 Let's Encrypt 申请证书、到期自动续,你什么都不用管。certbot 加 Nginx 也行,但要多配几步,新手直接用 Caddy 省心。配置文件长这样:

你的域名 {
	reverse_proxy localhost:3000
}

把「你的域名」换成自己的域名,3000 换成你的网站实际端口。启动 Caddy,浏览器打开你的域名,看到小锁,这步就成了。如果没出小锁,看 Caddy 的日志,它会告诉你哪一步失败了——最常见的是 80 端口没放行,证书机构连不进来验证。去安全组放行 80 和 443,重启 Caddy 再试。

第三步:自动续期,别让它过期

Let's Encrypt 的证书 90 天有效。Caddy 会自动续,你不用管;用 certbot 的话,装完它会自动加一条定时任务,每天检查一次。装完跑一次模拟续期,成功了心里踏实。证书过期是最丢人的故障:网站好好的,浏览器突然说「不安全」,用户全跑了。把「每季度看一眼证书有没有续上」写进你的运维清单。

第四步:Cloudflare 做 CDN

去 Cloudflare 添加网站,按提示把域名的 NS 改成它家的。DNS 生效后,把那条 A 记录的代理打开(橙色云图标)。从这一刻起,用户访问的是 Cloudflare 的节点,由它回源到你的服务器:静态文件被缓存、带宽压力小了、还顺手防了一波小攻击。全免费,十分钟配好。验证:打开网站,响应头里有 cf-cache-status,就说明走了 CDN。

HTTPS 模式选 Full(完整),别选 Flexible。Flexible 是「用户到 Cloudflare 加密、Cloudflare 到你服务器不加密」,看着有小锁,实际后半段是裸奔,还容易造成重定向循环。选 Full,你的服务器上有 Caddy 的证书,全程加密,这才是真 HTTPS。这个选项在 Cloudflare 的 SSL 设置里,一分钟就能改,别选错。

www 和不带 www:统一成一个

example.com 和 www.example.com,选一个为主,另一个 301 跳转过去。别两个都能访问:一是分散权重,搜索引擎不知道哪个是正主;二是用户书签、分享链接各存各的,数据对不上。在 Caddy 里加一行跳转规则就行,五分钟的事,拖着不做后患无穷。

别缓存动态内容

CDN 缓存是把双刃剑:缓存了登录后的页面,张三会看到李四的信息。规则很简单:图片、CSS、JS 使劲缓存;带登录态的页面、API 接口、后台管理,一律不缓存。Cloudflare 里用缓存规则把 /api/* 和后台路径排除掉。拿不准的,默认不缓存——慢一点比串数据强一万倍。串一次数据,丢的可不只是速度,是用户信任。

HSTS:告诉浏览器只走 HTTPS

全站 HTTPS 跑顺了之后,可以开 HSTS:告诉浏览器「这个站以后只走 HTTPS,别试 http 了」。用户第一次输 http 也会自动跳 https,中间人劫持的口子堵上了。Caddy 里加一行响应头就行。但注意:开之前确保全站 https 没问题,开了之后想回 http 可没那么容易,浏览器会记住很久。

出问题了查这里

  • 证书过期:先看续期任务在不在,再看 80 端口放行了没有
  • 小锁没出现:点开地址栏看是「证书无效」还是「混合内容」,两种病因完全不同
  • 混合内容:页面里混了 http 开头的图片或脚本,全改成 https,浏览器开发者工具的控制台会一条条告诉你
  • 重定向循环:八成是 Cloudflare 选了 Flexible,改成 Full
  • 刚改完没生效:DNS 和 CDN 都有缓存,等几分钟,换个浏览器或无痕窗口看
记住这个链条:域名解析 → Caddy 自动证书 → 看到小锁 → Cloudflare 开代理选 Full → 排除动态缓存。每一步验证通过了再走下一步,别四步一起上,出问题都不知道查哪。

这套配置跑起来之后,你的网站就是:全程加密、有 CDN 加速、证书自动续、还能防一波小攻击。成本是零,效果是满格。剩下的就是定期检查:每季度看一眼证书续期、看一眼 Cloudflare 的缓存命中率,其他时间该干嘛干嘛。

DNS 生效要等:别急

改了 NS、加了 A 记录,别指望立刻生效。DNS 全球生效要几分钟到几小时,看 TTL。验证用 dig 看权威结果,别 ping——ping 走本地缓存,会骗你。刚改完就到处刷新说「没生效」,是新人的经典动作。改完去喝杯水,回来再看,基本就好了。

Caddy 开机自启

Caddy 配好了,别用裸命令跑,做成 systemd 服务开机自启。改了配置用 caddy reload 重载,不用重启,正在访问的用户无感知。验证:重启一次服务器,网站能自己起来才算数。反向代理挂了,网站就全挂,它值得一个开机自启。

多个域名:一个 Caddy 全管

有多个域名,不用起多个 Caddy,一个就行:配置文件里每个域名写一段,证书各自自动申请。主站、博客、文档站,全扔给一个 Caddy 管,省内存又省心。注意每个域名的反向代理端口别写串了,写串了就是 A 站打开 B 站的内容,查日志一眼就能看出来。

反向代理:别把端口暴露出去

网站进程只监听 localhost,安全组只开 80 和 443,3000 这些应用端口别对外开。用户只能通过 Caddy 访问你的网站,直接连端口想都别想。数据库端口更别说,前面讲过,只给本机用。端口暴露得越少,被扫出漏洞的机会越小,这是安全的基本功。

HTTP/2 和 HTTP/3:Caddy 默认开

Caddy 默认就开了 HTTP/2 和 HTTP/3,不用你配。Cloudflare 那边也是默认开。多路复用、头部压缩,速度提升是顺带的。别去网上找「开启 HTTP/3 的教程」,你的已经开了。把时间花在内容上,别花在折腾已经做好的东西上。

备份证书?不用

有人问证书要不要备份:不用。证书 90 天自动续,服务器重建了重新申请一张就行,比恢复备份还快。注意 Let's Encrypt 有申请频率限制(一周 50 张),正常用碰不到,别写脚本循环申请就行。证书这种东西,丢了再拿,比存着省心。

Cloudflare 防火墙:基础防护打开

Cloudflare 免费版带基础防护:Bot Fight Mode 打开,小爬虫、小攻击挡掉大半。别指望它防大流量攻击,那是付费版的事;但日常的小打小闹,免费版够用了。安全设置里把「安全级别」设成中,既不误伤正常用户,也能挡掉明显的坏蛋。

源站 IP 别泄露

开了 Cloudflare 代理,用户看到的是它的 IP,但你的源站 IP 可能从别处泄露:邮件头、没代理的子域名、历史 DNS 记录。检查一遍:所有子域名都开了代理,邮件用第三方发(别用服务器直接发,头里带 IP)。真泄露了也不怕,换个 IP 重新解析就行,几分钟的事。

从 HTTP 迁移:检查清单

老站从 http 迁到 https,对着这个清单走:全站资源改成 https(查混合内容)、http 做 301 跳转到 https、Search Console 里把网站地址改成 https 版、sitemap 更新。迁完观察一周排名,没大波动就是成功了。短期小波动正常,搜索引擎要重新认一遍你的站,别慌。

免费 SSL 与 CDN 配置指南 · EazyOPC 博客