3

我有一个 .NET Core 应用程序,它有一个用于上传文件的表单。它在 IIS 中运行良好,但是当我在 Ubuntu 上部署到 Nginx(作为反向代理)时,文件上传超时或导致网关错误。我无法看到我可以在哪里进一步调查问题,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 配置选项?我怀疑红隼没有向 nginx 提供 http 响应。

4

1 回答 1

2

回答我自己的问题。问题在于处理文件上传的 WebApi 的“保持活动”连接标头。

我正在从事的项目使用 Websockets 和 WebApis。通常,这两件事不会一起发生——websocket 代码需要一个持续的服务器连接(通过“保持活动”标头),而 webapi 不需要。由于“保持活动”标头,WebApi 响应从未有过。我创建了一条规则,将 WebApi 流量视为正常的非“保持活动状态”,问题自行解决。

于 2017-06-26T11:18:13.177 回答