Здравствуйте. У меня фронтенд на nuxt3/vue3 на localhost:10010 и бекенд на

rust/actix-web. Был на localhost:10001, по ходу поиска проблемы переместился на 0.0.0.0:10001. Ну и nginx, как прокси между этим всем.
Пытаюсь между фронтендом и бекендом гонять файлы в формате multipart/form-data. Просто XMLHttpRequest, и рисую прогресс бар.
Если размер файла превышает несколько гигабайт, то запрос сперва зависает надолго, потом падает с ошибкой 504 timeout.
Попробовал через Insomnia. По ходу экспериментов выяснил, что прямой запрос к api на порт :10001 не падает, но если делать через nginx, то падает.
Вот конфиг:

server {
listen 80;
server_name _;
root /var/xapi/;
access_log /var/xapi/access.log;
error_log /var/xapi/error.log debug;
client_max_body_size 100000M;

location /favicon.ico {
}

location /xapi {
client_max_body_size 100000M;
proxy_read_timeout 5m;
proxy_connect_timeout 5m;
proxy_send_timeout 5m;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:10001;
}

location /ui {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:10010;
}
}

В чём проблема?

15 ответов

26 просмотров

Что говорит на этот счёт лог ошибок?

Steel-Sword Автор вопроса
Semyon 🇺🇦 Evdokimov
Что говорит на этот счёт лог ошибок?

Если убрать всякий мусор, то такое 2023/09/05 12:08:50 [debug] 184974#184974: *1 http run request: "/url" 2023/09/05 12:08:50 [debug] 184974#184974: *1 http upstream check client, write event:1, "/xapi" 2023/09/05 12:08:50 [debug] 184974#184974: *1 http upstream request: "//xapi" 2023/09/05 12:08:50 [debug] 184974#184974: *1 http upstream send request handler 2023/09/05 12:08:50 [debug] 184974#184974: *1 http upstream send request 2023/09/05 12:08:50 [debug] 184974#184974: *1 http upstream send request body 2023/09/05 12:08:50 [debug] 184974#184974: *1 tcp_nopush 2023/09/05 12:08:50 [debug] 184974#184974: *1 writev: 693 of 693 2023/09/05 12:08:50 [debug] 184974#184974: *1 sendfile: @0 2147479552 2023/09/05 12:08:50 [debug] 184974#184974: *1 sendfile: 2147479552 of 2147479552 @0 2023/09/05 12:29:00 [debug] 184974#184974: *1 http upstream request: "/xapi" 2023/09/05 12:29:00 [debug] 184974#184974: *1 http upstream send request handler 2023/09/05 12:29:00 [debug] 184974#184974: *1 http next upstream, 4 2023/09/05 12:29:00 [debug] 184974#184974: *1 free rr peer 1 4 2023/09/05 12:29:00 [error] 184974#184974: *1 upstream timed out (110: Unknown error) while sending request to upstream, client: 192.168.123.127, server: _, request: "POST /xapi", host: "192.168.9.252", referrer: "http://192.168.9.252/ui/map" 2023/09/05 12:29:00 [debug] 184974#184974: *1 finalize http upstream request: 504 2023/09/05 12:29:00 [debug] 184974#184974: *1 finalize http proxy request 2023/09/05 12:29:00 [debug] 184974#184974: *1 close http upstream connection: 17 2023/09/05 12:29:00 [debug] 184974#184974: *1 http finalize request: 504, "/url" a:1, c:1 2023/09/05 12:29:00 [debug] 184974#184974: *1 http special response: 504, "/url" 2023/09/05 12:29:00 [debug] 184974#184974: *1 HTTP/1.1 504 Gateway Time-out^M

Steel-Sword Автор вопроса
Semyon 🇺🇦 Evdokimov
Что говорит на этот счёт лог ошибок?

а вот actix-web говорит, что файл Incomplete

Steel Sword
а вот actix-web говорит, что файл Incomplete

