将Laravel的Sail开发环境转换为HTTPS
to translate the text from English to Chinese
在使用sail环境开发Laravel时,实施OAuth时需要通过https接收回调。
由于Laravel通过artisan server运行,要实现https化,需要在运行sail的docker环境中单独引入nginx。
安装Sail-SSL后,即使在初始安装之后,也可以通过https://localhost进行最低限度的https通信,因此非常方便。
方法
-
- 使用自签名认证(在本地主机或hosts文件中使用的域名)来发行和安装证书
- 使用Sail-SSL在Sail容器中引入nginx。
sail up -d
sail composer require ryoluo/sail-ssl --dev
sail artisan sail-ssl:install
sail down
sail up -d
sail npm run dev
3. 点击访问https://localhost,确认是否已经进行了https加密。
以下是混合内容错误的解决方法
-
- 将.env文件中的APP_URL和ASSET_URL的URL地址更改为https
-
- 创建/etc/nginx/certs目录,并放置key和pem(crt)文件
- 在nginx的配置文件中指定key和pem(crt)文件
ssl_certificate /etc/nginx/certs/server.pem;
ssl_certificate_key /etc/nginx/certs/server.key;
在AppServiceProvider.php中强制使用HTTPS协议。
public function boot(): void
{
URL::forceScheme('https');
}
在vita.config.js中添加https,指定密钥和pem(crt)文件,以实现vita的https通信。
server: {
host: true,
hmr: {
host: env.APP_HOST
},
https: {
key: fs.readFileSync('./server.key'),
cert: fs.readFileSync('./server.pem'),
6. 重新启动
sail down
sail up -d
通过使用docker ps命令来确认443端口是否通信正常,根据情况将自签名证书加载到浏览电脑中。