git 遇到fatal: protocol error: bad line length character: <htm 踩坑
前期暴力解决
报错如下:
fatal: protocol error: bad line length character: <htm
fatal: the remote end hung up unexpectedly
fatal: the remote end hung up unexpectedly
error: failed to push some refs to
网络上很多大佬都说要重新设置用户名和邮箱,以及删除ssh密钥等,但是我都试了完全不行,后面看了一下master分支能提交,正式部署分支无法提交(这个分支在gitea上有绑定一个webhook钩子,实现线上自动部署),后来经过测试,发现确实是webhook钩子执行失败导致的问题。
备用解决方案
将仓库从http/https切换到ssh能解决这个问题,但这并不是最完美的解决方案,完美方案请看下面的后续
后续
上面的方案解决后我们的git系统好像陆续还是有遇到类似问题,今天正好有时间我就去github上查了一下,有大佬说这个问题已经在gitea v1.16.7得到了解决,我更新了一下版本,然后把之前因为这个报错切换到ssh的库切换回https,发现不再报错了,先观察几天看看。
第二种情况
昨天更新了1.17后能用一段时间后,今天早上我又发现个别仓库无法提交提示这个报错,在github上看了一下,有大佬说可能是nginx配置问题,于是我看了一下我的nginx日志(由于我是用的宝塔反向代理,所以就直接打开站点error.log文件查看),一看日志果然发现问题,报错403,信息如下。
25799#0: *59047 attempt to set status 403 via ngx.exit after sending out the response status 200
网上搜了很久都没找到具体的解决方案,有人说是.profile或.bashrc问题但是我看了我们这边的服务器也没有这个问题。
后面想了很久,突然想到我们服务器好像安装了一个免费的nginx防火墙,(宝塔第三方插件那种)于是我就上去看了一下,果然问题出在这里,post方法触发了防火墙机制,我是说之前提交后不仅只是无法提交,还附加了好几分钟无法访问站点的情况,这就好理解了,提交触发防火墙然后ip被禁止300秒,这谁受得了。
于是反手将防火墙的post限制关掉,果然能正常提交了,但是也不知道有没有什么安全风险。



更多推荐
所有评论(0)