Estoy tratando de configurar Madsonic en mi caja de Ubuntu y hacer que Nginx se ejecute delante de él. El problema es que sigo recibiendo esta advertencia cuando intento cargar cosas a través de la interfaz web:
31115#0: *14 a client request body is buffered to a temporary file
Esto también explica por qué las barras de progreso en la ventana de carga no funcionan. Aquí está mi configuración relevante de 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;
}
Estoy usando Nginx 1.9.12 en este momento.
Lo que me gustaría lograr es hacer que Nginx no use buffers de cuerpo de solicitud en absoluto y simplemente pasar el cuerpo de solicitud directamente a Madsonic, independientemente de su tamaño. ¿Es esto posible? Si es así, ¿cuál sería la configuración correcta?
Parece que se responden otras preguntas con formas de establecer los tamaños del búfer. No quiero ningún tampón. Quiero pasar directamente el cuerpo de la solicitud a Madsonic.
Respuestas:
Tuve el mismo problema al configurar un proxy Nginx para un registro Docker. Terminé haciendo:
client_max_body_size
Todavía tenía que ser 0 para evitar el error, perowatch -n 1 du -hs .
claramente mostraba una diferencia. El almacenamiento en búfer hizo que los datos aparecieran después de la solicitud, ningún almacenamiento en búfer lo hizo aparecer durante la solicitud.proxy_http_version 1.1
es necesario debido a la codificación fragmentada. Cita de los documentos de Nginx:fuente