如何在AWS EC2实例中处理超过60秒的长请求?解决Django应用504网关超时问题
解决EC2上Django长请求504网关超时问题
我之前也踩过一模一样的坑!你全局Nginx配置里虽然把各种超时参数拉得很高,但这些全局设置并没有覆盖到具体站点的location配置块——这是Nginx配置里很容易忽略的优先级问题。
问题根源
Nginx的配置优先级是:location块 > server块 > http全局块。默认情况下,proxy_read_timeout的默认值是60秒,如果你在具体的站点location配置里没有明确覆盖这个值,哪怕全局设置了86400秒,请求到了这个location还是会用60秒的超时限制,这就是长请求触发504错误的原因。
具体解决步骤
- 打开你的Django站点对应的Nginx配置文件:
sudo nano /etc/nginx/sites-enabled/mydjango - 找到处理根路径的
location / { }配置块,在里面添加超时设置(可以根据业务需求调整时长,比如60分钟或者300秒):location / { # 保留你原本的其他配置(比如proxy_pass、proxy_set_header等) proxy_read_timeout 60m; # 设置足够覆盖长请求的超时时间 } - 保存配置后,重启Nginx让修改生效:
sudo systemctl restart nginx
调整完成后,Nginx就会按照你设置的时长等待Django返回响应,不会再提前触发504超时了。
内容的提问来源于stack exchange,提问作者Yusepp
相关产品推荐
相关产品推荐

