DoraCMS部署SSL证书,开启全站HTTPS
给 DoraCMS 开启全站 HTTPS,核心就三件事:拿到有效的 SSL 证书、在 Web 服务器里正确加载证书、把 HTTP 请求强制跳到 HTTPS。
下面按宝塔面板 + Nginx 的常见环境来讲,这套流程也适用于大多数 Linux 服务器。
开始前的环境确认
动手之前先确认下面几点,能避免大部分中途卡住的情况:
- 域名已经解析到服务器 IP,并且能正常通过 HTTP 访问 DoraCMS。
- 服务器上装好了宝塔面板,站点是通过宝塔创建的 Nginx 站点。
- 如果是手动装的环境,需要能找到 Nginx 配置文件路径,常见位置是
/www/server/panel/vhost/nginx/你的域名.conf。 - 服务器 443 端口没有被安全组或防火墙拦住。
获取 SSL 证书
在宝塔面板申请免费证书
登录宝塔面板,进入 网站,找到 DoraCMS 对应的站点,点击 设置,切换到 SSL 标签。
选择 Let's Encrypt,勾选需要签发的域名,点击 申请。
证书签发成功后,面板会自动把证书文件放到站点目录下,并在 Nginx 配置里写入 443 监听和证书路径。
申请失败时优先检查域名解析是否生效、80 端口是否可访问,Let's Encrypt 的验证依赖这两个条件。
使用已有商业证书
如果你从其他平台购买或申请了证书,会拿到两个文件:证书链文件(.pem 或 .crt)和私钥文件(.key)。
在宝塔 SSL 页面选择 其他证书,把内容分别粘贴到对应输入框,保存即可。
修改 Nginx 配置并开启 HTTPS
宝塔申请证书后通常会自动改好配置,但手动部署时需要自己确认。
一个可用的 HTTPS 配置片段大致如下:
server {
listen 443 ssl http2;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /www/server/panel/vhost/cert/yourdomain.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/yourdomain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
root /www/wwwroot/yourdomain.com;
index index.php index.html;
location / {
try_files $uri $uri/ /index.html;
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
}
把 yourdomain.com、证书路径、站点根目录和 PHP socket 版本替换成你自己的。
DoraCMS 是基于 Node.js 或 PHP 的建站系统,具体 location 转发规则以你当前站点实际配置为准,不要盲目覆盖原有规则。
改完后在宝塔面板或终端执行 nginx -t 检查语法,出现 syntax is ok 和 test is successful 才算通过。
然后 nginx -s reload 或面板里点击重载。
把 HTTP 请求强制跳转到 HTTPS
只配好 443 还不够,用户直接访问 http:// 时仍会走明文。
需要保留 80 端口的 server 块,并做 301 跳转:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
保存后再次 nginx -t 并重载。
这样无论用户从哪个入口进来,最终都会落到 HTTPS 上。
容易踩的坑和排查方向
- 证书路径写错:
nginx -t会直接报找不到文件,按报错提示核对路径。 - 只监听 443 没保留 80:老链接和部分外链会直接打不开,建议保留 80 做跳转。
- 混合内容警告:浏览器地址栏有小锁但控制台提示混合内容,说明页面里还有
http://的图片、JS 或 CSS,需要在 DoraCMS 后台或模板里改成https://或相对路径。 - 跳转死循环:如果用了 CDN 或反向代理,源站再判断协议可能循环,这时要改用
X-Forwarded-Proto判断。 - 证书过期:Let's Encrypt 证书有效期较短,宝塔默认有自动续签任务,建议定期在面板确认续签状态。
验证是否真正生效
配置完成后用下面几种方式确认:
- 浏览器访问
https://你的域名,地址栏显示锁形图标,点击可查看证书有效期和域名匹配情况。 - 访问
http://你的域名,观察是否自动跳到https://。 - 终端执行
curl -I http://你的域名,返回301且Location指向 HTTPS 地址,说明跳转正常。 - 打开浏览器开发者工具的 Console,确认没有混合内容(Mixed Content)报错。
全站 HTTPS 生效后,建议顺手在 DoraCMS 后台把站点地址配置也改成 https:// 开头,避免后台生成的外链或资源地址仍然是 HTTP。
几个常见疑问
证书申请一直失败怎么办? 先确认域名解析是否已生效、80 端口能否从外网访问。
Let's Encrypt 验证需要服务器能被公网访问到,内网或端口被封的环境无法通过。
开启 HTTPS 后网站变慢正常吗? 首次 TLS 握手会有少量开销,开启 http2 和会话缓存后基本无感。
如果明显变慢,检查是否误开了不必要的加密套件或证书链不完整。
能不能只让后台走 HTTPS,前台保持 HTTP? 技术上可以按目录或子域名区分,但维护成本高,也容易出现混合内容问题,一般不建议。
换服务器后 HTTPS 打不开? 证书文件需要一起迁移,路径也要同步修改,迁移后重新执行 nginx -t 并重载确认。
到这一步,DoraCMS 的 SSL 证书部署和全站 HTTPS 基本就完成了。
如果验证时还有异常,优先回到避坑部分逐条对照,多数问题都能定位到证书路径、跳转规则或混合内容上。