Es sieht so aus, als ob Nginx 0.8.35 Chunked Transfer Encoding unterstützen könnte :
Änderungen mit nginx 0.8.35 01 Apr 2010
*) Change: now the charset filter runs before the SSI filter. *) Feature: the "chunked_transfer_encoding" directive.
Das ist großartig, weil ich versuche, Push-Git-Änderungen über einen Nginx-Reverse-Proxy zu einem Git-http-Backend-Prozess zu bekommen. Git HTTP nutzt die Chunk-Übertragungscodierung aus Gründen der Effizienz auf der Clientseite .
Ich kann es jedoch nicht zum Laufen bringen. Ich verwende Nginx 0.8.44 unter Debian Lenny mit dem folgenden Aufruf von configure:
./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
Und die folgende conf-Datei:
server {
server_name example.com;
location / {
proxy_pass http://192.168.0.10;
include /etc/nginx/proxy.conf;
chunked_transfer_encoding on;
}
}
Und meine proxy.conf
sieht so aus:
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;
(Ursprünglich habe ich diese Frage in Stack Overflow gepostet , aber es wurde empfohlen, dass sie besser für Serverfehler geeignet ist.)
Antworten:
Ich weiß, das ist eine alte Frage, aber sie ist auf der Suche nach dem Problem aufgetaucht (das ich am Nachmittag zu lösen versucht habe). Martin Fs Kommentar gab mir genug Anhaltspunkte, um es zum Laufen zu bringen!
Der Trick besteht darin,
proxy_buffering off;
in Ihrem Standortblock festzulegen. Angenommen, Ihr Upstream-Server sendet Chunk-Antworten zurück, dann sendet Nginx die einzelnen Chunks zurück an den Client. Wenn Sie die Komprimierung der GZIP-Ausgabe aktiviert haben, können Sie sie sogar sofort gzippen.Beachten Sie, dass das Deaktivieren der Pufferung andere Nachteile haben kann. Deaktivieren Sie die Pufferung also nicht blind, ohne zu wissen, warum.
quelle
Ich schlage vor, Ihre Frage zu bearbeiten, um dies zu klären. Es gibt einen großen Unterschied zwischen Teilanforderungen und Teilantworten. John Daltons Antwort spricht Letzteres an. Git macht beides.
Nginx unterstützt derzeit keine gekapselten POST-Anfragen, und dieser Beitrag ist in den Suchergebnissen zu diesem Thema weit verbreitet. Chunked-POST-Anforderungen werden verwendet, wenn Sie nicht wissen, wie viele Daten im Voraus hochgeladen werden, und sie werden häufig von Mobiltelefonen verwendet.
Die einzige funktionierende Lösung, die ich gefunden habe, ist folgende:
http://wiki.nginx.org/HttpChunkinModule
Leider muss nginx neu kompiliert werden, da nginx keine ladbaren Module unterstützt.
quelle
Auf meinem Fall ... ich versuche eine Menge Dinge und muss schließlich nur zur Konfiguration hinzufügen
Und es funktioniert...
quelle
proxy_set_header Connection "";
... ursprüngliche Antwort von -> forum.nginx.org/read.php?2,247883,247883#msg-247883Andere Antworten waren früher gültig, aber dies ist eine alte Frage.
Chunked Transfers werden anscheinend nach Nginx 1.3.9 [1] unterstützt, das meiner Meinung nach Mitte 2013 veröffentlicht wurde.
[1] http://wiki.nginx.org/HttpChunkinModule
quelle