Re: Fwd: Обработка заголовков протокола Mercurial.

Maxim Dounin mdounin на mdounin.ru
Ср Янв 25 12:48:51 UTC 2012


Hello!

On Wed, Jan 25, 2012 at 08:12:17AM +0400, Eugene Mamin wrote:

>      Здравствуйте, nginx стоит прокси-сервером для авторизации и
> перенаправления запросов к локально запущенному сервису mercurial (hg).
> Столкнулся с проблемой, описанной здесь:
> http://mercurial.selenic.com/bts/issue3194. Если коротко, то nginx "портит"
> HTTP заголовки, после чего сервер mercurial обработать запрос корректно не
> может.

Упомянутый тикет никакой конкретики не содержит, так что говорить 
о том, что на самом деле происходит - неуместно.

> Ставил значения директив: ignore_invalid_headers
> off; underscores_in_headers on; merge_slashes off; но результата не
> получил. Особо отмечаю, что проблема появилась не так давно, т.е. в
> работоспособности самой конфигурации сомневаться не приходится.
>     На сервере nginx-1.0.11, ArchLinux.
>     Хотел было залогировать все заголовки, как их видит nginx, но не нашел
> такой возможности. Могу лишь утверждать, что без nginx сам mercurial
> работает.
>     Заголовки могут быть примерно такими (вывод лога hg serve):
> 
> 178.76.212.86 - - [24/Jan/2012 22:20:38] "GET /concorde?cmd=batch HTTP/1.1"
> 200 -
> x-hgarg-1:cmds=heads+%3Bknown+nodes%3D0b75949a12b936df4c501b0b890211f29662e048
> 178.76.212.86 - - [24/Jan/2012 22:20:39] "GET /concorde?cmd=listkeys
> HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks.
> 
>     Есть ли возможность обеспечить передачу заголовков на апстрим без
> каких-либо модификаций и изменений со стороны nginx ?

Должно работать (и у меня в тестах работает, проверял 1.9.1 и 
2.0.2) без каких-либо ухищрений в конфигах, достаточно просто 
написать

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

Если не работает - нужен debug log, конфиг на котором 
воспроизводится, вывод nginx -V.  А равно точная версия 
Mercurial'а и его вывод при возникновении проблемы.

Как делать debug log описано тут:

http://wiki.nginx.org/Debugging
http://nginx.org/en/docs/debugging_log.html

Maxim Dounin



Подробная информация о списке рассылки nginx-ru