nginx 502错误和504错误

时间:2014-10-18 15:36:24

标签: nginx timeout

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

现在我必须做一个耗时的https请求,但我总是得到504网关超时错误。和nginx / error.log说:
“上游超时”

所以我将nginx conf更改为:
             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 /错误说:
“上游过早关闭连接”
我发现错误将在我开始120s的请求后出现 我的请求过程肯定会超过120秒,因为它会做一个耗时的mysql查询。

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

2 个答案:

答案 0 :(得分:5)

根据您的描述,您的问题现在在服务器上。您需要在nginx和Web服务器上设置超时。 默认情况下,节点的默认超时为2分钟。

查看server.setTimeout选项:http://nodejs.org/api/http.html#http_server_settimeout_msecs_callback

希望这有帮助。

答案 1 :(得分:0)

起初您得到504,这是因为配置错误。然后,您将其修复。

然后您得到502,这通常意味着服务器由于读取时间有限而关闭或读取超时。

两种方式:

1,调整客户端的HTTP阅读时间,或者调整Nginx允许的最大阅读时间限制,通常是前者。

2,优化您的请求中的sql。 2分钟过长通常可能会被Mysql杀死。