Gitea 小记:RPC failed; HTTP 413 错误原因及解决方法

Gitea 是一个由开源社区驱动的轻量级代码托管解决方案。其功能强大,可谓 Github 平替。采用 Go 编写,便于自托管(自建),部署简单,采用 MIT 许可证,与 Gitlab 类似但轻量很多。

表现

使用 git push 推送时报错 error: RPC failed; HTTP 413 curl 22 The requested URL returned error: 413,同时相应请求在 Gitea 日志中报 401 Unauthorized 错误。

原因

简单来说,这个问题通常只会在使用反向代理的场景下触发。以使用 Nginx 为 Gitea 提供反向代理为例,导致错误的原因便是推送的文件超过了 Nginx 默认的大小限制(1M)。

解决

解决方法也很简单,以 Nginx 为例,在相应的反向代理配置中增大大小限制即可。

server {
    listen 80;
    server_name git.xxxx.xx;

    client_max_body_size 100M; # 调整大小限制至 100M

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}

番外

严厉吐槽,尽管在 2019 年就有相关 Issue 出现,但 Gitea 官方文档(https://docs.gitea.io/zh-cn/reverse-proxies/)到目前(2022-06-26)为止,反向代理部分给出的配置依然未做相应修改。

参考资料