我得到一个错误时,试图推动我的django代码到git大约100 MB。
error: RPC failed; result=22, HTTP code = 413 fatal: The remote end hung up unexpectedly
我尝试了http.postbuffer
,也改变了nginx和apache2的设置,添加了client_max_body_size 500m;
。但我既没有使用任何这些服务器。我只是想上传到git。谁能给我解答?
什么时候得到这个错误?
当您尝试通过HTTP推送大型存储库时,通常会发生此错误。
http.postBuffer
设置在你的git客户端控制缓冲区的最大大小在POSTing
一些数据时使用的字节。它的默认大小是1 MiB
,如果你试图推文件大于这个,你会得到这个错误。
一些可能的解决方案:
1。为http.postbuffer
设置更高的值
你可以在git客户端为http.postBuffer
设置一个更高的值。
# increase the Git buffer size to the largest individual file size of your repo
git config --global http.postBuffer <size_in_MiB>
2。Nginx服务器:
(a) client_max_body_size
setting
也可能由于默认的反向代理配置设置而发生。一个这样的设置是client_max_body_size
设置,它设置请求体的最大允许大小。
在nginx服务器的情况下,1 Mib
的默认大小被应用,所以推入一个大于这个大小的存储库会导致这个错误。
从nginx文档中的client_max_body_size
设置:
设置客户端请求体的最大允许大小,在
“Content-Length”
请求头字段。如果请求中的大小超过配置值,413
(请求实体太大)错误返回给客户端。请注意浏览器不能正确显示此错误。设置size为0
禁用检查客户端请求正文大小。
要更改client_max_body_size
设置,请加载nginx.conf
并根据http
块中的需要添加client_max_body_size
设置。您也可以将client_max_body_size
设置为0
,这将允许用户推送任何大小的存储库。
# nginx.conf
client_max_body_size <required_size_in_MiB>; # add this setting in the http block to set a custom size
client_max_body_size 0; # to push repositories of any size
添加此设置后,您需要使用sudo service nginx reload
重新加载nginx,然后再尝试通过http推送您的提交。
(b)连接超时设置
反向代理也可能有关闭连接的连接超时(例如apache中的TimeOut
或ProxyTimeout
, ngnix中的proxy_read_timeout
)。尝试通过直接推送到IP:port
来绕过代理。如果这种情况发生,很可能是代理服务器导致了提前断开连接,需要进行调优。
3。Apache服务器:
您可以通过设置LimitRequestBody
设置来增加HTTP请求正文的允许限制。
您需要根据httpd.conf
文件中的要求将LimitRequestBody
设置添加到自定义值。将此值设置为0
将允许您推送任何大小的文件。
# httpd.conf
LimitRequestBody <custom_size_in_bytes> # set a custom limit
LimitRequestBody 0 # no limit on the size
4。
您可以使用SSH
而不是HTTP来推送存储库