发布于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)。为了把问题锁定,我们做一组演示测试。
在 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 的网页内容——说明小文件能正常通过。

http { 块,加入一行:client_max_body_size 512m; # 允许最大上传体积为 512MB

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 成功 |
.gitignore 或 Git LFS 来管理大文件,才是长久之计。client_max_body_size 配置,这往往是第一道闸门。下一篇:git如何拉取项目分支代码
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8