ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: реакция image_filter на return



On Thu, 12 Jan 2012 21:00:03 +0400
Maxim Dounin <mdounin@xxxxxxxxxx> wrote:

> Hello!
> 
> On Thu, Jan 12, 2012 at 12:15:03AM +0400, GD wrote:
> 
> > Доброго времени суток,
> > 
> > Наткнулся на багофичу:
> > 
> > Пример чуть синтетический, но рабочий:
> > 
> > location /r/ {
> >     if ( $uri = "/r/want_403" ) {
> >         return 403;
> >     }
> > 
> >     rewrite ^/r/(.+)$ /$1 break;
> > 
> >     proxy_pass http://host.tld;
> > 
> >     image_filter resize 100 100;
> > }
> > 
> > proxy_pass ожидаемо реагирует на return и никуда не ходит
> > но image_filter не взирая на 403 (Forbidden) пытается отработать,
> > в результате отдавая 415 (Unsupported Media Type)
> > 
> > Смотрел на ngx_http_addition_module, там реакция на return
> > полностью соответсвует док-ции. Т.е. если срабатывает return 403,
> > то add_after_body уже не отрабатывает.
> > 
> > Получилось полечить image_filter патчем (см. аттач).
> > Хочется услышать мненеие разработчиков.
> 
> Image filter расчитан на то, что он обрабатывает в т.ч. untrusted 
> ответы со сторонних серверов, и поэтому какая-либо фильтрация по 
> кодам ответов - не производится.

не очень логично на мой взгляд, но понятно
и, да, мой патч уже не кажется мне решением

не понятно все же почему return не завершает любую дальнейшую обработку
код ответа здесь не играет роли

> 
> Правильное решение - обарабатывать 403-ю ошибку в отдельном 
> location'е.  Если говорить конкретно о вышеприведённой 
> конфигурации, то очевидно так:
> 
>     location /r/ {
>         ...
>         image_filter ...
>     }
> 
>     location = /r/want_403 {
>         return 403;
>     }

заменил return на rewrite ... last
на этому видимо и остановлюсь

> 
> В общем случае - через error_page 403.

про error_page - не понял

спасибо

> 
> Maxim Dounin
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@xxxxxxxxx
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

-- 
GD <gd@xxxxxxxxxxx>

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.