2

我想在亚马逊上部署一个 Laravel 网站,所以我做了以下步骤:

  • 使用 Elastic Beanstalk 部署 Laravel 应用程序
  • 配置Route:53一个实例指向Ec2的Ip
  • 创建了具有两个侦听器的应用程序负载均衡器,一个在 80,一个在 443
  • 创建了 2 个目标组 Tg80 和 Tg443 并分别指定听众
  • 请注意,Tg443 具有有效的 SSL 证书

  • 将 Ec2 的安全组更改为负载均衡器的安全组

  • 将 Route:53 中的 A 实例更改为负载均衡器的实例

**结果: **

  • 该站点在带有http的端口80上完美运行,对于健康检查也是如此,我可以从任何浏览器正常访问该站点

  • 该站点在 https:443 上返回 [502 Bad Gateway]

  • 在(在 ssh 到实例之后)/var/log/httpd/error_log 我有以下错误/var/www/html/.htaccess: RewriteCond: bad flag delimiters

所以,我试过了,根据链接enforce-https-laravel

  • .htaccess按照链接中的说明在 laravel 应用程序中进行配置,请刷新所有内容 `php artisan config:cache,重试运行状况检查,但结果相同

  • 我删除.htaccess并配置了app/Providers/AppServiceProvider.php

    use Illuminate\Contracts\Routing\UrlGenerator; 

    public function boot(UrlGenerator $url)
    {
       if(env('ENFORCE_SSL', false)) {
         $url->forceScheme('https');
       }
    }
  • 并添加ENFORCE_SSL=true.env然后php artisan config:cache如同一链接中所述,它是一种比.htaccess.

但结果相同

我不知道该怎么办或如何解决这个问题。 我希望能够使用 ssl 访问该站点。请帮忙。谢谢你。

在此处输入图像描述

4

1 回答 1

3

根据评论,问题在于运行状况检查设置为在 ALB 和 EC2 之间使用 HTTPS。但是,由于 ALB 终止 SSL 连接,因此 ALB 和 EC2 之间的所有流量都是 HTTP,而不是 HTTPS。

因此,不进行健康检查的解决方案是对其使用 HTTP,而不是 HTTPS。

于 2020-03-18T12:31:43.490 回答