【问题标题】:nginx 502 error and 504 errornginx 502错误和504错误
【发布时间】: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

标签: nginx timeout


【解决方案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杀死。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-30
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 2017-10-01
      • 2018-07-02
      相关资源
      最近更新 更多