错误:RPC失败;结果= 22,HTTP代码= 413致命:远程端意外挂断

时间:2015-09-30 07:05:30

标签: django git apache nginx

我在尝试将我的django代码推送到大约100 MB的git时出错。

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。任何人都可以给我解决方案吗?

1 个答案:

答案 0 :(得分:1)

什么时候出现此错误?

当您尝试通过HTTP推送大型存储库时,通常会发生此错误。

git客户端上的

http.postBuffer设置控制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设置

由于默认的反向代理配置设置,也可能发生这种情况。一个这样的设置是client_max_body_size设置,它设置请求主体的最大允许大小。

如果是nginx服务器,则会应用默认大小1 Mib,因此推送大于此值的存储库会导致此错误。

来自nginx文档中的client_max_body_size setting

  

设置客户端请求正文的最大允许大小,在中指定   “Content-Length”请求标头字段。 如果请求中的大小   超出配置的值,413(请求实体太大)错误   返回给客户。请注意浏览器不能   正确显示此错误。将大小设置为0会禁用检查   客户要求的身体尺寸。

要更改client_max_body_size设置,请根据您的需要在nginx.conf块中加载client_max_body_size并添加http设置。您还可以将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中的TimeOutProxyTimeout,ngnix中的proxy_read_timeout。尝试直接推送到IP:port绕过代理。如果这样做,代理服务器极有可能导致早期断开连接,需要进行调整。

第3。 Apache服务器:

您可以设置LimitRequestBody设置以增加HTTP请求正文的允许限制。

您需要根据LimitRequestBody文件中的要求将httpd.conf设置添加到自定义值。将此值设置为0将允许您推送任何大小的文件。

# httpd.conf
LimitRequestBody <custom_size_in_bytes> # set a custom limit
LimitRequestBody 0 # no limit on the size

<强> 4。改用SSH:

您可以使用SSH代替HTTP来推送存储库。