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
|