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

使用Formidable的Strapi CMS上传超1分钟大文件出现Socket hang up错误如何解决

Strapi CMS 大文件上传超时ECONNRESET错误解决方案

问题特征

上传文件在1分钟内完成时流程正常,超过1分钟后Postman返回ECONNRESET错误,服务端日志输出如下报错,请求耗时刚好超过60秒返回500:

0|cms  | 2021-10-04T06:28:03:     at IncomingMessage.<anonymous> (/var/cms/node_modules/formidable/lib/incoming_form.js:122:19)
0|cms  | 2021-10-04T06:28:03:     at IncomingMessage.emit (events.js:314:20)
0|cms  | 2021-10-04T06:28:03:     at abortIncoming (_http_server.js:535:9)
0|cms  | 2021-10-04T06:28:03:     at socketOnClose (_http_server.js:528:3)
0|cms  | 2021-10-04T06:28:03:     at Socket.emit (events.js:326:22)
0|cms  | 2021-10-04T06:28:03:     at TCP.<anonymous> (net.js:673:12)
0|cms  | 2021-10-04T06:28:03: [2021-10-04T06:28:03.363Z] debug POST /upload (60004 ms) 500

该问题本质是服务端、上传库、反向代理、客户端多层级的默认60秒超时限制,导致超过时长的上传请求被主动断开连接。

修复步骤

  • 调整Node.js服务默认请求超时
    在Strapi项目根目录的config/server.js文件中添加服务超时配置,按需设置时长(以下示例为10分钟):
module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  server: {
    // 请求超时时间,单位为毫秒
    timeout: 600000,
    keepAliveTimeout: 600000,
  },
  admin: {
    auth: {
      secret: env('ADMIN_JWT_SECRET'),
    },
  },
});
  • 调整Formidable上传库配置
    在Strapi项目根目录的config/plugins.js中修改上传插件配置,同时调整文件大小限制和超时时间:
module.exports = {
  upload: {
    config: {
      providerOptions: {
        formidable: {
          // 最大上传文件大小,示例为1GB,按需调整
          maxFileSize: 1024 * 1024 * 1024,
          // 上传超时时间,单位为毫秒
          timeout: 600000,
          keepExtensions: true,
        },
      },
    },
  },
};
  • 调整反向代理超时配置(如有)
    如果使用Nginx等反向代理托管Strapi服务,需要修改代理配置避免中间层断开连接,Nginx示例配置如下:
server {
    listen 80;
    server_name your-domain.com;
    
    # 允许最大上传1GB文件
    client_max_body_size 1G;
    
    location / {
        proxy_pass http://127.0.0.1:1337;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
        
        # 代理超时配置,单位为秒
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        send_timeout 600;
    }
}

修改完成后执行nginx -s reload重载配置即可生效。

  • 调整Postman客户端超时配置
    打开Postman设置 -> 通用(General)页,将请求超时(Request timeout(in ms))设置为0(无限制)或者大于预期上传时长的数值,避免客户端主动终止请求。

所有配置修改完成后重启Strapi服务,再进行大文件上传测试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 01:18:03