2011-01-26 15 views
24

tengo error en error.log nginx:cliente cerró prematuramente la conexión al enviar al cliente, en nginx

2010/12/05 17:11:49 [info] 7736#0: *1108 client closed prematurely connection while sending to client, 
client: 188.72.80.201, server:***.biz, request: "GET /forum/ HTTP/1.1", 
upstream:"http://***:3000/forum/", host: "***.biz" 

tengo 500 código de respuesta en cada sitio. ¿Cómo puedo arreglar esto?

Gracias.

+0

que fueron capaces de encontrar una solución a este problema? – jithujose

+0

Quizás esta ayuda: ninguna de las respuestas funcionó para mí. Cambié a otra computadora e intenté acceder a la dirección HTTPS y funcionó. El problema es del lado del cliente o algo almacenado en caché en el servidor. – arsenik

Respuesta

6

He descubierto que si se apaga la memoria intermedia de proxy ayuda

http { 
    proxy_buffering off; 
... 
} 

Es probable que los tampones son demasiado pequeños o menos. Después de cambiar el tamaño de la memoria intermedia funciona agradable

proxy_buffering on; 
proxy_buffer_size 8k; 
proxy_buffers 2048 8k; 
8

Configuración proxy_ignore_client_abort on; podría ayudarle.

+2

esto lo hizo por mí – WuTheFWasThat

+0

esto también me funciona. Pulgares hacia arriba. Recuerde configurarlo dentro del bloque http en /etc/nginx/nginx.conf. No puedo hacer que funcione cuando lo puse bajo el bloque de servidor –

+2

¿Alguien quiere explicar por qué esto lo solucionaría? – cdmckay

2

Tuve el mismo problema e investigué sobre él. En mi caso, esto solo ocurre con los navegadores Webkit (Chrome). Abren conexiones de manera optimista con más conexiones de las que requieren si solo cargas un único recurso. En tal caso, el exceso de conexión se cierra desvergonzadamente o al menos sin enviar ningún verbo HTTP sobre él. Esto lleva al error mencionado en nginx.

Respecto al # 1 respuesta: Ninguna de las soluciones propuestas ayuda que es lógica, ya que esto no tiene nada que ver con el proxy.

En relación con el n. ° 2 respuesta: proxy_ignore_client_abort on; Hace no ayuda en mi prueba.

Por desgracia, he encontrado otra solución que utilizar

error_log fuera;

-17

He empezado a ver este mensaje cuando se ha cambiado error_log de warn a debug. Revertir resolvió el problema.

+21

¿No sería eso solo ocultar el problema? – mr2ert

+31

hillarious answer –

+6

eliminar nginx también habría sido una solución. – w00t

1

Tuve el mismo problema, encontré que nginx cierra la conexión debido a la configuración send_timeout. Aumenté y está arreglado.

http 
{ 
send_timeout 20; 
... 
} 
+4

... pero el valor predeterminado es en realidad 60 segundos: http://nginx.org/en/docs/http/ngx_http_core_module.html#send_timeout – Kzqai

-2

definitivamente resolver el problema.

+1

explique su respuesta brevemente. donde OP necesita configurarlo, etc., para que sea útil también para otros. – Ravimallya

+0

Sí, una explicación sería útil. – fraxture

8

I abordado este problema por mí mismo durante largas horas de hoy y se encontró una solución:
Tenga en cuenta que esta revisión sólo le afecta al utilizar equilibrador (s) de carga

Compruebe el equilibrador de carga de tiempo de espera de inactividad. Tenía ELB timeout inactivo establecido en 60 segundos (predeterminado) y como la solicitud se colgó, cerró la conexión después de un tiempo determinado. Pero como el ELB está antes de nginx, nginx está registrando que el "cliente" (en este caso ELB) está cerrando la conexión.

Así que si usted está utilizando ELB, vaya a:
EC2 -> equilibradores de carga -> Seleccionar la adecuada -> desplazarse hacia abajo en la descripción y cambiar de espera en inactividad si está utilizando otros equilibradores de carga, compruebe su configuración y tiempos de espera.

También hay que tener en cuenta que se le podría tener que cambiar los tiempos de espera de proxy etc.

Cuestiones relacionadas