Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re[2]: if нужен.
Здравствуйте, Maxim.
>> >> В конфиге есть строчка.
>> >> add_header Content-Disposition 'attachment; filename="bla-bla-bla"';
>> >>
>> >> Для одних хостов её надо выдавать, а для других не нужно. Хосты
>> >> отличаются только этой строчкой в конфиге. Дабы не разводить копипасту
>> >> попробовал написать add_header внутри if(). Оказалось, что add_header
>> >> в if-е не поддерживается. :-( Других способов, кроме if-а я не смог
>> >> придумать.
>>
>> > Поддерживается. Другой вопрос, что результат может быть не совсем
>> > такой, как хотелось бы, см. http://wiki.nginx.org/IfIsEvil.
>>
>> > Но правильно, IMHO, как-то так:
>>
>> > map $host $disposition {
>> > default "";
>> > example.org 'attachment; filename="bla-bla-bla"';
>> > }
>>
>> А как сюда ---------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> подставить переменную?
>>
>> Написал вот так:
>>
>> map $http_host $disposition {
>> hostnames;
>> default "";
>>
>> d.* 'attachment; filename="$sitename$filename"';
>> }
>>
>> В результате в заголовке выдалась строка
>> Content-Disposition: attachment; filename="$sitename$filename"
>>
>> а значения переменных не подставились. Через set надо это делать?
> Сейчас в правой части map поддерживается только одна переменная,
> заменяющая весь результат. Можно сделать как-то так:
> map $host $disposition {
> default "";
> example.org $foo;
> }
> set $foo 'attachment; filename="$sitename$filename"';
> add_header Content-Disposition $disposition;
Заработало, спасибо.
А почему set нельзя на уровне http размещать? Странно читается: map на
уровне http, а set, работающий с ними, пихается в несколько server и location.
Он по необходимости не вызывается, как map, а отрабатывает всегда?
--
С уважением,
Михаил mailto:postmaster@xxxxxxxxxxxxx
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|