Yo uso AWS: ELB (clásico) → EC2 (con Node.js)
Problema. A veces, algunas solicitudes devuelven el error 502 Bad Gateway. En el registro de errores de Nginx, veo el error "conexión ascendente prematuramente cerrada al leer el encabezado de respuesta desde el flujo ascendente".
No es un problema de tiempo de espera. Este error ocurre en el mismo segundo en que esta solicitud es manejada por la aplicación Node.js. Por lo tanto, no es un problema de tiempo de espera debido a la larga respuesta.
El cliente no interrumpe la conexión. Traté de hacer una solicitud programáticamente (para asegurarme de que el cliente no interrumpa la conexión). Y a veces recibía el mismo error, mientras que la aplicación cliente de prueba recibía una respuesta con el error 502 de Ngnix.
¿Quién puede cerrar la conexión y por qué? ¿Cómo arreglar este problema?
¿Quién puede cerrar la conexión y por qué? Ese error de Nginx indica que la conexión fue cerrada por su servidor ascendente (es decir, "node.js"). Puede resolver esto configurando un valor de tiempo de espera más alto para el proxy:
location / { proxy_read_timeout 300s; proxy_connect_timeout 75s; proxy_pass http://localhost:3000; }
Documentación: https://nginx.org/en/docs/http/ngx_http_proxy_module.html