You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS无法直接连接uWSGI:Django后端构建报错求助

解决NextJS构建时uWSGI后端的socket hangup/ECONNRESET问题

问题背景

  • 技术栈:Django后端(uWSGI运行)、NextJS前端
  • uWSGI启动命令:
uwsgi --http 0.0.0.0:3000 -w project.wsgi --master --harakiri=60 --pidfile=uwsgi.pid
  • 核心现象:
    1. npm run build触发Error: socket hang up(错误码ECONNRESET),axios、fetch均出现该问题
    2. 用wget http://my-backend-url/api/v1/same-url-which-produced-errors请求接口完全正常
    3. Docker容器间、本地单主机环境均复现
    4. 曾通过Nginx反向代理uWSGI解决,但希望直接绕过Nginx修复
    5. uWSGI日志存在大量前端未发起的重复请求(单接口重复十次以上)

解决方案

1. 调整uWSGI HTTP服务参数

uWSGI原生HTTP服务器默认配置可能不兼容NextJS构建的请求模式,添加以下参数优化:

uwsgi --http 0.0.0.0:3000 -w project.wsgi --master --harakiri=60 --pidfile=uwsgi.pid \
  --http-keepalive=30 \
  --max-requests=1000 \
  --workers=4 \
  --enable-threads
  • --http-keepalive:开启HTTP长连接,避免频繁建连断连引发的ECONNRESET
  • --max-requests:限制单个worker处理的请求数,防止进程异常导致重复请求
  • --workers:增加worker进程数,提升并发处理能力,避免请求堆积
  • --enable-threads:启用线程支持,适配NextJS构建时的并发请求

2. 修正NextJS请求配置

NextJS构建阶段的默认超时、重试逻辑可能触发异常,修改next.config.js:

module.exports = {
  async rewrites() {
    return [
      {
        source: '/api/:path*',
        destination: 'http://my-backend-url/api/:path*',
      },
    ];
  },
  async headers() {
    return [
      {
        source: '/api/:path*',
        headers: [{ key: 'Connection', value: 'keep-alive' }],
      },
    ];
  },
  httpAgentOptions: {
    keepAlive: true,
    timeout: 60000, // 与uWSGI的harakiri时间匹配
  },
};

若使用axios,手动禁用重试并设置超时:

const apiClient = axios.create({
  baseURL: 'http://my-backend-url/api/v1',
  timeout: 60000,
  retry: false,
  headers: { 'Connection': 'keep-alive' },
});

3. 调整uWSGI的harakiri超时

当前harakiri=60可能过短,导致uWSGI主动终止未完成的请求,临时调高测试:

--harakiri=120

若问题消失,说明原超时配置与NextJS请求处理时长不匹配。

4. 排查uWSGI重复请求原因

检查是否有第三方插件或配置触发自动重试,可临时添加--no-reload参数禁用worker自动重启,或清空uWSGI配置文件中无关的缓存、重试相关参数。


验证步骤

  1. 重启uWSGI服务
  2. 清空uWSGI日志文件
  3. 执行npm run build
  4. 检查日志是否仍有重复请求,以及构建是否成功

内容的提问来源于stack exchange,提问作者Dmitry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:44:52