配置SSL证书和启用HTTPS是ThinkPHP项目上线前的硬性步骤,需先完成域名解析、443端口开放及ICP备案,再通过宝塔一键申请Let’s Encrypt证书并开启强制HTTPS,最后调整TP6的.env和Nginx配置以避免混合内容警告。

在Linux下用宝塔面板部署ThinkPHP项目时,配置SSL证书和启用HTTPS不是“锦上添花”,而是上线前的硬性步骤。浏览器标记不安全、微信小程序拒绝调用、搜索引擎降权、用户密码明文传输——这些问题都会在HTTP环境下真实发生。好在宝塔把整个流程图形化了,只要准备到位、操作准确,15分钟内就能让你的TP6站点跑在小绿锁后面。
域名解析与服务器准备是前提
没做这一步,后续所有证书申请都会失败。必须确保:
- 你的域名(比如 www.example.com)已添加A记录,指向服务器公网IP;
- DNS生效(可执行 ping www.example.com 或 dig www.example.com +short 验证);
- 服务器443端口已在安全组和防火墙中放行(宝塔首页会提示未开放端口);
- 若在中国内地,该域名已完成ICP备案(否则HTTPS访问可能被拦截)。
在宝塔中为ThinkPHP站点一键申请Let’s Encrypt证书
这是最推荐的方式,免费、自动续签、无需手动上传文件:
- 进入宝塔「网站」→ 找到你的ThinkPHP站点 → 点击「设置」→ 切换到「SSL」选项卡;
- 点击「申请」→ 选择「Let’s Encrypt」→ 勾选你要保护的域名(支持主域+www子域);
- 点击「申请」,等待几秒,状态变为「已签发」即成功;
- 勾选「强制HTTPS」并保存,此时所有HTTP请求将自动跳转到HTTPS。
注意:申请前务必确认Nginx已安装并运行;若使用TP6,还需确保PHP已开启 openssl 和 fileinfo 扩展(在PHP设置→安装扩展中勾选并重启)。
立即学习“PHP免费学习笔记(深入)”;
ThinkPHP项目自身的HTTPS适配要点
证书装好了,但TP6默认可能仍生成HTTP链接,导致混合内容警告(页面显示不安全)。需手动调整:
- 打开项目根目录下的 .env 文件,添加或修改:
URL_HTTPS=true
APP_URL=https://www.example.com; - 检查 config/app.php 中
'url' => env('APP_URL', 'http://localhost')是否能正确读取HTTPS地址; - 若使用Nginx反向代理(如前端有CDN),需在Nginx配置中加入:
fastcgi_param HTTPS on;
fastcgi_param HTTP_X_FORWARDED_PROTO https;; - 清理 runtime/ 目录缓存,避免旧的HTTP路由规则残留。
多个域名共用同一ThinkPHP项目的HTTPS方案
比如 pc端用 www.example.com,手机端用 m.example.com,两者共享同一套代码:
- 先为主域名(如 www)创建一个站点,绑定根目录(如 /www/wwwroot/thinkphp);
- 再新建一个站点,**根目录选择完全相同的路径**,绑定新域名(如 m.example.com);
- 为新站点单独进入「SSL」→「申请」→ 同样用Let’s Encrypt签发证书;
- 两个站点共用代码、数据库、配置,仅域名与证书独立,互不影响。
这种方式比泛域名证书更灵活,也避免了Let’s Encrypt对IP或单域名数量的限制。



















