发布于2026-07-12 阅读(0)
扫一扫,手机访问
ThinkPHP 本身并不直接处理 HTTPS 协议,SSL 证书必须由 Web 服务器(比如 Nginx 或 Apache)来加载并终止加密连接。框架只负责接收已经解密的请求,所以“部署 SSL 证书”这件事,本质上就是 Web 服务器配置 + ThinkPHP 环境适配,而不是改几行 PHP 代码就能搞定。
下面分三块说清楚:Nginx 怎么配置 HTTPS、怎么强制跳转、ThinkPHP 层需要检查哪些要点。都是生产环境验证过的做法,直接照着操作就行。
证书路径必须用绝对路径,文件权限要可读,而且 Nginx 的 SSL 模块必须启用。具体步骤:
.crt(最好包含完整证书链)和 .key 文件放到安全目录,比如 /etc/nginx/ssl/yourdomain.com.pem 和 /etc/nginx/ssl/yourdomain.com.keynginx -V 2>&1 | grep -o with-http_ssl_module 确认是否支持 SSL。没输出的话,就得重新编译加上 --with-http_ssl_module 参数server { listen 443 ssl; } 块里写明证书路径:ssl_certificate /etc/nginx/ssl/yourdomain.com.pem;
ssl_certificate_key /etc/nginx/ssl/yourdomain.com.key;
root 指向 ThinkPHP 的 public/ 目录,例如 root /var/www/your-app/public;ssl_protocols TLSv1.2 TLSv1.3;、ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...;这个规则必须独立写在另一个 server { listen 80; } 块里,而且放在 HTTPS 块之前:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}
rewrite,return 301 更快更可靠$host 保留原始域名(支持多域名),$request_uri 完整保留路径和参数框架不参与证书加载,但为了避免 HTTPS 下出问题,下面几点必须确认:
public/index.php 是唯一入口,Nginx 的 location ~ .php$ 正确转发到它config/app.php 中 'url' => 'https://yourdomain.com'(如果有硬编码 URL 的场景)config/session.php 中设置 'secure' => true,否则登录态在 HTTPS 下可能失效Url::build() 生成链接,确保 $_SERVER['HTTPS'] 或 $_SERVER['HTTP_X_FORWARDED_PROTO'] 被正确识别。Nginx 需要加一行:fastcgi_param HTTPS on;
或者更通用的:
fastcgi_param HTTP_X_FORWARDED_PROTO $scheme;
https://,否则浏览器会拦截混合内容不复杂,但容易忽略。

售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8