Próbuję skonfigurować Madsonic na moim Ubuntu i uruchomić Nginx przed nim. Problem polega na tym, że ciągle otrzymuję to ostrzeżenie, gdy próbuję przesyłać rzeczy przez interfejs sieciowy:
31115#0: *14 a client request body is buffered to a temporary file
To wyjaśnia również, dlaczego paski postępu w oknie przesyłania nie działają. Oto moja odpowiednia konfiguracja Nginx:
# 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;
}
Obecnie używam Nginx 1.9.12.
Chciałbym, aby Nginx w ogóle nie używał buforów treści żądania i po prostu przekazywał treść żądania bezpośrednio do Madsonic, niezależnie od wielkości. Czy to w ogóle możliwe? Jeśli tak, jaka byłaby poprawna konfiguracja?
Wydaje się, że na inne pytania można uzyskać odpowiedzi dotyczące sposobów ustawienia rozmiarów buforów. Nie chcę żadnych buforów. Chcę bezpośrednio przekazać treść żądania Madsonic.
Odpowiedzi:
Miałem ten sam problem z konfiguracją serwera proxy Nginx dla rejestru Docker. Skończyło się na tym, że:
client_max_body_size
wciąż musiał wynosić 0, aby zapobiec błędowi, alewatch -n 1 du -hs .
wyraźnie pokazał różnicę. Buforowanie spowodowało pojawienie się danych po żądaniu, brak buforowania sprawił, że pojawiły się one podczas żądania.proxy_http_version 1.1
jest konieczne z powodu kodowania fragmentarycznego. Cytat z dokumentów Nginx:źródło