应用程序负载均衡器后面的 PHP 应用程序运行状况检查失败

问题描述 投票:0回答:2

我正在尝试通过 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 实例达到健康状态的建议将不胜感激。

TG健康检查

应用程序负载均衡器安全组允许端口 80 上的流量 EC2 实例安全组允许来自 Application Load Balancer 安全组的流量。

PHP 应用程序应该可以在运行 Apache 的端口 80 上访问。应用程序负载均衡器只有 1 个为端口 80 设置的侦听器,用于将流量转发到目标组。

amazon-web-services aws-code-deploy aws-application-load-balancer health-check
2个回答
2
投票

TG 中的健康检查路径应该是 URL 路径,而不是 EB 实例上的实际位置。你可以尝试一下

/index.php
:

/index.php

这假设您的应用程序实际上正在运行,唯一的问题是健康检查。


0
投票

如果您正在使用 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()

您可以根据需要更改路线。

© www.soinside.com 2019 - 2024. All rights reserved.