Re: Проблема с двойным кодированием заголовка при проксировании
Maxim Dounin
mdounin на mdounin.ru
Чт Сен 1 13:48:38 UTC 2016
Hello!
On Thu, Sep 01, 2016 at 01:09:44PM +0300, Alexander Gerasiov wrote:
> On Wed, 31 Aug 2016 20:58:47 +0300
> Maxim Dounin <mdounin at mdounin.ru> wrote:
> > > Использую nginx в качестве forward proxy к apache с mod_svn.
> > >
> > > Известный трюк: для работы методов COPY MV требуется переписывать
> > > заголок Destination, чтобы поменять схему с https на http
>
> > > Это работает, но есть нюанс: если перемещаемый файл содержит
> > > кириллицу в имени, то он оказывается дважды перекодирован:
> > >
>
> > > В результате имя файла при копировании/перемещении бьется.
> > >
> > > Вопрос: что с этим делать? Как сказать nginx, чтобы он не кодировал
> > > заголовок при помощи urlencode? Или может как декодировать строку
> > > перед передачей ее в proxy_set_header?
> >
> > Проблема в том, что "set" при использовании переменных $1 .. $9
> > делает ровно то же, что и rewrite, а именно - экранирует
> > специальные символы, предполагая, что исходной строкой был URI
> > запроса без экранировки. При этом nginx знает, были ли в URI
> > запроса специальные символы, и если их не было - то экранирование
> > не делается.
> >
> > Это, очевидно, баг, и когда нибудь его исправят, но пока этого не
> > случилось (в первую очередь потому, что там очень легко что-нибудь
> > сломать неосторожным движением).
> Этот баг где-то зарепортили? Или мне стоит добавить в trac?
Всё тут:
https://trac.nginx.org/nginx/ticket/348
--
Maxim Dounin
http://nginx.org/
Подробная информация о списке рассылки nginx-ru