宝塔面板 CDN 后 SSL 怎么配
学完这篇,你能在网站已经接入 CDN 的前提下,把宝塔面板源站的 SSL 配通,不再出现「重定向次数过多」「证书验证失败」「申请证书报 404」这三类高频错误。
先确定一件事:CDN 回源走 HTTP 还是 HTTPS
这一步决定后面所有配置,先选好方案。方案 A:回源 HTTP,浏览器到 CDN 是 HTTPS,CDN 到源站是明文 HTTP,源站宝塔可以不装证书;方案 B:回源 HTTPS,全程加密,源站宝塔必须装证书,CDN 回源协议要选 HTTPS 或「协议跟随」。两者没有对错,看你对源站链路加密的要求。
第一步:在 CDN 控制台配证书并开启 HTTPS
腾讯云:CDN 控制台 → 域名管理 → 点你的加速域名 → 「HTTPS 配置」→ 证书配置,选「腾讯云托管证书」或上传自有证书 → 提交;再到「回源配置」把回源协议设为 HTTP(方案 A)或 HTTPS(方案 B)。阿里云:CDN 控制台 → 域名管理 → 域名 → 「HTTPS 配置」→ 证书类型选「云盾证书」或自定义上传 → 开启。Cloudflare:SSL/TLS → Overview,加密模式选 Flexible(方案 A)或 Full (strict)(方案 B)。
注意:Cloudflare 选 Full (strict) 时源站证书必须是有效证书,自签会报 526;选 Flexible 而源站又强制 HTTPS,就会无限重定向。
第二步:给源站宝塔装证书
登录宝塔面板(8.x / 9.x 操作一致)→ 左侧「网站」→ 点站点右侧「设置」→ 左侧「SSL」标签页 → 「Let's Encrypt」→ 勾选域名 → 选验证方式。
默认是文件验证,宝塔会在源站放一个验证文件,让 CA 从公网访问 http://你的域名/.well-known/acme-challenge/xxx。域名已经解析到 CDN,这个请求打到 CDN 节点,回源后经常拿不到,直接 404。
注意:域名接 CDN 后,宝塔的文件验证大概率失败。两个解法:① 域名 DNS 在腾讯云/阿里云时,SSL 页选「DNS 验证」,填 API 密钥走 TXT 记录,完全不受 CDN 影响;② 临时把域名解析指回源站 IP,签完再切回 CDN。
已有证书就直接选「其他证书」,粘贴 PEM 公钥和私钥保存。
第三步:处理「重定向次数过多」
宝塔站点设置里有个「强制 HTTPS」开关,打开后会在 Nginx 配置里写 301 跳转。方案 A(回源 HTTP)下必须关掉,否则 CDN 用 HTTP 回源 → 源站 301 到 HTTPS → CDN 再用 HTTP 回源,死循环。正确做法是只留一处强制跳转:在 CDN 的 HTTPS 配置里开「强制跳转 HTTPS」,源站宝塔的「强制 HTTPS」关闭。
注意:如果手动改过配置,去 /www/server/panel/vhost/nginx/你的域名.conf 检查有没有
if ($scheme = http) { return 301 ... },有就删掉,再回「设置」→「配置文件」保存重载。
第四步:让源站拿到访客真实 IP
否则日志和防火墙看到的全是 CDN 节点 IP。宝塔「网站」→「设置」→「配置文件」,在 server 块内加:
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
再确认「软件商店」→ Nginx → 「配置修改」中已编译 ngx_http_realip_module(官方编译版默认带)。
注意:
set_real_ip_from 0.0.0.0/0只适合临时调试,正式环境要填 CDN 厂商公布的回源网段,否则别人伪造 X-Forwarded-For 就能污染日志和防火墙规则。
第五步:验证
curl -I https://你的域名 应返回 200;curl -I http://你的域名 只跳转一次到 https;浏览器 F12 → Network 看证书颁发者是否为 CDN 的证书;宝塔网站日志里确认 IP 是访客真实 IP 而非节点 IP。
小结
- 先定回源协议:回源 HTTP 省事,回源 HTTPS 必须给源站装证书。
- 域名已接 CDN 时,宝塔 Let's Encrypt 用 DNS 验证,别用文件验证。
- 强制 HTTPS 只在 CDN 或源站二选一开,否则死循环。
- 用 set_real_ip_from 恢复真实 IP,并限定 CDN 回源网段。
- 最后用 curl 和浏览器 F12 双向验证证书与跳转。
原文链接:https://www.gj0.com/thread-948.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。