Sepertinya nginx 0.8.35 dapat mendukung penyandian transfer yang terpotong :
Perubahan dengan nginx 0.8.35 01 Apr 2010
*) Change: now the charset filter runs before the SSI filter. *) Feature: the "chunked_transfer_encoding" directive.
Ini bagus, karena saya mencoba untuk mendapatkan perubahan push git melalui proksi reverse nginx ke proses git-http-backend. Git HTTP mengambil keuntungan dari pengkodean transfer chunked untuk alasan efisiensi sisi klien .
Namun, saya tidak bisa membuatnya bekerja. Saya menggunakan nginx 0.8.44 di Debian Lenny dengan permintaan konfigurasikan berikut:
./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
Dan file conf berikut:
server {
server_name example.com;
location / {
proxy_pass http://192.168.0.10;
include /etc/nginx/proxy.conf;
chunked_transfer_encoding on;
}
}
Dan proxy.conf
penampilan saya seperti ini:
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;
(Awalnya saya memposting pertanyaan ini ke Stack Overflow tetapi disarankan lebih tepat untuk Kesalahan Server)
Jawaban:
Ini adalah pertanyaan lama, saya tahu, tetapi muncul untuk mencari masalah (yang saya habiskan pada sore hari untuk menyelesaikannya). Komentar Martin F memberi saya cukup petunjuk untuk membuatnya bekerja!
Caranya adalah dengan mengatur
proxy_buffering off;
di blok lokasi Anda. Dengan anggapan bahwa server hulu Anda mengirim kembali respons yang terpotong, ini akan menyebabkan nginx mengirim potongan individual kembali ke klien - bahkan melakukan gzip dengan cepat jika Anda mengaktifkan kompresi gzip output.Perhatikan bahwa mematikan buffering mungkin memiliki kelemahan lain, jadi jangan membabi buta mematikan buffering tanpa memahami alasannya.
sumber
Saya sarankan mengedit pertanyaan Anda untuk menjelaskan. Ada perbedaan besar antara permintaan chunk dan respons chunk. Jawaban John Dalton membahas yang terakhir. Git melakukan keduanya.
Nginx saat ini tidak mendukung permintaan POST chunked dan posting ini muncul tinggi dalam hasil pencarian pada topik. Permintaan POST chunked digunakan ketika Anda tidak tahu jumlah data yang diunggah sebelumnya dan sering digunakan oleh ponsel.
Satu-satunya solusi yang saya temukan adalah ini:
http://wiki.nginx.org/HttpChunkinModule
Sayangnya itu membutuhkan kompilasi ulang nginx karena nginx tidak mendukung modul yang dapat dimuat.
sumber
Dalam kasus saya ... saya mencoba banyak hal dan akhirnya hanya perlu menambah konfigurasi
Dan itu berhasil ...
sumber
proxy_set_header Connection "";
... jawaban asli dari -> forum.nginx.org/read.php?2,247883,247883#msg-247883Jawaban lain dulu valid, tetapi ini adalah pertanyaan lama.
Sepertinya Chunked Transfer didukung per nginx 1.3.9 [1], yang dirilis pertengahan 2013 saya pikir.
[1] http://wiki.nginx.org/HttpChunkinModule
sumber