Parece que o nginx 0.8.35 pode suportar a codificação de transferência em pedaços :
Alterações no nginx 0.8.35 01 de abril de 2010
*) Change: now the charset filter runs before the SSI filter. *) Feature: the "chunked_transfer_encoding" directive.
Isso é ótimo, porque estou tentando obter alterações push git por meio de um proxy reverso nginx para um processo git-http-backend. O Git HTTP aproveita a codificação de transferência em pedaços por motivos de eficiência do lado do cliente .
No entanto, não consigo fazê-lo funcionar. Estou usando o nginx 0.8.44 no Debian Lenny com a seguinte chamada de configuração:
./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
E o seguinte arquivo conf:
server {
server_name example.com;
location / {
proxy_pass http://192.168.0.10;
include /etc/nginx/proxy.conf;
chunked_transfer_encoding on;
}
}
E minha proxy.conf
aparência é assim:
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, eu postei esta pergunta no Stack Overflow, mas fui avisado que é mais apropriado para a falha do servidor)
Respostas:
Esta é uma pergunta antiga, eu sei, mas surgiu em uma busca pelo problema (que passei a tarde tentando resolver). O comentário de Martin F me deu uma pista suficiente para fazê-lo funcionar!
O truque é definir
proxy_buffering off;
no seu bloco de localização. Assumindo que seu servidor upstream esteja enviando respostas em pedaços, isso fará com que o nginx envie os pedaços individuais de volta para o cliente - até mesmo compactando-os em tempo real se a compactação de saída gzip estiver ativada.Observe que desativar o buffer pode ter outras desvantagens; portanto, não desative cegamente o buffer sem entender o porquê.
fonte
Sugiro editar sua pergunta para esclarecer. Há uma grande diferença entre solicitações em pedaços e respostas em pedaços. A resposta de John Dalton aborda o último. Git faz os dois.
Atualmente, o Nginx não oferece suporte a solicitações de POST em partes e esta postagem mostra alto nos resultados de pesquisa sobre o tópico. As solicitações de POST em partes são usadas quando você não conhece a quantidade de dados que está sendo carregada com antecedência e é frequentemente usada por telefones celulares.
A única solução de trabalho que encontrei é esta:
http://wiki.nginx.org/HttpChunkinModule
Infelizmente, é necessário recompilar o nginx, pois o nginx não suporta módulos carregáveis.
fonte
No meu caso ... eu tento muitas coisas e finalmente só preciso adicionar à configuração
E funciona ...
fonte
proxy_set_header Connection "";
... resposta original a partir de -> forum.nginx.org/read.php?2,247883,247883#msg-247883Outras respostas costumavam ser válidas, mas esta é uma pergunta antiga.
Parece que as transferências em pedaços são suportadas pelo nginx 1.3.9 [1], que foi lançado em meados de 2013, eu acho.
[1] http://wiki.nginx.org/HttpChunkinModule
fonte