Nginx 413 Request Entity Too Large错误

前几天说了,Gitea+Nginx+SSL+MySQL配置Git服务器记录,用Nginx和Gitea搭建了一个git仓库,今天推送的时候,发现一直在报错,于是花了点时间解决。

本来我是用Fork客户端进行操作的,添加、提交之后,然后推送到服务器上,一直报这个错误:

fatal: The remote end hung up unexpectedly

就这么一个报错,错误信息不明不白的,也不知道到底哪里出错了,我以为是Nginx那边超时了,因为默认没有修改Nginx的timeout参数,并且Nginx是将请求传给Gitea的,就加了几个参数:

proxy_connect_timeout 300;
proxy_read_timeout      300;
proxy_send_timeout      1000;

因为我们的代码仓库文件有点多,我特意增大了这几个值,以为这样就不会报错了。
于是换用命令行进行提交,提交的时候发现,多了一个报错:

xxx:xxx zoco$ git push -u origin master
Counting objects: 6027, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5817/5817), done.
error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413 Request Entity Too Large
fatal: The remote end hung up unexpectedly
Writing objects: 100% (6027/6027), 187.00 MiB | 8.68 MiB/s, done.
Total 6027 (delta 1701), reused 0 (delta 0)
fatal: The remote end hung up unexpectedly
Everything up-to-date

可以看出,是HTTP的413错误,这下知道了是上传的文件超过了Nginx的最大文件限制,既然知道了具体报错原因,改下参数就可以了。
Nginx配置文件加一行或者更改一下对应的值,如果是用包管理器安装的Nginx,那配置文件应该是/etc/nginx/nginx.conf,对应修改如下:

client_max_body_size    400m;

后面的400M参照实际的值修改就行,改好之后重启Nginx就行了。
再次推送,发现能正常推送成功了。