【问题标题】:Elasticbeanstalk returns "504 Gateway Timeout"Elasticbeanstalk 返回“504 网关超时”
【发布时间】:2021-10-28 15:54:55
【问题描述】:

我的 API 中有一个端点,它需要一些时间来返回响应(>1 分钟)。

我已将我的 API 部署到 Elasticbeanstalk,现在当我尝试访问它时,我从 Nginx 收到 504 Gateway Timeout

<html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body>
</html>

我该如何解决这个问题?

【问题讨论】:

    标签: node.js amazon-web-services go amazon-elastic-beanstalk


    【解决方案1】:

    像你这样的超时错误最好通过改进软件本身来解决,但如果由于任何原因无法解决,那么你可以增加你的 nginx 和负载均衡器的超时时间。

    在以前版本的 Amazon Linux 中,您需要在名为 .ebextensions 的目录中使用自定义 nginx 配置部署代码

    对于 Amazon Linux 2,情况完全相同,只是略有不同,您需要使用 .platform 文件夹来进行平台配置,而不是使用 .ebextensions

    因此,在您应用的预期 ElasticBeanstalk 包中创建以下结构 -

    eb-package
    └── src
    └── .ebextensions
    └── .platform
        └── nginx
            └── conf.d
                └── timeout.conf
    

    并将以下内容添加到您的timeout.conf 文件中

    proxy_connect_timeout 600;
    proxy_send_timeout 600;
    proxy_read_timeout 600;
    send_timeout 600;
    

    您应该知道,在某些情况下,您需要通过使用 AWS 控制台(在 EC2 下)手动配置负载均衡器或在 .ebextensions 目录中提供配置文件来增加负载均衡器的超时时间

    例如(注意:此配置会因您使用的负载均衡器类型而异):

    option_settings:
       - namespace: aws:elb:policies
         option_name: ConnectionSettingIdleTimeout
         value: 300
    

    查看 Classic Load Balancer 与 Application Load Balancer 配置

    在 AWS 的文档中(根据 2021 年 8 月 29 日),较新的 Application Load Balancer 没有默认超时。 Classic Load Balancer 的超时时间为 60 秒。

    aws:elb:policies 对比 aws:elbv2:loadbalancer

    有关详细信息,请参阅

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-20
      • 2014-08-24
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 2011-08-30
      相关资源
      最近更新 更多