Re: Как разрешить только определенный content-type в ответе от upstream?

Maxim Dounin mdounin at mdounin.ru
Thu Jun 5 12:11:11 UTC 2014


Hello!

On Thu, Jun 05, 2014 at 04:27:02AM -0400, endo wrote:

> Доброго дня всем.
> 
> Возник вопрос: как реализовать логику фильтрации content-type в ответе от
> upstream , и в зависимости от этого - отдавать определенный код (404 если не
> разрешенный content-type от апстрима).
> 
> 
> Пробовал через переменную $upstream_http_content_type
> 
> map $upstream_http_content_type $ctype_allowed {
>         default    0;
>         "~image" 1;
> }
> 
> ...
> add_header X-ctype $ctype_allowed;
> 
> в таком варианте заголовок проставляется вроде бы правильный, но как по
> переменной $ctype_allowed или в принципе по содержимому заголовков от
> апстрима разрешить или запретить ответ клиенту?

Для произвольного типа - никак, надо писать собственный фильтр, 
который сделает это (ну или искать сторонний).

Конкретно для картинок - имеет смысл посмотреть на "image_filter 
test".  Там, правда, не проверка типа, а анализ сигнатур 
содержимого (и безусловное переопределение типа по результатам 
анализа).  Подробности тут:

http://nginx.org/ru/docs/http/ngx_http_image_filter_module.html

-- 
Maxim Dounin
http://nginx.org/



Подробная информация о списке рассылки nginx-ru