You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署于AWS ECS的Laravel应用HTTPS访问返回503错误求助

AWS ECS部署Laravel应用时HTTPS返回503错误排查

环境

  • 基于EC2实例的AWS ECS
  • ALB(应用负载均衡器)终止SSL
  • 使用ACM(AWS证书管理器)提供的SSL证书
  • Docker容器内运行Apache服务器

问题

应用通过HTTP(80端口)可正常访问,但通过HTTPS(443端口)访问时返回503错误。ALB监听器已配置80和443端口,分别处理HTTP和HTTPS请求。

已尝试操作

  • ALB健康检查设置为80端口,状态显示健康
  • 安全组已开放80和443端口
  • Dockerfile中已配置EXPOSE 80
  • Laravel的TrustProxies中间件配置无误

疑问

  1. HTTPS连接返回503错误的可能原因是什么?
  2. ECS任务定义或Docker容器配置中是否存在我遗漏的潜在问题?

补充信息:可按需提供更多配置细节。以下是相关配置文件:

Dockerfile

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-default.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>

start-container

#!/usr/bin/env bash

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

apache2-foreground

问题解答

1. HTTPS返回503的核心可能原因

HTTP正常但HTTPS返回503,几乎都是ALB的HTTPS监听器与目标组的配置不匹配,具体包括:

  • HTTPS监听器关联了错误的目标组:比如指向了无运行任务的目标组,或目标组端口配置错误(比如误设为443而非容器暴露的80端口)
  • HTTPS监听器规则存在问题:规则中设置了错误的路径转发,或附加了导致请求无法到达容器的过滤条件
  • 目标组健康检查虽显示正常,但HTTPS请求的转发逻辑异常:比如ALB错误地向容器转发HTTPS请求(而容器仅监听80),不过你是ALB终止SSL,此场景概率极低
  • 证书关联问题:ACM证书虽绑定到HTTPS监听器,但未完成域名验证或已过期,不过这种情况通常返回证书错误而非503

2. ECS任务定义与容器配置的潜在遗漏点

从提供的配置看,容器本身无明显问题,但需检查ECS任务定义的以下内容:

  • 端口映射配置:确认任务定义中是否将容器80端口映射到ECS实例的对应端口(如80),且目标组端口与该映射端口一致
  • 网络模式与安全组:若使用awsvpc模式,需确认任务安全组允许ALB安全组访问容器80端口;若为bridge模式,需确认ECS实例的端口映射无误
  • 任务运行状态:确认ECS任务处于正常运行状态,无重启或崩溃记录

关键排查步骤

  1. 核对ALB HTTPS监听器的目标组:确认目标组协议为HTTP、端口与容器映射端口一致,且组内ECS实例状态为健康
  2. 查看ALB访问日志:在CloudWatch中分析HTTPS请求的日志,确认是ALB无法连接目标,还是目标返回503
  3. 测试目标连通性:在ECS实例上curl本地容器映射端口,验证服务可用性;在ALB所在VPC内curl HTTPS地址,排查网络层面问题
  4. 检查HTTPS监听器规则:确认无额外规则(如路径重写、认证)拦截请求

内容的提问来源于stack exchange,提问作者kyoshida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 01:10:19