Здравствуйте. У меня фронтенд на 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 ответов

79 просмотров

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

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 Автор вопроса

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

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

Hi! Could you please upvote my new notebook? thanks a lot. https://www.kaggle.com/code/melissamonfared/anime-character-generation-dsgan-gan
məru
4
upvote plz https://www.kaggle.com/code/bassetkerouche/swapping-face?scriptVersionId=207300096
benkerrouche Statoinary
1
-- Привет всем. -- Есть csv, проблема в том что он содержит очень много повторов по столбцам и по строкам. -- Решил перекинуть это в базу данных, чтобы было проще. Но я не ша...
Oleg Ivanov
1
Как считаете - вопрос на собесе: «Как быстрее всего запустить ec2 машину в aws (в чистом аккаунте) и показать вывод от любой команды с нее» не очень ли сложный для условного м...
Sergey
50
Господа, у меня вопрос. Что вообще такое этот ваш data science и data scientists? А то гуглю, а мне какую-то расплывчатую фигню говорят.
Inkosta
44
Hi could you please help me with my two new projects? https://www.kaggle.com/code/hesankazemnia/rice-image-classification-cnn-pytorch https://www.kaggle.com/code/hesankazemnia...
Hesan
6
Исходя из ваших комментариев, получается, что чтобы получить марты в CH из данных в PG, неправильно тянуть сырые данные в CH и там их обрабатывать, лепить справочники и джойни...
unhingedlunatic
42
hi, Can you upvote? https://www.kaggle.com/code/durjoychandrapaul/rag-q-a-system-by-langchain-huggingface-for-pdf?scriptVersionId=204704280
A
1
Could you upvote and comment please? https://www.kaggle.com/code/tatianapetrushkevich/beginner-images https://www.kaggle.com/code/tatianapetrushkevich/python-for-beginners1 ...
Tazziyana
7
Коллеги, приветствую! Появилась не совсем тривиальная задача реализовать в nginx редирект HTTPS —> HTTP. Да, именно так, а не наоборот. Мы разрабатываем embedded устройство,...
Никита
24
Карта сайта