302错误:SSL AWS ELB Load Balancer中的Laravel 5.4

时间:2017-06-01 15:09:58

标签: apache amazon-web-services ssl laravel-5.3 http-status-code-302

我们在AWS(Elastic Beanstalk)上部署了一个安装了中间件的Laravel 5.4应用程序,即:laravel-ssl-protocol(通过resino),用于强制SSL。我们已将它包含在Kernel.php

    protected $middleware = [
    ...
    \Riseno\SSLProtocol\SSLMiddleware::class,               
];

它完美地适用于Homestead /本地机器。但它不适用于服务器(AWS ELB)。我附上了实际的图像或问题。 firefox and chrome too many redirect

如何解决此问题的任何想法将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

我终于找到了解决问题的方法,我想我需要在这里分享一下。因此,如果有人遇到与我相同的问题,这可能对他们有所帮助。当我在网上做一些研究时,我发现了这篇文章:How to Configure Symfony to Work behind a Load Balancer or a Reverse Proxy 。并对当前的中间件laravel-ssl-protocol(通过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_X_FORWARDED_AWS_ELB"。