AWS Nginx“从上游读取响应标头时上游过早关闭连接”

Posted

技术标签:

【中文标题】AWS Nginx“从上游读取响应标头时上游过早关闭连接”【英文标题】:AWS Nginx "upstream prematurely closed connection while reading response header from upstream" 【发布时间】:2018-09-21 13:25:24 【问题描述】:

我使用 AWS:ELB(经典)→ EC2(使用 Node.js)

问题。 有时某些请求会返回 502 Bad Gateway 错误。在 nginx 错误日志中,我看到“从上游读取响应标头时上游过早关闭连接”错误。

不是超时问题。 此错误发生在 Node.js 应用程序处理此请求的同一秒。因此,由于响应时间长,这不是超时问题。

客户端不会中断连接。 我尝试以编程方式发出请求(以确保客户端不会中断连接)。有时也会出现同样的错误,而测试客户端应用程序从 Ngnix 收到 502 错误的响应。

谁可以关闭连接,为什么? 如何解决这个问题?

【问题讨论】:

你试过这个设置proxy_ignore_client_abort on; 吗? 运气好吗?我面临同样的问题,立即得到错误 【参考方案1】:

谁可以关闭连接,为什么? Nginx 的该错误表明连接已被您的上游服务器关闭(即“node.js”) 您可以通过为代理设置更高的超时值来解决此问题:

location / 
    proxy_read_timeout 300s;
    proxy_connect_timeout 75s;
    proxy_pass http://localhost:3000;

文档:https://nginx.org/en/docs/http/ngx_http_proxy_module.html

【讨论】:

以上是关于AWS Nginx“从上游读取响应标头时上游过早关闭连接”的主要内容,如果未能解决你的问题,请参考以下文章

我是不是需要 AWS ECS 中带有 nginx 的 AWS 负载均衡器?

AWS 部署 NGINX 连接被拒绝用于 Node.JS 项目

无法使用 Forge、nginx 和 AWS 连接到 Laravel Websocket

nginx、aws 和 cloudflare 的 cors 问题

aws弹性beantalk上的nginx扩展

AWS ECS 使用 docker 和 nginx,如何将我的 nginx 配置放入容器中?