GitLab 推送报错 HTTP 413 解决方案 —— 调整 Nginx 最大请求体积
在使用 GitLab 时,有时会遇到推送大文件或者大提交时出现如下报错:
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 请求,因为请求体太大(HTTP 413)。
本文分享通过 调整 Nginx 与 GitLab 配置 来解决该问题的方法。
🔍 问题原因
-
GitLab 后端使用 Nginx 作为反向代理。
-
默认情况下,Nginx 对客户端请求体大小有限制:
- 当你 push 的数据大于限制时,Nginx 会返回 HTTP 413 Request Entity Too Large。
-
GitLab Omnibus 安装包也会有默认限制。
💡 解决方案
1. 修改 Nginx 配置
打开 GitLab Nginx 配置文件(Omnibus 安装一般在 /etc/gitlab/gitlab.rb
):
# 设置 Nginx 最大请求体积
nginx['client_max_body_size'] = '200m' # 根据需要调整大小,例如 200MB
然后重新配置 GitLab:
sudo gitlab-ctl reconfigure
注意:如果你是自定义 Nginx,可以直接在 Nginx 配置文件
server {}
块内添加:client_max_body_size 200m;
并重载 Nginx:
sudo systemctl reload nginx
2. 测试推送
修改完成后,可以尝试重新 push:
git push origin main
如果配置正确,之前因为文件过大而失败的 push 应该可以正常完成。
3. 其他建议
- 如果经常需要 push 大文件,推荐配合 Git LFS 使用。
- 避免一次提交过多大文件,尽量拆分提交。
✅ 总结
- HTTP 413 错误是因为 Git 推送的数据超过了 Nginx 或 GitLab 配置的请求体限制。
- 调整
client_max_body_size
并重载 Nginx / GitLab 配置可以解决问题。 - 结合 Git LFS 和分批提交可以避免大文件带来的 push 问题。
如果你需要,我可以帮你把 方法二 Git LFS 也整理成 Markdown 博客,这样完整覆盖大文件推送解决方案。
你想让我整理吗?