GitLab 推送报错 HTTP 413 解决方案 —— 调整 Nginx 最大请求体积

发表于 2025-09-09 15:14:15 分类于 默认分类 阅读量 117

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 博客,这样完整覆盖大文件推送解决方案。

你想让我整理吗?

正物博客
一路向前,山海自平