SOLUCION al ERROR upstream timed out (110: Connection timed out) while reading response header from upstream

Hoy vamos a explicar la solución del ERROR «upstream timed out (110: Connection timed out) while reading response header from upstream».

 

Cuando este error aparece en el LOG de ERRORES de un determinado dominio podemos tener un problema.

El error que aparece se produce porque nginx (proxy inverso)  no es capaz de recibir respuesta desde una capa inferior, en tu caso apache.

El primer paso en cualquier error del sería intentar solucionar Intenta optimizar la configuración del servidor apache pero en muchos casos esto no soluciona el error.

Los errores que aparecen son del tipo:

[error] 23178#23178: *1390 upstream timed out (110: Connection timed out) while reading response header from upstream, client:  , server: xxxxxx.com, request: "GET /xxxxxxxx  HTTP/1.1", upstream: "https://xxxxxxxxx", host: "www.xxxxxxxx.com"

 

En este caso se estaba retrasando una petición por GET de una url muy pesada (mas concretamente un sitemap con miles de urls)

La solución mas sencilla es editar el archivo nginx.conf y añadir los siguientes parámetros dentro del apartado http{ :

proxy_connect_timeout 1200s;
proxy_send_timeout 1200s;
proxy_read_timeout 1200s;
fastcgi_send_timeout 1200s;
fastcgi_read_timeout 1200s;

 

En nuestro caso es un servidor con Centos 7 y panel de control VestaCP, por lo que el archivo se puede modificar directamente desde VestaCP o accediendo a

/etc/nginx/nginx.conf

 

así nuestro apartado Proxy settings ha quedado

# Proxy settings
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
# proxy_connect_timeout 90;
# proxy_send_timeout 90;
# proxy_read_timeout 90;

proxy_connect_timeout 1200s;
proxy_send_timeout 1200s;
proxy_read_timeout 1200s;
fastcgi_send_timeout 1200s;
fastcgi_read_timeout 1200s;

proxy_buffers 32 4k;

Es decir, le hemos dado 1200 segundos a todos los timeout de NGINX por lo que no debemos tener mas este problema.

 

Otra opción es añadir estos parametros a

/etc/nginx/conf.d/timeout.conf

y que cargue los parametros desde ahi.

Con esto recargue la configuración de Nginx con el comando: service nginx reload (o equivalentemente, ejecute el comando: nginx -s reload ) y listo, ERROR SOLUCIONADO.

 

Si te ha servido, por favor comenta y comparte.

 

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *