ПРОЕКТЫ 


  АРХИВ 


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: set на уровне http



On 18.08.2013 23:49, Михаил Монашёв wrote:

Опишу  задачу. Мне надо было как-то писать в аксес-лог кэш-зону, чтобы
потом  по  логам  считать  эффективность  каждой  кэш-зоны. Встроенную
переменную я не знаю, поэтому решил создать переменную через set. Там,
где  запросы  проксируются,  я  присваивал  через  set соответствующей
переменной   значение,   равное  имени  кэшзоны.  Но  не  все  запросы
проксируются  и  в  логе  вместо  значения  переменной  пишется пустая
строка,  что  неудобно  для  парсинга лога. Брать переменную в кавычки
тоже неудобно.

для этих целей - проще всего было бы создать
встроенную переменную с дефолтовым значением "-".

или, если значение какой-то (любой) переменной
не определено - писать в лог ее значение в виде "".

Для  таких  запросов  я  хотел  присвоить  этой  переменной  дефолтное
значение  "-". Писать в каждом блоке server{} set или include посчитал
лишним и вставил в http{} вот такие строчки:

         # set нельзя делать на уровне http, поэтому делаем присваивание через 
map
         map 1  $cache_zone_for_logging {
                 default "-";
         }

Т.е. я хотел использовать set для инициализации переменной, которая
потом может меняться.

На  мой  примитивный  взгляд  кажется нелогичным иметь иерархию блоков
конфига, иметь наследование с вышестоящих уровней иерархии и разрешать
set-у работать на уровне http{}.

если "присваивание через map" работает - то это нормальный workaround.
то есть, сейчас это ситуация "нельзя, но если очень хочется, то можно".

Вводить  директиву set на уровне http с совершенно другой семантикой
- это не очень хорошая идея.

Зачем другая семантика. Оставить всё как есть, только дать возможность
писать  в  конфиге set на уровне http{}. Это удобно, логично, упрощает
конфиг, избавляет от копипасты.

если будут включены set на уровне http - их активно начнут использовать
"...as macros for making parts of configuration work as templates".

--
Best regards,
 Gena

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


 




Copyright © Lexa Software, 1996-2009.