AWS ECS 上托管的 Laravel 应用程序返回 HTTPS 的 503 错误

Laravel application hosted on AWS ECS returns 503 error for HTTPS

提问人:kyoshida 提问时间:11/16/2023 更新时间:11/17/2023 访问量:28

问:

我正在使用 AWS ECS 部署 Laravel 应用程序,但在 HTTPS 连接上出现 503 错误时遇到了问题。以下是当前的设置和问题。

环境:

EC2 实例上的 AWS ECS ALB (Application Load Balancer) 的 SSL 终止 ACM 提供的 SSL 证书 (AWS Certificate Manager) 在 Docker 容器中运行的 Apache 服务器 问题: 应用程序可以通过 HTTP(端口 80)正常访问,但尝试通过 HTTPS(端口 443)访问会导致 503 服务不可用错误。ALB 侦听器针对端口 80 和 443 设置,处理 80 上的 HTTP 请求和 443 上的 HTTPS 请求。

试:

为80端口设置了ALB健康检查,状态为正常。 安全组对端口 80 和 443 均开放。 Dockerfile 设置为 EXPOSE 80。 Laravel TrustProxies 中间件似乎设置正确。 问题:

通过 HTTPS 连接时出现 503 错误的可能原因是什么? ECS 任务定义或 Docker 容器配置中是否存在我可能遗漏的潜在疏忽? 其他信息: 我将根据需要提供 Dockerfile、ECS 任务定义、ALB 监听器设置等详细信息。

我将不胜感激解决此问题的任何见解或建议。谢谢。

Docker文件

FROM --platform=linux/x86_64 php:8.2-apache

WORKDIR /var/www/html

RUN apt-get update && apt-get install -y \
    libzip-dev \
    && docker-php-ext-install zip pdo_mysql

COPY --from=composer /usr/bin/composer /usr/bin/composer
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer

EXPOSE 80

COPY . /var/www/html
COPY docker/8.2/000-default.conf /etc/apache2/sites-available/000-default.conf

COPY docker/8.2/start-container /usr/local/bin/start-container
RUN chmod +x /usr/local/bin/start-container

CMD ["start-container"]

000-默认.conf

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/html/public/

  <Directory /var/www>
    AllowOverride All
    Require all granted
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

启动容器

#!/usr/bin/env bash

composer install
chmod 777 -R /var/www/html/storage/
a2enmod rewrite

apache2-foreground

Laravel Amazon-EC2 Amazon-ECS AWS-Application-Load-Balancer

评论


答:

1赞 Mark B 11/17/2023 #1

ALB 侦听器针对端口 80 和 443 设置,处理 80 上的 HTTP 请求和 443 上的 HTTPS 请求。

听起来负载均衡器上可能有 HTTPS 端口侦听器,将流量转发到容器上的端口。由于负载均衡器上存在 SSL 证书,因此 SSL 连接将在负载均衡器处终止。容器仅侦听端口 80。HTTPS 端口侦听器需要将流量转发到容器上的端口,就像端口侦听器将流量转发到容器上的端口一样。443443443808080

评论

0赞 kyoshida 11/17/2023
我和正在构建 ALB 的成员交谈过,他说配置错误,你是对的。谢谢。