【问题标题】:302 Error: Laravel 5.4 in SSL AWS ELB Load Balancer302 错误:SSL AWS ELB 负载均衡器中的 Laravel 5.4
【发布时间】:2017-11-02 19:42:58
【问题描述】:

我们在 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

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

【问题讨论】:

  • 在 ELB 后面,您必须对其进行配置以检查 x-forwarded-proto HTTP 标头以确定连接是否安全。您使用的那个中间件说它仅适用于 CloudFlare 灵活的 SSL,所以我不确定它是否适用于您的情况。
  • 太棒了!感谢 Mark B 提供的重要信息。我会在亚马逊文档中查找。这是一个很好的开始阅读。

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


【解决方案1】:

我终于找到了我的问题的解决方法,我想我需要在这里分享它。因此,如果有人遇到与我相同的问题,这可能会对他们有所帮助。当我在网上做一些研究时,我发现了这篇文章: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”。

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2017-06-10
    • 2015-01-13
    • 2023-01-31
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    相关资源
    最近更新 更多