Ich versuche Madsonic auf meiner Ubuntu-Box einzurichten und Nginx davor laufen zu lassen. Das Problem ist, dass ich immer wieder diese Warnung erhalte, wenn ich versuche, Inhalte über die Weboberfläche hochzuladen:
31115#0: *14 a client request body is buffered to a temporary file
Dies erklärt auch, warum die Fortschrittsbalken im Upload-Fenster nicht funktionieren. Hier ist meine relevante Nginx-Konfiguration:
# 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;
}
Ich benutze momentan Nginx 1.9.12.
Was ich erreichen möchte, ist, dass Nginx überhaupt keine Anforderungskörperpuffer verwendet und den Anforderungskörper unabhängig von der Größe direkt an Madsonic weiterleitet. Ist das überhaupt möglich? Wenn ja, welche Konfiguration wäre die richtige?
Andere Fragen scheinen mit Möglichkeiten zum Festlegen der Puffergrößen beantwortet zu werden. Ich will keine Puffer. Ich möchte den Anfragetext direkt an Madsonic übergeben.
Antworten:
Ich hatte das gleiche Problem beim Einrichten eines Nginx-Proxys für eine Docker-Registrierung. Am Ende machte ich:
client_max_body_size
musste noch 0 sein, um den Fehler zu verhindern,watch -n 1 du -hs .
zeigte aber deutlich einen Unterschied. Durch die Pufferung wurden die Daten nach der Anforderung angezeigt. Während der Anforderung wurde keine Pufferung durchgeführt.proxy_http_version 1.1
ist wegen Chunked Encoding notwendig. Zitat aus den Nginx-Dokumenten:quelle