Gittornado с Nginx не может толкать и тянуть

Я делаю простой сайт для размещения git-репозиториев, очень похоже на github. Я использую Gittornado для обработки HTTP-запросов git Smart, и он отлично работает локально; Я могу клонировать, толкать, тянуть и т. Д. Но когда я помещаю его за Nginx, команды git перестают работать, не выдает никаких ошибок, кроме: "fatal: Remote end неожиданно зависает"

Я знаю, что это Nginx, который вызывает проблему, потому что если я открою порт, на котором запущен торнадо, и попробую мои команды git через него (то есть "git pull \ http://mysite.com:8000/myrepository master" вместо "git pull \ http://mysite.com/myrepository master "[добавлена ​​обратная косая черта, потому что ошибка сервера говорит, что у меня слишком много ссылок]) все работает как положено. Журналы доступа и ошибок Nginx, кажется, не говорят ничего интересного, поэтому я вполне уверен, что это как-то связано с тем, как Nginx сжимает или разделяет запросы / ответы, заставляя git думать, что произошло неожиданное зависание, но я не уверен, что делать, чтобы это исправить, так как это мой первый раз с Nginx.

Мой файл конфигурации Nginx по сути является клоном, который можно найти здесь; Я пытался закомментировать различные вероятные варианты, чтобы увидеть, были ли они причиной проблемы, но ни один из них не устранил ее, поэтому я предполагаю, что есть какое-то поведение по умолчанию, которое мне нужно подавить, я просто не уверен, какой именно.

Есть мысли о том, как это исправить? Поскольку он работает не через Nginx, я рассматриваю только перенаправление запросов git на сам порт торнадо, но это похоже на взлом, а не чистое решение...

1 ответ

Обычно проблемы связаны с использованием git для кодировки передачи chunked. Это то же самое с gittornado и бэкэндом CGI, поставляемым с git.

Посмотрите на этот ответ сервера, предлагающий установку proxy_buffering off; в блоке местоположения.

Другие вопросы по тегам