ProxyPass:Laravel HTTPS中的混合内容

时间:2019-09-06 02:47:47

标签: laravel ssl https

我正在使用Laravel 5.8

目前我有这个网站:样品名称

https://www.myssldomain.com/ewallet

我有这个网站:样品名称

http://my-aws-public-ip/login

当用户触发/搜索此链接时,使用Proxy Pass中包含的myssldomain.comhttps://www.myssldomain.com/ewallet/login

浏览器将加载该网站http://my-aws-public-ip/login

的内容

proxy pass工作正常,但问题是stylesjavascript未加载,并且浏览器显示Mixed Content,因为my-aws-public-ip网站被加载为HTTP不是HTTPS

当前

我将config/app.php更改为

'url' => env('APP_URL', 'https://www.myssldomain.com/ewallet/'),

.env文件,我将APP_URL更改为此https://www.myssldomain.com/ewallet/

我尝试过的事情

我遵循了此步骤,但似乎也无法正常工作。

https://coderwall.com/p/g9qkea/mixed-content-issue-content-must-be-served-as-https-in-laravel

我也尝试更改以下内容以解决问题

APP_ENV=production

APP_DEBUG=false

APP_URL=https://www.myssldomain.com/ewallet/

并将此代码添加到web.php

的开头
if (App::environment('production')) {
URL::forceScheme('https');
}

但是仍然不能在我这边工作。 我需要设置什么来确保它能正常工作吗?

期望

enter image description here

使用来自myssldomain.com的代理通行证

enter image description here

1 个答案:

答案 0 :(得分:1)

解决了我自己的问题!由于代理使用HTTPS,而Laravel使用HTTP请求作为默认设置,因此您可以尝试将其配置为HTTPS。

config / app.php

'url' => env('APP_URL', 'https://www.myssldomain.com/ewallet'),
'asset_url' => env('ASSET_URL', 'https://www.myssldomain.com/ewallet'),

.env

APP_NAME=XX
APP_ENV=XXX
APP_KEY=base64:XXX
APP_DEBUG=true
APP_URL=https://www.myssldomain.com/ewallet

app / Providers / AppServiceProvider.php

public function boot()
{
    if (env('APP_ENV') !== 'local') {
        $this->app['request']->server->set('HTTPS', true);
    }
}

routes / web.php

在代码的开头添加;

URL::forceRootUrl('https://www.myssldomain.com/ewallet');

完成此操作后,您的CSS / JS将不再以HTTPS的形式加载为HTTPS。