GitPush失败:HTTP413RequestEntityTooLarge的问题排查和完整解决方法

作者:

文章目录
  • 在使用 Git 推送包含较大编译产物的项目时,你是否遇到过 HTTP 413 Request Entity Too Large 错误?这通常并不是 Git 的问题,而是 Web 服务器(如 Nginx)拒绝接收大体积请求。本文将通过一个完整案例,演示如何使用 curl 工具验证服务器限制,最终通过宝塔面板修改 Nginx 配置解决问题,实现大文件 Git 推送成功。适用于使用 Gitblit、Gitea 或任何基于 Nginx 部署的私有 Git 服务环境。
  • 在使用 Git 推送一个包含编译产物的仓库时,推送失败,报错如下: error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 send-pack: unexpected disconnect while reading sideband packet fatal: the remote end hung up unexpectedly Git GUI (SourceTree) 中显示: POST git-receive-pack (287021804 bytes) error: RPC failed; HTTP 413
  • HTTP 413 代表“请求体过大”,通常是服务端拥有上传大小限制。可能的源有两个: Git 服务本身限制 (Gitblit/Gitea/GitLab) Web 服务器如 Nginx 或 Apache 进行的前置限制 为了确认问题所在,我们进行下面的演示性测试。
  • 配置重载后,再次执行 Git push,推送包大小达 274MB,已成功,问题解决。
  • 操作步骤 结果 curl 模拟上传 bigfile.test 报 413,确认 Nginx 限制 curl 上传 smallfile.test 成功返回 Gitblit 页面 修改 Nginx 配置 重载后 push 成功
  • 目录
    • 引言
    • 一、问题描述
    • 二、初步分析
    • 三、演示测试: curl 模拟上传
      • 步骤1: 创建大文件 (300MB)
      • 步骤2: 使用 curl.exe 模拟 POST 上传
      • 结果:
      • 步骤3: 创建小文件 (1KB)
    • 四、解决方案:修改 Nginx 配置 (宝塔面板)
      • 操作步骤
      • 实际配置示意图
    • 五、重试 Git 推送
      • 六、总结与建议
        • 建议:

      在使用 Git 推送包含较大编译产物的项目时,你是否遇到过 HTTP 413 Request Entity Too Large 错误?这通常并不是 Git 的问题,而是 Web 服务器(如 Nginx)拒绝接收大体积请求。本文将通过一个完整案例,演示如何使用 curl 工具验证服务器限制,最终通过宝塔面板修改 Nginx 配置解决问题,实现大文件 Git 推送成功。适用于使用 Gitblit、Gitea 或任何基于 Nginx 部署的私有 Git 服务环境。

      在使用 Git 推送一个包含编译产物的仓库时,推送失败,报错如下:

      error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413
      send-pack: unexpected disconnect while reading sideband packet
      fatal: the remote end hung up unexpectedly
      

      Git GUI (SourceTree) 中显示:

      POST git-receive-pack (287021804 bytes)
      error: RPC failed; HTTP 413
      

      HTTP 413 代表“请求体过大”,通常是服务端拥有上传大小限制。可能的源有两个:

      • Git 服务本身限制 (Gitblit/Gitea/GitLab)
      • Web 服务器如 Nginx 或 Apache 进行的前置限制

      为了确认问题所在,我们进行下面的演示性测试。

      在 PowerShell 中执行:

      fsutil file createnew bigfile.test 314572800
      

      curl.exe -v -X POST http://域名/ -H "Expect:" --data-binary "@bigfile.test"
      

      HTTP/1.1 413 Request Entity Too Large
      Server: nginx
      

      确认限制来自 Nginx,Git 本身无问题。

      fsutil file createnew smallfile.test 1024
      

      重复 curl POST 测试,结果成功,显示 Gitblit 网页内容,证明小文件能正常处理。

      1. 打开宝塔面板后台 (http://你的IP:8888)
      2. 点击左侧「软件商店」,找到 Nginx
      3. 点击「配置修改」或「配置文件」
      4. 找到 http { 块,加入:
      client_max_body_size 512m;  # 允许最大上传体积为 512MB
      
      1. 保存配置
      2. 回到 Nginx 设置界面,重载配置或重启 Nginx

      http {
          include       mime.types;
          default_type  application/octet-stream;
      
          client_max_body_size 512m;
      
          sendfile        on;
          keepalive_timeout  60;
          ...
      }
      

      配置重载后,再次执行 Git push,推送包大小达 274MB,已成功,问题解决。

      操作步骤 结果
      curl 模拟上传 bigfile.test 报 413,确认 Nginx 限制
      curl 上传 smallfile.test 成功返回 Gitblit 页面
      修改 Nginx 配置 重载后 push 成功

      • 尽量不要推送编译产物 (.dll/.lib/.pdb)
      • 使用 .gitignore或 Git LFS 管理大文件
      • 一旦推送无法成功,优先检查 Nginx/选项配置

      以上就是Git Push失败:HTTP 413 Request Entity Too Large的问题排查和完整解决方法的详细内容,更多关于Git Push失败:HTTP 413 Request Entity Too Large的资料请关注风君子博客其它相关文章!

      您可能感兴趣的文章:

      • Git撤回已Push的代码的方法大全
      • git如何撤销已经push的merge问题
      • git push指令常见选项和用法详解
      • IDEA中配置Git的Push键
      • git中commit和push的区别及说明

      站内搜索