Я запускаю приложение в контейнере докера (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 нет;
Я не знаю, почему это работает, но это работает.