我正在尝试通过 AWS CodeDeploy 部署 PHP,但目前停留在 CodeDeploy 中的“AllowTraffic”步骤上。该应用程序位于 ALB 后面的 EC2 实例上。在 ALB 中,我的健康检查失败。我的 PHP 应用程序代码位于 EC2 实例的以下目录中:
/var/www/html/src
。如果我要在代码所在目录后面卷曲 EC2 的私有 IP,则会收到错误 404 Not Found。即使 index.php
文件位于该目录中,我也无法卷曲它。目前,我设置了安全组,其中 ALB 安全组仅允许来自 HTTP 的任何流量,并且允许来自 ALB 安全组的所有流量到达 EC2 实例。我能够卷曲实例的根目录并查看 Apache 的默认页面。
如果我要调整 ALB 目标组上的运行状况检查设置,则在将运行状况检查设置为
/
时会收到 403 错误。当指定具有 PHP 应用程序代码的目录的路径时,我收到 404 错误。
任何关于如何使 ALB 实例达到健康状态的建议将不胜感激。
应用程序负载均衡器安全组允许端口 80 上的流量 EC2 实例安全组允许来自 Application Load Balancer 安全组的流量。
PHP 应用程序应该可以在运行 Apache 的端口 80 上访问。应用程序负载均衡器只有 1 个为端口 80 设置的侦听器,用于将流量转发到目标组。
TG 中的健康检查路径应该是 URL 路径,而不是 EB 实例上的实际位置。你可以尝试一下
/index.php
:
/index.php
这假设您的应用程序实际上正在运行,唯一的问题是健康检查。
如果您正在使用 Laravel 11+。
Laravel 11 包含新应用程序的运行状况 /up 端点。 Laravel 对 bootstrap/app.php 进行了重大更改。从此文件中,您可以自定义应用程序的路由、中间件、服务提供程序、异常处理等。
您现在在 withRouting 方法中定义了一个新的 health 参数,该参数在 Laravel 11 框架中默认定义。默认情况下,运行状况路由会将流量转发到 '/up' 路径,您稍后可以使用该路径在 AWS 等平台中进行运行状况检查流程。
Application::configure(basePath: dirname(__DIR__))
->withProviders()
->withRouting(
web: __DIR__.'/../routes/web.php',
api: __DIR__.'/../routes/api.php',
commands: __DIR__.'/../routes/console.php',
channels: __DIR__.'/../routes/channels.php',
health: '/up',
)
->withMiddleware()
->withExceptions()
您可以根据需要更改路线。