Parece que nginx 0.8.35 puede admitir la codificación de transferencia fragmentada :
Cambios con nginx 0.8.35 01 abr 2010
*) Change: now the charset filter runs before the SSI filter. *) Feature: the "chunked_transfer_encoding" directive.
Esto es genial, porque estoy tratando de obtener cambios push git a través de un proxy inverso nginx a un proceso git-http-backend. Git HTTP aprovecha la codificación de transferencia fragmentada por razones de eficiencia del lado del cliente .
Sin embargo, no puedo hacer que funcione. Estoy usando nginx 0.8.44 en Debian Lenny con la siguiente invocación de configuración:
./configure \
--sbin-path=/usr/sbin \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--user=www-data \
--group=www-data \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_realip_module
Y el siguiente archivo conf:
server {
server_name example.com;
location / {
proxy_pass http://192.168.0.10;
include /etc/nginx/proxy.conf;
chunked_transfer_encoding on;
}
}
Y mi proxy.conf
aspecto es el siguiente:
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;
client_max_body_size 100M;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
(Originalmente publiqué esta pregunta en Stack Overflow pero se me informó que es más apropiada para la falla del servidor)
Respuestas:
Esta es una vieja pregunta, lo sé, pero surgió en una búsqueda del problema (que pasé la tarde tratando de resolver). ¡El comentario de Martin F me dio una pista suficiente para que funcione!
El truco es establecer
proxy_buffering off;
en su bloque de ubicación. Suponiendo que su servidor ascendente está enviando respuestas fragmentadas, esto hará que nginx envíe los fragmentos individuales de vuelta al cliente, incluso comprimiéndolos sobre la marcha si tiene activada la compresión de salida gzip.Tenga en cuenta que desactivar el almacenamiento en búfer puede tener otras desventajas, por lo tanto, no lo desactive ciegamente sin comprender por qué.
fuente
Sugiero editar su pregunta para aclarar. Hay una gran diferencia entre las solicitudes fragmentadas y las respuestas fragmentadas. La respuesta de John Dalton se dirige a este último. Git hace las dos cosas.
Actualmente, Nginx no admite solicitudes POST fragmentadas y esta publicación aparece alta en los resultados de búsqueda sobre el tema. Las solicitudes POST fragmentadas se utilizan cuando no conoce la cantidad de datos que se cargan por adelantado y los teléfonos móviles la utilizan con frecuencia.
La única solución de trabajo que encontré es esta:
http://wiki.nginx.org/HttpChunkinModule
Desafortunadamente, requiere volver a compilar nginx ya que nginx no admite módulos cargables.
fuente
En mi caso ... pruebo muchas cosas y finalmente solo necesito agregar a la configuración
Y funciona...
fuente
proxy_set_header Connection "";
... respuesta original de -> forum.nginx.org/read.php?2,247883,247883#msg-247883Otras respuestas solían ser válidas, pero esta es una vieja pregunta.
Parece que Chunked Transfers son compatibles con nginx 1.3.9 [1], que fue lanzado a mediados de 2013, creo.
[1] http://wiki.nginx.org/HttpChunkinModule
fuente