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错误的主要内容,如果未能解决你的问题,请参考以下文章