我们在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
如何解决此问题的任何想法将不胜感激。感谢。
答案 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"。