Nginx 502错误和504错误

5

我的服务器是node.js,使用nginx作为反向代理。

现在我必须执行一个耗时的https请求,但总是收到504网关超时错误。nginx/error.log显示:
"upstream timed out"

所以我改变了nginx配置如下:
proxy_read_timeout 600;
proxy_connect_timeout 600;
client_max_body_size 32M;
client_body_buffer_size 512k;
proxy_send_timeout 600;
proxy_buffers 32 4k;
这次就不会有504错误了,但却变成502错误,并且nginx/error显示:
"upstream prematurely closed connection"
并且我发现此错误只会在开始请求后120秒后出现。
我的请求过程肯定需要更长时间,因为它将执行一个耗时的mysql查询。

所以我不知道如何摆脱502错误。


很高兴能够帮到您!您可以将答案标记为“已接受”吗?谢谢:D - Mihai Ionescu
2个回答

7

0

你一开始得到了 504 错误,那是因为配置错误。然后你修复了它。

接着你又得到了 502 错误,通常意味着服务器宕机或读取超时,因为限制了读取时间。

两种方式:

1、将客户端的 HTTP 读取时间调大,或者调整 Nginx 允许的最大读取时间限制,通常选择前者。

2、优化请求中的 SQL。通常情况下,2 分钟太长了,可能会被 MySQL 终止。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接