Назад | Перейти на главную страницу

Gittornado с Nginx не работает

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

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

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

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

Обычно проблемы связаны с фрагментированной кодировкой передачи, которую использует git. То же самое с gittornado и серверной частью CGI, поставляемой с git.

Видеть этот ответ serverfault предлагая настройку proxy_buffering off; в блоке локации.