J'essaie d'installer Madsonic sur ma boîte Ubuntu et d'avoir Nginx devant lui. Le problème est que je reçois toujours cet avertissement lorsque j'essaie de télécharger des trucs via l'interface Web:
31115#0: *14 a client request body is buffered to a temporary file
Cela explique également pourquoi les barres de progression dans la fenêtre de téléchargement ne fonctionnent pas. Voici ma configuration Nginx pertinente:
# 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;
}
J'utilise Nginx 1.9.12 en ce moment.
Ce que j'aimerais réaliser est de faire en sorte que Nginx n'utilise pas du tout les tampons de corps de requête et simplement passer le corps de requête directement à Madsonic, quelle que soit sa taille. Est-ce seulement possible? Si tel est le cas, quelle serait la configuration correcte?
D'autres questions semblent obtenir des réponses sur la façon de définir les tailles de mémoire tampon. Je ne veux pas de tampons. Je veux transmettre directement le corps de la demande à Madsonic.
J'ai eu le même problème lors de la configuration d'un proxy Nginx pour un registre Docker. J'ai fini par faire:
client_max_body_size 0;
proxy_http_version 1.1;
proxy_request_buffering off;
client_max_body_size
devait encore être 0 pour éviter l'erreur, mais watch -n 1 du -hs .
montrait clairement une différence. La mise en mémoire tampon a fait apparaître les données après la demande, aucune mise en mémoire tampon n'a fait apparaître pendant la demande.
proxy_http_version 1.1
est nécessaire en raison du codage en morceaux. Citation des documents Nginx:
Lorsque le codage de transfert par blocs HTTP/1.1 est utilisé pour envoyer le corps de la demande d'origine, le corps de la demande sera mis en mémoire tampon quelle que soit la valeur de la directive, sauf si HTTP/1.1 est activé pour le proxy.