NGINX + Kestrel – Impossible de télécharger des fichiers dans multipart / formdata

J’ai une application .NET Core qui a un formulaire pour télécharger des fichiers. Cela fonctionne bien dans IIS, mais lorsque je déploie sur Nginx (en tant que proxy inverse) sur Ubuntu, le téléchargement des fichiers expire ou entraîne une erreur de passerelle incorrecte. Je ne suis pas en mesure de voir où je peux approfondir le problème, les journaux d’access nginx et la sortie de Kestrel ne sont pas très utiles.

Voici ma configuration nginx, je soupçonne qu’elle ne transmet pas les données à 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; 

Ce qui est frustrant, c’est que, malgré un délai de 504 et 60 secondes pour effectuer une opération de téléchargement d’un petit fichier, le fichier parvient toujours au serveur.

Quelle option de configuration nginx me manque-t-elle? Je soupçonne que Kestrel ne fournit pas de réponse http à nginx.

Pour répondre à ma propre question. Le problème était lié à l’en-tête de connexion “keep alive” du WebApi qui gérait le téléchargement du fichier.

Le projet sur lequel je travaille utilise Websockets et WebApis. Généralement ces deux choses ne vont pas de pair – le code websocket nécessite une connexion constante au serveur (via l’en-tête “keep alive”) alors que le webapi ne le fait pas. La réponse WebApi n’a jamais été due à l’en-tête “keep alive”. J’ai créé une règle pour traiter le trafic WebApi comme non normal et pour que le problème soit résolu.