Рейтинг:0

Ошибка загрузки больших файлов (> 2 ГБ) через обратный прокси-сервер nginx в контейнер

флаг za

Я запускаю приложение в контейнере докера (https://github.com/filebrowser/filebrowser/), в которые я пытаюсь загрузить очень большие (> 2) ГБ файлы. Контейнер предоставляет приложение через нестандартный порт на локальном хосте, к которому я подключаюсь через обратный прокси-сервер (чтобы я мог запускать несколько приложений на одном компьютере). Проблема в том, что когда я загружаю файл размером более 2097152 байт, он выдает ошибку. Я вижу, что файлы полностью загружены в nginx и что он частично доходит до контианизированного приложения, но затем долго зависает на 2097152 байтах, прежде чем выдать ошибку, в результате чего контейнеризованное приложение выдает неожиданную ошибку EOF. Я подозреваю, что что-то не так с nginx, потому что, когда я напрямую загружаю файл в контейнерное приложение, он работает нормально. Я пытался добавить различные директивы в конфигурацию nginx и зашел в тупик. Моя конфигурация nginx для сайта:

сервер {
    имя_сервера пример.com;
    client_max_body_size 30 г;
    proxy_buffer_size 1024 КБ;
    proxy_buffers 4 1024k;
    proxy_busy_buffers_size 1024 КБ;
    proxy_max_temp_file_size 10000 м;
    proxy_connect_timeout 10000;
    proxy_send_timeout 10000;
    proxy_read_timeout 10000;
    send_timeout 10000;
    client_header_timeout 10000;
    client_body_timeout 10000;
    
    место расположения / {
    прокси_пароль http://localhost:8088/;
    прокси_http_версия 1.1;
    proxy_cache_bypass $http_upgrade;

    proxy_set_header Обновить $http_upgrade;
    proxy_set_header Соединение "обновление";
    proxy_set_header Хост $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-Proto $ схема;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Port $server_port;

    proxy_connect_timeout 10000 с;
    proxy_send_timeout 10000 с;
    proxy_read_timeout 10000 с;
    }}

Ошибка, которую я получаю в nginx:

14.04.2022 20:26:56 [ошибка] 3286524#3286524: *13184 connect() не удалось (111: Отказ в соединении) при подключении к восходящему каналу, клиент: xxx.xxx.xxx.xxx, сервер: example.com, запрос: "POST /api/resources/Fedora-KDE-Live-x86_64-35-1.2.iso?override=false HTTP/1.1", восходящий поток: "http://[::1]:8088/api/resources/ Fedora-KDE-Live-x86_64-35-1.2.iso?override=false", хост: "example.com", реферер: "https://example.com/files/" 

Редактировать: после большого количества копаний кажется, что решение состояло в том, чтобы удалить proxy_buffer_size, proxy_buffers, и proxy_busy_buffer_size и добавить proxy_request_buffer нет; Я не знаю, почему это работает, но это работает.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.