Apache 302错误:SSL AWS ELB负载平衡器中的Laravel 5.4

Apache 302错误:SSL AWS ELB负载平衡器中的Laravel 5.4,apache,amazon-web-services,ssl,laravel-5.3,http-status-code-302,Apache,Amazon Web Services,Ssl,Laravel 5.3,Http Status Code 302,我们在AWS(Elastic Beanstalk)上部署了一个Laravel 5.4应用程序,并安装了一个中间件,即:Laravel ssl协议(由resino提供),该协议用于强制ssl。我们已经将其包含在Kernel.php中 protected $middleware = [ ... \Riseno\SSLProtocol\SSLMiddleware::class, ]; 它可以在Homestead/本地机器上完美工作。但它在服务器(

我们在AWS(Elastic Beanstalk)上部署了一个Laravel 5.4应用程序,并安装了一个中间件,即:Laravel ssl协议(由resino提供),该协议用于强制ssl。我们已经将其包含在Kernel.php中

    protected $middleware = [
    ...
    \Riseno\SSLProtocol\SSLMiddleware::class,               
];
它可以在Homestead/本地机器上完美工作。但它在服务器(AWS ELB)上不起作用。我附上了实际的图像或问题。


任何关于如何解决这个问题的想法都将不胜感激。谢谢。

我终于找到了解决问题的方法,我想我需要在这里分享一下。所以如果有人和我有同样的问题,这可能会帮助他们。当我在网上做一些研究时,我发现了这篇文章:。并对当前的中间件laravel ssl协议(由resino提供)做了一些小改动,如下所示:

    public function handle($request, Closure $next)
{
    $request->setTrustedProxies([$request->getClientIp()], Request::HEADER_X_FORWARDED_AWS_ELB);

    if (!$request->secure() && env('APP_ENV') === 'production') {
        return redirect()->secure($request->path());
    }

    return $next($request);
}

并将更新后的代码库上传到AWS和tada!它起作用了。302错误永远消失了。关键是“Request::HEADER\u X\u FORWARDED\u AWS\u ELB”。

在ELB后面,您必须将其配置为检查
X-FORWARDED-proto
HTTP头,以确定连接是否安全。您正在使用的中间件表示它仅适用于CloudFlare flexible SSL,因此我不确定它是否适合您的情况。太棒了!马克B,谢谢你提供的重要信息。我会在亚马逊的文档中查找。这是读书的好开始。