nginx 502错误和504错误

Posted

技术标签:

【中文标题】nginx 502错误和504错误【英文标题】:nginx 502 error and 504 error 【发布时间】:2014-12-14 00:10:49 【问题描述】:

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

现在我必须执行一个耗时的 https 请求,但我总是收到 504 Gateway Time-out 错误。和 nginx/error.log 说: “上游超时”

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

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

【问题讨论】:

很高兴我能帮上忙!您能否将答案标记为“已接受”?谢谢:D 【参考方案1】:

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

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

希望这会有所帮助。

【讨论】:

【参考方案2】:

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

那么你得到了 502,这通常意味着由于读取时间有限,服务器已关闭或读取超时。

两种方式:

1、调大你的客户端http读取时间,或者Nginx允许的最大化读取时间限制,一般是前者。

2、优化请求中的sql。 2分钟太长一般会被Mysql杀死。

【讨论】:

以上是关于nginx 502错误和504错误的主要内容,如果未能解决你的问题,请参考以下文章

http的500,502,504错误

Nginx提示502和504错误的终极解决方案

nginx自定义500,502,504错误页面无法跳转

nginx自定义500,502,504错误页面无法跳转

nginx http 502 503 504区别 · T

502错误和504错误