1、网站下方点击项目名称进入github
2、clone或直接下载源码到服务器
3、php项目的部署就不多说了
4、配置cdn
5、申请证书
6、通过cdn配置https证书
通过报错文件名找到引入资源位置
发现这个里面用到了asset函数引入,已知这个系统用的是laravel ,通过 php artisan --version 命令 查找到版本 Laravel Framework 8.38.0,那我们就查找一些asset函数的介绍
里面很重要的话便是 “根据当前的请求协议( HTTP 或 HTTPS )”
我们系统中粗略的协议流程大致是这样
可以看到 用户访问到cdn会是https请求,但是真正落地到服务器的是http请求
这个问题大概能想到几种方案解决呢
- 修改cdn落地到服务器为https请求(证书部署,多台集群每一个都要加证书,内网互相调用还需要配置80和443两个端口,麻烦)
- nginx匹配替换(通过nginx的替换函数,匹配到http://blog.51chihu.com改成https://blog.51chihu.com,太暴力了)
- 想办法让函数不通过当前协议 反正我们也有http自动跳转https ,那就直接定死https
那我们的解决方案基本上就确定了,让asset这个函数不通过当前请求的协议就好了,强制使用https,万能的百度搜索 “laravel asset强制使用https”
修改 app/Providers/AppServiceProvider.php 这个文件
use Illuminate\Routing\UrlGenerator;
public function boot(UrlGenerator $url)
$url->forceScheme('https');
最新评论