如何修复Elasticbeanstalk实例上的“运行状况检查失败,并导致以下代码:”?

时间:2019-03-24 02:32:44

标签: amazon-web-services amazon-elastic-beanstalk

由于Target.ResponseCodeMismatch错误,我的应用程序的运行状况为严重。

我已尝试遵循{strong>在此aws instruction的后端中未配置重定向。并且我已将eb config上的端口更改为'443',并将协议更改为'HTTPS',并进行了重新部署。它将“健康状态”更改为“确定”,但是当我访问自己的网址时,我只会看到“索引为”页面

eb status --verbose返回的内容是

Description: Health checks failed with these codes: [301]
Reason: Target.ResponseCodeMismatch

这来自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

4 个答案:

答案 0 :(得分:1)

我有类似的问题。对于我来说,解决方法是将运行状况检查的“成功代码”设置从200更改为200,301

答案 1 :(得分:0)

通常,您的应用将进行部署以公开其本机端口。对于Java,通常为8080,节点为3000。然后,作为EB的一部分,AWS仍将在应用程序的前面暴露apache或nginx的代理,从而暴露端口80。ELB将端口443暴露给应用程序。外。

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

答案 2 :(得分:0)

这似乎对我有帮助

“健康检查设置”>“高级健康检查设置”

下:“端口”从“流量端口”到“覆盖”并使用“80”

在:“成功代码”

一个 EB 实例 从“200”到“200,300,301,302,303,304,305,306,307,308”(在 Elastic Beanstalk 中,由于“3xx 响应”而下降)

EB 的第二个实例 从 "200" 到 "200,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,422,425,404,422,425,408,422,425,408,422,425,408,422,425,42842, 响应"Elastic>4p2842,

答案 3 :(得分:-1)

我遇到了以下问题:

Description: Health checks failed with these codes: [400]
Reason: Target.ResponseCodeMismatch

对我来说修复的是将 Success codes 值输入到 400

EC2(服务)> 负载平衡(从左侧菜单)> 目标组(单击名称)> 运行状况检查(单击选项卡)> 编辑 > 高级运行状况检查设置 > 成功代码 = 400