You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

推送大文件时Gitea Git-LFS出现HTTP 413错误的解决求助

解决Git LFS推送大文件报HTTP 413错误的方案

首先非常理解你作为新手遇到这个问题的困惑,我们一步步来排查和解决:

1. 补全Apache SSL虚拟主机的请求体大小限制

你在80端口的虚拟主机里设置了LimitRequestBody 0(表示不限制请求体大小),但实际使用的HTTPS(443端口)的虚拟主机里没有添加这个配置,这很可能是导致413错误的核心原因。

修改你的Apache SSL代理配置,在<VirtualHost *:443>块内添加LimitRequestBody 0

<IfModule mod_ssl.c>
 <VirtualHost *:443>
 <Directory />
 SSLRenegBufferSize 2147483647
 </Directory>
 ServerName git.example.com
 ProxyPreserveHost On
 ProxyRequests off
 # 添加这一行,取消请求体大小限制
 LimitRequestBody 0
 ProxyPass / http://localhost:3000/
 ProxyPassReverse / http://localhost:3000/
 SSLCertificateFile /etc/letsencrypt/live/git.example.com/fullchain.pem
 SSLCertificateKeyFile /etc/letsencrypt/live/git.example.com/privkey.pem
 Include /etc/letsencrypt/options-ssl-apache.conf
 </VirtualHost>
</IfModule>

修改后重启Apache服务生效:

sudo systemctl restart apache2

2. 调整Apache请求超时配置(避免大文件上传超时中断)

大文件上传需要更长的传输时间,Apache的mod_reqtimeout模块可能会因为超时中断请求。你可以在Apache的全局配置(比如/etc/apache2/apache2.conf)或者当前虚拟主机配置里添加以下参数:

RequestReadTimeout header=60 body=3600,MinRate=1024
  • header=60:允许60秒的时间接收请求头
  • body=3600:允许最长3600秒(1小时)接收请求体
  • MinRate=1024:要求上传速率至少为1KB/s,避免连接因闲置被断开

添加后同样重启Apache:

sudo systemctl restart apache2

3. 确认Gitea配置已生效并重启服务

你已经在Gitea的app.ini里调大了LFS和文件上传的限制,但需要确保Gitea服务已经加载了新的配置:

sudo systemctl restart gitea

可以查看Gitea日志确认LFS配置是否正确加载,执行:

sudo tail -f /var/lib/gitea/log/gitea.log | grep LFS

如果看到类似LFS server enabled以及对应最大文件大小的日志,说明配置已生效。

4. 检查系统级别的文件大小限制

Linux系统可能对用户进程有文件大小限制,需要确保git用户没有这方面的限制:

  1. 查看当前git用户的限制:
sudo -u git ulimit -a

找到file size这一项,如果显示的不是unlimited,需要修改限制配置。

  1. 编辑/etc/security/limits.conf文件:
sudo nano /etc/security/limits.conf

添加以下两行:

git soft fsize unlimited
git hard fsize unlimited

保存退出后,重启系统或者切换到git用户(执行sudo -u git bash),再次用ulimit -a确认限制已取消。

5. 检查Git LFS客户端配置(可选)

虽然报错是服务器端的HTTP413,但也可以确认本地客户端没有额外限制:
查看本地仓库的.git/config或者全局的~/.gitconfig,如果有lfs.maxpushsize项,确保它的值足够大(或者直接删除该限制条目)。

完成以上步骤后,再尝试推送大文件,应该可以解决HTTP413的问题。

内容的提问来源于stack exchange,提问作者Tali

火山引擎 最新活动