如何修复“健康检查失败,这些代码:”在 elasticbeanstalk 实例上?

sup*_*amp 4 amazon-web-services amazon-elastic-beanstalk

由于 Target.ResponseCodeMismatch 错误,我的应用程序的健康状态为严重。

我已尝试在此aws 指令中的后端未配置重定向。我已经在 eb config 上将端口更改为“443”,将协议更改为“HTTPS”并重新部署。它将 Health Status 更改为 Ok,但是当我访问我的 url 时,我只获得了“Index of”页面

这是eb status --verbose返回的内容:

Description: Health checks failed with these codes: [301]
Reason: Target.ResponseCodeMismatch
Run Code Online (Sandbox Code Playgroud)

这是来自eb config

AWSEBV2LoadBalancerListener.aws:elbv2:listener:default:
  DefaultProcess: default
  ListenerEnabled: 'true'
  Protocol: HTTP
  Rules: null
  SSLCertificateArns: null
  SSLPolicy: null
AWSEBV2LoadBalancerListener443.aws:elbv2:listener:443:
  DefaultProcess: default
  ListenerEnabled: 'true'
  Protocol: HTTPS
  Rules: null
  SSLCertificateArns: arn:aws:acm:us-east-2:XXXX:certificate/XXXXXX
  SSLPolicy: ELBSecurityPolicy-XX-XX-XXXX  
aws:elasticbeanstalk:environment:process:default:
  DeregistrationDelay: '20'
  HealthCheckInterval: '15'
  HealthCheckPath: /      
  HealthCheckTimeout: '5'
  HealthyThresholdCount: '3'
  MatcherHTTPCode: null
  Port: '443'
  Protocol: HTTPS
Run Code Online (Sandbox Code Playgroud)

小智 17

对于可能像我一样遇到此问题的人,我发现解决方案是将 ELB 目标组的健康检查端点设置为我网站上返回 HTTP 200 代码的实际 URL

在 EC2 仪表板上的负载平衡 -> 目标组下,转到健康检查选项卡并编辑站点中返回 200 代码的路径的路径。

查看图片 - EC2 -> 负载平衡 -> 目标组


Jas*_*ett 6

我有一个类似的问题。在我的情况下,解决方法是将运行状况检查的“成功代码”设置从200更改为200,301


den*_*nov 0

通常,您的应用程序将在部署时公开其本机端口。对于java,这通常是8080,对于node,它是3000。然后,作为EB的一部分,AWS将仍然在您的应用程序前面公开端口80的apache或nginx的代理。ELB将端口443公开给外部。

所以你可能想将端口和协议更改为 80 / HTTP