ПРОЕКТЫ 


  АРХИВ 


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[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


 




Copyright © Lexa Software, 1996-2009.