Я пытаюсь настроить Мадсоник на моем ящике Ubuntu и запустить Nginx перед ним. Проблема в том, что я продолжаю получать это предупреждение, когда пытаюсь загрузить материал через веб-интерфейс:
31115#0: *14 a client request body is buffered to a temporary file
Это также объясняет, почему индикаторы выполнения в окне загрузки не работают. Вот моя соответствующая конфигурация 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;
}
Сейчас я использую Nginx 1.9.12.
Я хотел бы добиться заставить Nginx вообще не использовать буферы тела запроса и просто передайте тело запроса прямо в Madsonic, независимо от размера. Это вообще возможно? Если да, то какой будет правильная конфигурация?
На другие вопросы, кажется, есть ответы на вопросы о способах установки размеров буфера. Мне не нужны буферы. Я хочу напрямую передать тело запроса в Madsonic.
У меня была такая же проблема с настройкой прокси Nginx для реестра Docker. В итоге я сделал:
client_max_body_size 0;
proxy_http_version 1.1;
proxy_request_buffering off;
client_max_body_size
по-прежнему должен был быть 0, чтобы предотвратить ошибку, но watch -n 1 du -hs .
ясно показал разницу. Буферизация заставляла данные появляться после запроса, а никакая буферизация не заставляла их появляться во время запроса.
proxy_http_version 1.1
необходимо из-за фрагментированного кодирования. Цитата из документов Nginx:
Когда для отправки исходного тела запроса используется кодирование фрагментированной передачи HTTP / 1.1, тело запроса будет буферизовано независимо от значения директивы, если HTTP / 1.1 не включен для проксирования.