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