2017-06-18 172 views
2

我有一個.NET Core應用程序,它具有上傳文件的窗體。它在IIS中正常工作,但是當我在Ubuntu上部署到Nginx(作爲反向代理)時,文件上傳超時或導致錯誤的網關錯誤。我無法看到我可以進一步調查問題的位置,nginx訪問日誌和Kestrel的輸出不是很有幫助。NGINX + Kestrel - 無法上傳multipart/formdata中的文件

這裏是我的nginx的配置,我懷疑它不是將數據傳遞到紅隼

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配置選項?我懷疑那個紅隼不提供對nginx的http響應。

回答

2

回答我自己的問題。問題出在處理文件上傳的WebApi的「keep alive」連接頭上。

我正在使用的項目使用Websockets和WebApis。一般來說,這兩件事並不一致 - websocket代碼需要一個連續的服務器連接(通過「keep alive」標題),而webapi則不需要。 WebApi響應從來沒有因爲「保持活躍」標題。我創建了一條規則,將WebApi流量視爲正常的非「保持活動」,並且問題自行解決。