如何更改 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 中更改数据库配置