对安装了 apache2 的 ec2 实例进行故障排除,该实例超时且未记录任何错误

对安装了 apache2 的 ec2 实例进行故障排除,该实例超时且未记录任何错误

我的 ec2 是使用自动缩放组创建的,并且负载均衡器附加到自动缩放组。使用的安全组为所有传入和传出的流量提供 0.0.0.0。我已使用路由 53 将证书应用于 URL,并将负载均衡器连接到路由。当我加载所有内容并输入 URL 时,它最终会出现一个空白页,网页甚至显示 https 正在运行。负载均衡器显示 ec2 实例正在运行,自动缩放组显示实例运行正常。

我已采取的步骤如下:

  • 查看来自 apache 的访问和错误日​​志。除了健康检查器正在获得访问权限外,没有显示任何内容。
  • 检查安全组附加的入站/出站规则
  • 我已经检查了启用站点的 apache 配置并验证了 DocumentRoot 是正确的。
  • 检查负载均衡器和自动扩展组是否认为该实例健康。
  • 将我的索引文件更改为包含 Hello 的简单 html 文件,以防文件损坏。

有谁能建议我还能尝试什么,或者之前有人遇到过这个问题吗?我该怎么办?!

Apache 配置:

<VirtualHost *:80>

    RewriteEngine on
    RewriteCond %{HTTP:X-Forwarded-Proto} ^http$
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    DocumentRoot /var/www/laravel_app/public

</VirtualHost>

ELB 访问日志

访问日志给出的 elb_status_code 和 backend_status_code 代码为 301。

HTTP 请求响应

408 ~ 请求超时

答案1

我发现,尽管我的负载均衡器和 ec2 实例都有 http/https 入站和出站规则,但 https 实例端口设置为 443 而不是 80。工作配置如下所示:

在此处输入图片描述

这解决了我的问题,但是,我不太清楚为什么如果 ec2 实例和负载均衡器同时允许 http 和 https,那么实例端口必须设置为 80。

相关内容