ПРОЕКТЫ 


  АРХИВ 


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



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 
ответы со сторонних серверов, и поэтому какая-либо фильтрация по 
кодам ответов - не производится.

Правильное решение - обарабатывать 403-ю ошибку в отдельном 
location'е.  Если говорить конкретно о вышеприведённой 
конфигурации, то очевидно так:

    location /r/ {
        ...
        image_filter ...
    }

    location = /r/want_403 {
        return 403;
    }

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

Maxim Dounin

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


 




Copyright © Lexa Software, 1996-2009.