NGINX + Kestrel - Невозможно загружать файлы в формате multipart / formdata.

У меня есть приложение .NET Core с формой для загрузки файлов. Он отлично работает в IIS, но когда я развертываю Nginx (как обратный прокси-сервер) в Ubuntu, время загрузки файлов истекает или возникает ошибка неверного шлюза. Я не вижу, где я могу исследовать проблему дальше, журналы доступа nginx и выходные данные Kestrel не очень полезны.

Вот моя конфигурация nginx, я подозреваю, что он не передает данные в Kestrel

location / {
    proxy_pass http://dotnet;
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Connection keep-alive;

Расстраивает то, что, несмотря на выдачу 504 и 60 секунд для завершения операции загрузки небольшого файла, файл все равно попадает на сервер.

Какой вариант конфигурации nginx мне не хватает? Я подозреваю, что пустельга не отправляет HTTP-ответ на nginx.


person Seamus    schedule 18.06.2017    source источник


Ответы (1)


Чтобы ответить на свой вопрос. Проблема заключалась в заголовке соединения "keep alive" WebApi, который обрабатывал загрузку файла.

В проекте, над которым я работаю, используются Websockets и WebApis. Обычно эти две вещи несовместимы - код веб-сокета требует постоянного подключения к серверу (через заголовок «keep alive»), тогда как webapi - нет. Ответ WebApi никогда не получался из-за заголовка «сохранить активность». Я создал правило для обработки трафика WebApi как обычного, не поддерживающего "сохранение активности", и проблема решилась сама собой.

person Seamus    schedule 26.06.2017
comment
Я столкнулся с той же проблемой, не могли бы вы дать конфигурацию? - person Ascar; 16.05.2020