nginx 504 (Gateway Time-out)

目录

1. 后端处理超时

2. Nginx 代理超时设置不足

3. 服务未响应或崩溃

4. 请求体过大

5. 重启nginx


原本代理服务器用的是微软的Kestrel ,今天给项目换用了nginx,然后有个接口请求报了

(504 Gateway Timeout)

请求发送到了服务端,但服务端未能在规定时间内返回结果(504 Gateway Timeout)。这个错误通常与以下几个问题相关:

1. 后端处理超时
  • 后端 API 执行耗时过长,超过了 Nginx / Kestrel / 反向代理 或 客户端 设置的 timeout 时间。

  • 解决方案:

    • 检查该接口处理图片的逻辑是否可能因图片过大、模型推理耗时过久等导致延迟。

    • 检查后端接口是否设置了合理的超时时间(例如 ASP.NET Core 的 KestrelServerLimits)。

    • 查看日志 Program.cs、控制台或文件中是否出现超时、线程挂起等异常。

2. Nginx 代理超时设置不足
  • Nginx 作为反向代理时,对后端响应设置了太短的超时时间。

  • 解决方案:在 Nginx 配置中加上如下设置:

location /api/ {
    proxy_pass http://localhost:5000;
    proxy_read_timeout 300;
    proxy_connect_timeout 300;
    proxy_send_timeout 300;
}
3. 服务未响应或崩溃
  • 服务程序挂掉了、死循环或卡住。

  • 解决方案:

    • 检查 dotnet run 或部署日志,看是否程序在处理图像过程中报错。

    • 你可以临时在接口里加日志,看是不是到某一步卡住了。

4. 请求体过大
  • 上传的图片过大,而 Kestrel / Nginx / ASP.NET Core 的 RequestSizeLimit 过小。

  • 解决方案:

    • 增加上传大小限制,例如在 ASP.NET Core 中:

app.Use(async (context, next) =>
{
    context.Features.Get<IHttpMaxRequestBodySizeFeature>().MaxRequestBodySize = 104857600; // 100MB
    await next.Invoke();
});
5. 重启nginx
  1. 重启 Nginx:

nginx -s reload

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哦里 哦里哦里给

你的鼓支持是我分享的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值