提问人:kyoshida 提问时间:11/16/2023 更新时间:11/17/2023 访问量:28
AWS ECS 上托管的 Laravel 应用程序返回 HTTPS 的 503 错误
Laravel application hosted on AWS ECS returns 503 error for HTTPS
问:
我正在使用 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
答:
ALB 侦听器针对端口 80 和 443 设置,处理 80 上的 HTTP 请求和 443 上的 HTTPS 请求。
听起来负载均衡器上可能有 HTTPS 端口侦听器,将流量转发到容器上的端口。由于负载均衡器上存在 SSL 证书,因此 SSL 连接将在负载均衡器处终止。容器仅侦听端口 80。HTTPS 端口侦听器需要将流量转发到容器上的端口,就像端口侦听器将流量转发到容器上的端口一样。443
443
443
80
80
80
评论