Nginx: İstek Vücut Tamponlamasını Tamamen Devre Dışı Bırakma


17

Ubuntu kutumda Madsonic'i kurmaya ve önünde Nginx'i çalıştırmaya çalışıyorum. Sorun, web arayüzü üzerinden bir şeyler yüklemeye çalıştığımda bu uyarıyı almaya devam ediyorum:

31115#0: *14 a client request body is buffered to a temporary file

Bu ayrıca yükleme penceresindeki ilerleme çubuklarının neden çalışmadığını da açıklar. İşte benim ilgili Nginx yapılandırmam:

    # proxy the madsonic server here
    location / {
            proxy_pass                      https://madsonic-server/;
            proxy_redirect                  off;
            proxy_buffering                 off;
            proxy_request_buffering         off;
            allow                           all;
            proxy_http_version              1.1;

            proxy_set_header                Host $http_host;
            proxy_set_header                X-Real-IP $remote_addr;
            proxy_set_header                X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header                X-Forwarded-Host $server_name;
            proxy_set_header                X-Forwarded-Proto $scheme;

            client_body_buffer_size         0;
            client_max_body_size            0;
            proxy_max_temp_file_size        0;
            proxy_read_timeout              18000;
            proxy_send_timeout              18000;

            gzip                            off;
    }

Şu anda Nginx 1.9.12 kullanıyorum.

Ne elde etmek istiyorum etmektir Nginx hiç istek vücut tamponlarını kullanmayın yapmak ve sadece boyutu ne olursa olsun, Madsonic doğrudan istek gövdesini geçmektedir. Bu mümkün mü? Öyleyse, doğru yapılandırma ne olurdu?

Diğer sorular, arabellek boyutlarını ayarlama yolları ile yanıtlanıyor gibi görünüyor. Tampon istemiyorum. İstek gövdesini doğrudan Madsonic'e aktarmak istiyorum.


Kapatamazsınız. Yalnızca arabellek boyutunu ayarlayabilirsiniz.
Michael Hampton

@MichaelHampton ama bu açıklama ne olacak ?
rad

Ah, haklısın. Ve kendi sorunuzu cevapladınız, öyle görünüyor.
Michael Hampton

@MichaelHampton iyi, evet, hala bir sebepten dolayı hala kapalı değil :(
rad

Bunda şans var mı? Ben proxy_request_buffering hile yapacak ayarlarına göre dokümanlar aynı sorunu yaşıyorum, ama yine de upload tamponlama.
alejandrodnm

Yanıtlar:


17

Aynı sorun Docker kayıt defteri için bir Nginx proxy kurma vardı. Sonunda şunu yaptım:

client_max_body_size 0;
proxy_http_version 1.1;
proxy_request_buffering off;

client_max_body_sizehatayı önlemek için hala 0 olması gerekiyordu, ancak watch -n 1 du -hs .açıkça bir fark gösterdi. Arabelleğe alma, verilerin istek sonrasında görünmesini sağladı, hiçbir arabelleğe alma istek sırasında görünmedi.

proxy_http_version 1.1yığın kodlama nedeniyle gereklidir. Nginx belgelerinden alıntı:

Özgün istek gövdesini göndermek için HTTP / 1.1 yığınlı aktarım kodlaması kullanıldığında, HTTP / 1.1 proxy için etkinleştirilmedikçe, istek gövdesi yönerge değerinden bağımsız olarak arabelleğe alınır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.