商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > GitPush失败:HTTP413RequestEntityTooLarge的问题排查和完整解决方法

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

  发布于2026-07-22 阅读(0)

扫一扫,手机访问

在使用 Git 推送包含较大编译产物的项目时,你是否遇到过 HTTP 413 Request Entity Too Large 错误?这通常并不是 Git 本身的问题,而是 Web 服务器(比如 Nginx)在门前拦了一道——拒绝接收大体积请求。下面通过一个完整案例,演示如何用 curl 工具验证服务器限制,再通过宝塔面板修改 Nginx 配置,最终让大文件 Git 推送顺利通过。这套方法适用于 Gitblit、Gitea 或任何基于 Nginx 部署的私有 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)。为了把问题锁定,我们做一组演示测试。

三、演示测试:curl 模拟上传

步骤1:创建大文件(300MB)

在 PowerShell 中执行:

fsutil file createnew bigfile.test 314572800

步骤2:使用 curl.exe 模拟 POST 上传

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

结果:

HTTP/1.1 413 Request Entity Too Large
Server: nginx

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

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

步骤3:创建小文件(1KB)做对比

fsutil file createnew smallfile.test 1024

重复 curl POST 测试,结果成功,返回了 Gitblit 的网页内容——说明小文件能正常通过。

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

四、解决方案:修改 Nginx 配置(宝塔面板)

操作步骤

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

实际配置示意图

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

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

五、重试 Git 推送

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

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

六、总结与建议

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

建议

  • 尽量不要推送编译产物(.dll/.lib/.pdb)到 Git 仓库,这些文件体积大且频繁变更。
  • 使用 .gitignore 或 Git LFS 来管理大文件,才是长久之计。
  • 一旦推送无法成功,优先检查 Nginx 的 client_max_body_size 配置,这往往是第一道闸门。
本文转载于:https://www.jb51.net/program/356209a87.htm 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注