我正在做一个简单的网站来托pipegit仓库,很像github。 我正在使用Gittornado来处理git智能HTTP请求,它完美地在本地工作; 我可以克隆,推,拉等…但是当我把它放在Nginx的后面,git命令停止工作,除了:“致命的:远程端意外挂断”
我知道这是Nginx导致的麻烦,因为如果我打开龙卷风运行的端口,并尝试通过我的git命令(即“git pull \ http://mysite.com:8000/myrepository master”而不是“git拉\ http://mysite.com/myrepository主“[反斜杠添加,因为服务器错误说,我有太多的链接])一切都按预期工作。 Nginx的访问和错误日志似乎没有任何有趣的说法,所以我相当确定这与Nginx压缩或分块请求/响应的方式有关,从而导致git认为出现了意外的挂断,但我不知道该怎么做才能解决这个问题,因为这是我第一次使用Nginx。
我的Nginxconfiguration文件基本上是在这里find的克隆。 我已经尝试过评论各种可能出现的选项,看看它们是否导致了这个问题,但是没有一个可以解决这个问题,所以我认为有一些我需要压制的默认行为,我不确定是哪一个。
任何想法如何解决这个问题? 由于它不通过Nginx的工作,我正在考虑只是将git请求redirect到龙卷风端口本身,但这感觉像一个黑客,而不是一个干净的解决scheme…
通常问题在于git使用的分块传输编码。 gittornado和git附带的CGI后端也是一样的。
看到这个serverfault答案暗示设置proxy_buffering off; 在位置块。