将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通信,因此非常方便。

方法

    1. 使用自签名认证(在本地主机或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加密。

以下是混合内容错误的解决方法

    1. 将.env文件中的APP_URL和ASSET_URL的URL地址更改为https

 

    1. 创建/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端口是否通信正常,根据情况将自签名证书加载到浏览电脑中。