Ну судя по логам апстрим перестал отвечать.

1. что в логах? 2. backend убери обратно на 127.0.0.1 - нечего его наружу светить 3. proxy_connect_timeout 5m - это какая-то наркомания 4. посмотри через tcpdump на каком шаге соединение ломается

не надо сюда портянок логов, есть pastebin.com

Steel-Sword Автор вопроса
kiosaku
1. что в логах? 2. backend убери обратно на 127.0....

3. Почему наркомания? Я, кстати, это добавил, потому что написано, что дефолтный таймаут у nginx это 30 секунд. За это время 5 гб не перекачаются

Steel-Sword Автор вопроса
Steel-Sword Автор вопроса
Semyon 🇺🇦 Evdokimov
Ну судя по логам апстрим перестал отвечать.

А API утверждает, что файл от nginx пришёл неполный. И мимо nginx работает нормально

Steel Sword
3. Почему наркомания? Я, кстати, это добавил, пото...

5 минут на подключение к upstream-у? там и секунда - много

Steel-Sword Автор вопроса
kiosaku
5 минут на подключение к upstream-у? там и секунда...

Убрал proxy_connect_timeout, добавил proxy_request_buffering off; и всё заработало. Спасибо большое. В чём, интересно, была проблема? Для меня это больше похоже на какой-то рандом

Steel-Sword Автор вопроса
kiosaku
выстави ещё proxy_request_buffering off;

Почему файлы в 1-2 гигабайта проходили, а >4 гб - нет? Даже на 1 гигабайте буфер должен был тыщщу раз заполниться и освободиться, нет разве?

Steel Sword
Убрал proxy_connect_timeout, добавил proxy_request...

убирать не надо, поставь разумное значение, а то сейчас оно у тебя по-умолчанию стало, 60 секунд

Steel-Sword Автор вопроса

Похожие вопросы

Обсуждают сегодня

Всем привет. На руках есть видеопоток с камеры микроскопа, который показывает клетки. (Фото 1). Пытаюсь обвести их квадратами и пронумеровать на картинке. Пока получается...
Semyon
10
Всём доброго времени суток, хотел бы узнать, очень понравилось направление ML и в частности к компьютерному зрению (диплом по распознаванию болячек на растениях) , хотел бы по...
Il'ya King
12
I am reaching out on behalf of my brother, who is currently seeking a data science internship opportunity. He is passionate about data science and has been actively honing his...
Shivam Kumar
3
Всем привет! Ребят подскажите пожалуйста Есть ли различия обработки фото (стоп кадр из видео) и кадра из видео? Сделал поиск контуров и отфильтровал лишнее Но при запуск...
Evgeniy
4
Подскажите, возможно ли без нейросети получить контуры выделяющего объекта, в данным случае авто? Нужно определить не сам авто, а просто объект который выделяется, т.е. темная...
Denis
1
всем привет, есть видео футбольных матчей и необходимо определить какое действие происходит на видео в определённый момент времени. Условно, на 5 секунде игрок сделал пас, на ...
Vadzim _B
1
Hello everyone, ребят, к какому уровню сложности может относиться задачка по отделению облаков от неба для видео? (от 1 до 10,) *в условиях смены времени суток *при неизменно...
Merge
16
Понял) А легковесных моделей для таких задач не встречали? Т.е. что бы не объекты определял, а цветовые пятна, если так можно назвать.
Denis
3
Добрый вечер, подскажите, есть ли какие-то курсы/книги по openCV для c++, а то много где находил ссылка на: https://robocraft.ru/opencv Но сам курс 2010-го года, и там мало ...
Никита Мельников
2
Для подстче машин которые проходят линию использую yolov3 и сортинг алгоритм. Один фрейм обрабатывает 1.6секунд. Как можно ускорить или посоветуйте что можно использовать вмес...
Nurdaulet
3
Карта сайта