30 noviembre 2007

Algo que nginx no puede hacer (aparentemente)

La verdad que no me he puesto a investigar en las listas de correo de nginx, ni rebuscado a fondo en la documentación, pero parece que hay algo que nginx no puede hacer.

Para ciertas peticiones web necesitamos que el servidor responda con el protocolo HTTP/1.0 y no HTTP/1.1 para que el Transfer-Encoding no sea chunked, el servidor hace esto porque comienza a escribir cabeceras antes de poder calcular el tamaño de lo que va a enviar, por eso indica que lo que está enviando está dividido. Es una explicación un poco simple, pero es para tener una cierta idea de por qué lo hacemos.

La explicación completa en inglés aquí.

Después de estar buscándo una solución encontramos cómo se puede hacer en apache de una manera simple.

Utilizamos la directiva BrowserMatch para detectar el navegador, (en nginx también se puede detectar el navegador por supuesto).

Una vez detectado el navegador aplicamos estas directivas:
nokeepalive downgrade-1.0 force-response-1.0


En realidad el nokeepalive no nos debería hacer falta, pero después de varias pruebas nos funcionó con esta configuración, ahora hay que ver por qué con otras configuraciones no funcionaba y para mi lo más importante, si en nginx tenemos manera de cambiar el protocolo a HTTP/1.0.

No hay comentarios: