如何更改 AWS Beanstalk Flask 应用程序的 NGINX 设置以防止 504 TImeout 错误?

Posted

技术标签:

【中文标题】如何更改 AWS Beanstalk Flask 应用程序的 NGINX 设置以防止 504 TImeout 错误?【英文标题】:How do I change the NGINX settings for a AWS Beanstalk Flask app to prevent a 504 TImeout error? 【发布时间】:2021-11-03 15:19:23 【问题描述】:

我在 Elastic Beanstalk Flask 应用程序中调整 nginx 的代理连接、读取和发送设置时遇到问题。我的应用程序做了一些长时间的计算,所以我试图增加超时时间。这是我所拥有的:

在我的项目的根目录中,我有一个目录:

.ebextensions/nginx/conf.d/myconf.conf

myconf.conf如下:

client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   180;
proxy_send_timeout      180;
proxy_read_timeout      180;

.conf 文件是 UTF-8。这似乎是 AWS 网站上指定的内容:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-nginx.html

但是,60 秒后我仍然收到 504 错误。我尝试了无数次迭代,例如将我的 .conf 文件放在 .platform/nginx/conf./ 目录中。那里没有运气。我也广泛阅读了这个线程,似乎无法从中提取我需要的内容:Increasing client_max_body_size in Nginx conf on AWS Elastic Beanstalk

如果有人对我应该如何构建这个文件路径和 myconf.conf 文件有任何建议,我是否缺少标题、引号、大括号?那太好了。非常感谢!

【问题讨论】:

【参考方案1】:

感谢 Marcin 的这篇文章的回答,我找到了解决方案:AWS - Error 504 - Gateway timeout - Flask Application

问题是我的 EB 实例使用的是 Amazon Linux 2。这意味着我的 .config 文件需要位于:

.platform/nginx/conf.d/

在此目录中,我创建了一个名为 mytimeout.conf 的文件(我也在调整超时限制),并在此文件中包含以下内容:

keepalive_timeout 240s;
proxy_connect_timeout 240s;
proxy_send_timeout 240s;
proxy_read_timeout 240s;
fastcgi_send_timeout 240s;
fastcgi_read_timeout 240s;

client_max_body_size 5M;

我更新了我的亚马逊应用程序并在我这样做时包含了 .platform 文件,并且能够上传大于 1 MB 的文件并且没有出现超时错误。

【讨论】:

以上是关于如何更改 AWS Beanstalk Flask 应用程序的 NGINX 设置以防止 504 TImeout 错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS Elastic Beanstalk 上配置我的 WSGI 应用程序的名称?

上传 Flask 应用程序时出现 AWS Elastic Beanstalk 错误

Flask 应用程序 - 部署到 AWS Elastic Beanstalk 时出错

如何在 AWS Elastic Beanstalk 中更改数据库配置

AWS Elastic Beanstalk - Flask 应用程序无法导入自定义模块

在 AWS Elastic Beanstalk 中部署 Flask 应用程序