You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改AWS Beanstalk Flask应用的NGINX配置解决504超时错误?

Elastic Beanstalk Flask应用Nginx超时配置失效解决方案

配置路径正确性说明

你写的myconf.conf内容语法完全正确,不需要额外添加头信息、大括号或引号,该类独立配置文件会被Nginx主配置自动引入到http块中生效。
路径规则和你的EB平台版本强相关:

  • 已废弃的Amazon Linux AMI(第一代)平台:配置放在.ebextensions/nginx/conf.d/路径下生效
  • 现在主流的Amazon Linux 2平台:配置必须放在.platform/nginx/conf.d/路径下生效
  • 额外注意:打包部署时必须保证.platform/.ebextensions目录在压缩包的根层级,不要嵌套在子文件夹中,否则EB不会读取配置。

你需要同步调整的其他超时配置

你遇到的60秒返回504问题,90%以上是因为只改了Nginx的代理超时,漏了以下两个核心链路的超时配置:

  • 负载均衡器空闲超时调整:EB默认的应用负载均衡器(ALB)空闲超时为60秒,超过时间会主动断开连接返回504。可以在项目中新增.ebextensions/alb-timeout.config文件,写入以下配置:
option_settings:
  aws:elbv2:loadbalancer:
    IdleTimeout: 180

如果你使用的是经典负载均衡器,将配置键替换为aws:elb:loadbalancer即可。

  • WSGI服务器超时调整:EB Flask平台默认使用Gunicorn作为WSGI服务器,其默认请求超时为30秒,远低于你设置的180秒阈值。可以在项目根目录新增Procfile,写入以下启动规则(将app:app替换为你自己的Flask实例入口):
web: gunicorn --timeout 180 app:app

配置生效验证方法

部署完成后可通过以下步骤确认所有配置正常生效:

  • SSH连接到EB实例,执行cat /etc/nginx/conf.d/myconf.conf确认你的Nginx配置已同步到实例中,再执行sudo nginx -t验证配置语法无错误
  • 在EB控制台的「配置-负载均衡器」页面,确认空闲超时已调整为180秒
  • SSH连接到EB实例,执行ps aux | grep gunicorn确认进程启动参数中携带--timeout 180

内容的提问来源于stack exchange,提问作者zoidberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:30:04